linux/drivers/pci/pcie
Rafael J. Wysocki fe31e69740 PCI/PCIe: Clear Root PME Status bits early during system resume
I noticed that PCI Express PMEs don't work on my Toshiba Portege R500
after the system has been woken up from a sleep state by a PME
(through Wake-on-LAN).  After some investigation it turned out that
the BIOS didn't clear the Root PME Status bit in the root port that
received the wakeup PME and since the Requester ID was also set in
the port's Root Status register, any subsequent PMEs didn't trigger
interrupts.

This problem can be avoided by clearing the Root PME Status bits in
all PCI Express root ports during early resume.  For this purpose,
add an early resume routine to the PCIe port driver and make this
driver be always registered, even if pci_ports_disable is set (in
which case the driver's only function is to provide the early
resume callback).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2010-12-23 12:54:03 -08:00
..
aer Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2010-10-28 11:59:52 -07:00
aspm.c PCI: Disable ASPM if BIOS asks us to 2010-12-23 12:53:08 -08:00
Kconfig PCI: Default PCIe ASPM control to on and require !EMBEDDED to disable 2010-07-30 09:29:34 -07:00
Makefile PCI: PCIe: Move PCIe PME code to the pcie directory 2010-08-24 13:47:48 -07:00
pme.c PCI/PCIe: Clear Root PME Status bits early during system resume 2010-12-23 12:54:03 -08:00
portdrv_acpi.c PCI/PCIe/AER: Disable native AER service if BIOS has precedence 2010-10-15 13:09:50 -07:00
portdrv_bus.c PCI: portdrv: remove unnecessary struct pcie_port_data 2009-12-04 15:56:19 -08:00
portdrv_core.c PCI/PCIe: Clear Root PME Status bits early during system resume 2010-12-23 12:54:03 -08:00
portdrv_pci.c PCI/PCIe: Clear Root PME Status bits early during system resume 2010-12-23 12:54:03 -08:00
portdrv.h PCI/PCIe: Clear Root PME Status bits early during system resume 2010-12-23 12:54:03 -08:00