Re: [RFC][PATCH 6/9] PCI ACPI: Introduce acpi_pm_device_sleep_wake function

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

 



On Thursday, 26 of June 2008, Alan Stern wrote:
> On Thu, 26 Jun 2008, Rafael J. Wysocki wrote:
> 
> > > Question: Does the PME Status ever get cleared at any other times?
> > 
> > Currently, PME# status is only cleared when executing pci_pme_active() (for
> > example via pci_enable_wake()).
> > 
> > > For instance, suppose a PCI device does use PME# to wake up the system.  
> > > Does its status get cleared?
> > 
> > If the driver of the device executes pci_enable_wake(dev, PCI_D0, false) during
> > resume, then the PME# status will be cleared.
> 
> Hmm.  So if the resume routine doesn't get called for some reason then
> most likely the status won't get cleared.

That's correct.

> > Do you think the core should clear PME# status automatically in that case?
> 
> Yes.

Okay, but that will require us to add the clearing of PME# to the PCI
resume/restore callbacks.  Perfectly doable, but I'd prefer to do that on top
of the $subject patch.

> > > Or suppose a PCI device is runtime-suspended and it generates a wakeup
> > > request?  This will turn on PME# at a time when the system isn't asleep
> > > -- what happens then?  Does it get lost somewhere in the bowels of
> > > ACPI?
> > 
> > Currently, yes, AFAICS.
> 
> Back around last November some initial patches were posted by Shaohua
> Li, as part of Bugzilla #6892.

OK, I will.

> You'd probably be interested to read through the entire bug report.  Maybe we
> should start working on it again.

I have nothing against that, but quite frankly I wouldn't like it to become a
road block for the present patch series.  Thus, I'd like to add new patches on
top of it rather than to modify it to achieve new goals.

> > > Does the PCI core need new code to handle such things? 
> > 
> > Well, I thought of adding such things like the clearing of PME# status to the
> > PCI bus type suspend/resume callbacks.
> > 
> > Apart from this, I think that to implement PCI runtime PM we'll need to add
> > some new code.  First of all, we need to handle the case when some devices are
> > in low power states before suspend/hibernation.  Second, we need to handle PME#
> > generated by devices being in low power states (or even in D0) at run time and
> > that will certainly require new code.
> 
> Yes it will.  We don't have any runtime PM infrastructure for PCI yet.  
> 
> Although to tell the truth, I'm not sure how important it is.  How much
> power can we save by doing runtime suspends of PCI devices?  With USB
> controllers, for example, much or most of the savings comes from
> disabling the USB portions of the device, which we _are_ doing.  It's
> not clear how much more would be gained by shutting down the PCI
> portions as well.

That can only be determined by experimentation, IMO, so in fact we'll need a
prototype implementation to find that out.

Thanks,
Rafael
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm

[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux