The best news was Andrew's: World Domination is proceeding
according to plan!
On Saturday 24 July 2004 20:58, Greg KH wrote:
>
> David, can you think of anything that might have come up, besides the
> rewrite of the power management handling code that you said you were
> going to do? :)
Your evil streak is showing again, Greg ... I thought such rewrites
weren't going to happen until after devfs gets removed? :)
PM issues did come up a lot, true. The root cause being that
the PM framework still needs a lot of work. USB-related issues
in that area:
- The mismatch between ACPI and PCI causes complaints
about USB suspend not working. Basically, "system suspend"
passes an ACPI state (e.g. D2 == 2) code down to PCI devices
rather than its PCI analogue (D3hot == 3), and so of course
the suspend gets rejected when the HC doesn't support the
PCI state with that number (e.g. PCI D2 is optional, and at
least Intel hardware doesn't do it). Not a USB bug; the "new"
PM code in 2.6 is doing the wrong thing, it affects every PCI
driver that actually uses that parameter.
- There's also the issue of USB keeping x86 CPUs out of C3
(or higher) states when a mouse is connected. Basically
the x86 CPU cache snooping means that periodic DMAs
(like polling a USB mouse) prevent the CPU from using
its lowest power mode ... and on Centrino (for example)
that's the difference between 5 watts and 3 watts of CPU
power on an idle system. Stopping that power drain
means the HCDs need to get involved. The easiest way
is turning on USB_SUSPEND mode, but that might not be
user-transparent ... MS-Windows may have hacked HCDs
to not scan USB schedule seconds every millisecond
except when the USB devices are in active use.
- A few folk were very interested in CONFIG_USB_SUSPEND,
but they're the forward-looking ones. Apple for example
seems to like to suspend most USB devices most of the
time; we'll be able to start doing that after a while, and
save power that way. Likewise with remote wakeup.
That's all new-featureville for Linux.
- Some upcoming ACPI patches may finally allow remote
wakeup (as from USB keyboards/mice) to work on Linux,
in conjunction with CONFIG_USB_SUSPEND, but it'll need
manual sysfs tweaks until the PCI code gets taught to
make ACPI listen to the the PCI PME# logic it enables. Soon
to appear in the MM patches.
I think it was Benjamin who was talking about changing the
PM-to-PCI interfaces in ways that'd help address that first
problem, by (a) changing the generic driver framework
suspend method to take an ACPI state like PM_SUSPEND_DISK
(= 2) and (b) changing the PCI driver calls the same way,
so that the PCI drivers would map the ACPI state into some
value that PCI-PM-aware hardware (vs the legacy stuff...)
would pass to pci_set_power_state().
I could see how that might start to work ... except that those
PM_SUSPEND_* states still seem excessively glued to ACPI
S0/S1/S3/S4/... models, so I don't like the notion of making
that approach be "the" Linux-wide one; Linux needs to work
on systems that aren't x86 based laptops.
- As opposed to PCs (laptops etc), systems with really
aggressive power management aren't going to use
"system-wide" suspend policies anywhere near as much
So "S3" doesn't make much sense as a parameter to
pass down to any individual driver.
Instead, more selective device policies are needed ... power
down this group of devices as a group, or (especially!) keep all
devices in low-power states unless they're in active
use. The current model is: keep all in high-power
states except during system-wide suspend.
- The PM framework doesn't even understand the notion of clock
hierarchies needed to turn off sections of chips! This affects
USB on some of the Macintosh ASICs, as well as on many
embedded CPUs. The existing calls may suffice to kick in
low level clock gating (controller clock stops), but they aren't
enough to kick in deeper power saving modes (stop the
48MHz PLL when nobody's using it).
The drivers/base/power code does seem to need some
non-obvious changes, but for now I'd be content just
to have it stop deadlocking when suspend/resume code
has to destroy a device.
- Dave
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel