Re: [RFC] Use the new PM framework for USB PCI host controllers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 27 Apr 2009, David Brownell wrote:

> On Thursday 23 April 2009, Alan Stern wrote:
> > On Thu, 23 Apr 2009, Rafael J. Wysocki wrote:
> > 
> > > On Thursday 23 April 2009, Alan Stern wrote:
> > > > Rafael:
> > > 
> > > Hi,
> > > 
> > > > This patch converts the USB PCI-based host controller drivers over to 
> > > > the new PM framework.  Does it all look right to you?
> > > 
> > > Yes, it does, from a quick look, but I've always wondered why you insist on
> > > putting the devices into D3.
> > 
> > You mean, why D3 instead of D1 or D2?  Because we're trying to save 
> > power, so we go to the lowest-power state.
> 
> Actually ... I think the *original* reason is that nobody
> anywhere in-kernel tried to use D1 or D2 (back in 2.4.x).
> Then later on the reason was more coupled to the lack of
> a usable hook to choose the right state.
> 
> Someone hacked together a severely broken choose_state()
> function, which -- because it was so broken -- wasn't
> remotely usable by USB.
> 
> 
> > >  Is it a result of the experimental observation
> > > that none of the other states work in general?
> > 
> > It's true that lots of devices have support for D3hot but not D1 or D2.  
> > I've never seen it go the other way around (D1 or D2, but not D3).
> 
> More like:  D3 is guaranteed to be possible, D1/D2 are not.
> 
> (Plus, as I recall, you can't know in advance whether D3 will
> be mapping to D3hot or D3cold as you're suspending.  So you've
> got to accomodate D3cold in all cases.  And ... testability
> for other states has always been weak and painful.)
> 
>  
> > And if the device can go into D3 then why mess around with D1 or D2?  
> > Perhaps they might be useful as runtime-suspend states, but there's no 
> > real point in using them for system suspend.
> 
> Erm, there are *very* good reasons to prefer D1/D2 to D3.
> 
>  - First, remote wakeup is more likely to work there
>    than in D3.
> 
>  - Second, wakeup latency is a lot lower ... preferable
>    for STR, and even standby.  Especially for the sort of
>    stuff that OLPC was trying to do, with a system suspend
>    state between keystrokes.  (It's not clear to me that's
>    realistic on PC hardware.  Embedded ARMs -- piece'o'cake,
>    OMAP systems do it routinely with Linux.  High-wattage
>    x86, PCI, southbridges, LPC, and all that?  Not so much.)
> 
>  - Third, the D3->D0 transition can imply a reset, with loss
>    of USB state (disconnection etc); annoying user experience.
>    Not so from D2 or D1; things keep working, unless there
>    was a *real* disconnect, no loss of state implied.
> 
>  - Fourth, ACPI may prefer that.  (Although being able to
>    care what ACPI thinks is a relatively new capability;
>    and, even newer, having ACPI work right when it's used!)
> 
> 
> > > In principle ACPI might want to put them into D1 or D2 before suspend,
> > > especially is wake-up is enabled.
> > 
> > I suppose it might.  But how would I know, or what could I do about it?  
> > Is there a core PCI function that should be called to select the 
> > appropriate low-power state?
> 
> There was some work in that area at one point.  The first
> iteration was unusable crap.  I've lost track since then,
> but I think Rafael may have made it become possible by now.
> 
> 
> > Bear in mind that this code also has to support PCI devices on non-ACPI 
> > systems, as well as PCI devices on add-on cards (rather than built into 
> > the motherboard) which ACPI is unaware of.
> 
> Right, which is why there are PCI hooks to platform code,
> which will go to ACPI on some systems or otherwise just use
> raw PCI data.  (Like the PCI PM capabilities saying that a
> device can support D2, and intermediate bridges saying they
> support all the necessary hooks also.)

Okay, I stand corrected.  The patch has already been submitted, so you 
can see if it looks okay.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux