S3 resume hang when PCI Express wakeups don't clear the PM1 PCI_WAKE_DISABLE bit
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Lucid |
Fix Released
|
Undecided
|
Unassigned | ||
Maverick |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
It has been observed on a AMD K325 netbook that resumes hang in the BIOS if PCI Express ethernet is enabled on the 2nd or 3rd resume. Disabling the ethernet has shown that the resume works flawlessly. This has been tracked down to the fact that a PCI Express Wake event has occurred and the kernel is not clearing the PM1 PCIEXP_WAKE_STS bit when coming out of resume.
Section 4.7.3.1.1 of version 4.0 of the acpi spec (http://
"Software writes a 1 to clear this bit. If the WAKE# pin is still active during
the write, one or more PCI Express ports is in the beacon state or the PME
message received indication has not been cleared in the root port, then the bit
will remain active (i.e. all inputs to this bit are level-sensitive)."
"Note: This bit does not itself cause a wake event or prevent entry to a
sleeping state. Thus if the bit is 1 and the system is put into a sleeping state,
the system will not automatically wake."
A suitable fix is to define ACPI_BITMASK_
#define ACPI_BITMASK_
..and this ensures PCIEXP_WAKE_STS is cleared by acpi_hw_
Related branches
Changed in linux (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Colin King (colin-king) |
Changed in linux (Ubuntu): | |
status: | Fix Committed → Fix Released |
assignee: | Colin King (colin-king) → nobody |
commit 573b63815802989 8caf9470c8214b7 ddd29751e3
Author: Colin Ian King <email address hidden>
Date: Mon Aug 2 15:14:43 2010 +0000
ACPI: enable repeated PCIEXP wakeup by clearing PCIEXP_WAKE_STS on resume
shipped upstream in Linux-2. 6.36-rc6- git2