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

Reply via email to