Re: PCI PME# routing problem?

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

 



On Mon, 26 Sep 2011, Rafael J. Wysocki wrote:

> > The test results are as follows.  During late suspend:
> > 
> > 	acpi_pci_sleep_wake() is called for the 0000:01:01.1 device 
> > 	with enable set to 1.
> > 
> > 	acpi_pci_can_wakeup() returns 0.
> > 
> > 	acpi_pci_propagate_wakeup_enable() is called for the 0000:01 
> > 	bus device, also known as 0000:00:1e.0.
> > 
> > 	acpi_pm_device_sleep_wake() is called for 0000:00:1e.0; it 
> > 	prints out "pci 0000:00:1e.0: wake-up capability enabled by 
> > 	ACPI" and returns 0.
> > 
> > 	This causes acpi_pci_propagate_wakeup_enable() to return from
> > 	within the "while (bus->parent)" loop.
> > 
> > There also are log messages stating "ohci_hcd 0000:01:01.1: PME# 
> > enabled" and "ohci_hcd 0000:01:01.1: --> PCI D3hot".  Nevertheless, it 
> > doesn't wake up the system.
> 
> What's there in /proc/acpi/wakeup ?

Here it is:

Device	S-state	  Status   Sysfs node
P0P4	  S4	*disabled  pci:0000:00:1e.0
MC97	  S4	*disabled  
USB1	  S4	*enabled   pci:0000:00:1d.0
USB2	  S4	*enabled   pci:0000:00:1d.1
USB3	  S4	*enabled   pci:0000:00:1d.2
USB4	  S4	*enabled   pci:0000:00:1d.3
EUSB	  S4	*enabled   pci:0000:00:1d.7
PS2K	  S4	*enabled   pnp:00:09
PS2M	  S4	*disabled  pnp:00:0a
GBEN	  S4	*disabled  

Of course the 000:01:01.1 device isn't on the list, because it's part
of an add-on PCI card, not built into the motherboard.

I tried echoing "P0P4" to /proc/acpi/wakeup, which caused the first 
line above to say "enabled", but there was no difference in behavior.  
Is the fact that the S-state column says S4 relevant (bearing in mind 
that the test does an S3 suspend)?

I also checked the setting of 
/sys/bus/pci/devices/0000:00:1e.0/power/wakeup, and it says "enabled"
following the write to /proc/acpi/wakeup.

Now, it's possible that the problem is at a lower level.  Maybe the 
device is not getting wakeup power even though it's supposed to be in 
D3hot.  I don't know how to check that, however, or how to see whether 
or not its PME# signal is asserted when the system wakes up.  By the 
time the system finishes resuming it is too late, because the driver's 
resume routine does a complete reset of the device (not to mention that 
the PCI subsystem's resume routine restores the device's config space 
contents and disables PME#).

Alan Stern

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


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux