Bug 29722

Summary: kworker consumes ~100% CPU on HP Elitebook 8540w after resume
Product: ACPI Reporter: Ortwin Glück (odi)
Component: Config-InterruptsAssignee: acpi_config-interrupts
Severity: normal CC: florian, m.debruijne, maciej.rutecki, rjw
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.37 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 7216, 21782    
Attachments: top after resume
perf top after resume
dmesg of full suspend/resume cycle
ACPI interrupts before/after suspend
PCIe port resume debug patch
acpidump output
PCI / ACPI: Call _OSC if ASPM is not supported
ACPI / PCI: Set _OSC support bits together
lspci -vvvxxx before suspend
lspci -vvvxxx after resume
PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

Description Ortwin Glück 2011-02-23 11:49:25 UTC
With the patch for #20232 on top of 2.6.37, the issue returns after a suspend/resume cycle.
Comment 1 Ortwin Glück 2011-02-23 11:49:59 UTC
Created attachment 48722 [details]
top after resume
Comment 2 Ortwin Glück 2011-02-23 11:50:24 UTC
Created attachment 48732 [details]
perf top after resume
Comment 3 Ortwin Glück 2011-02-23 11:50:58 UTC
Created attachment 48742 [details]
dmesg of full suspend/resume cycle
Comment 4 Rafael J. Wysocki 2011-02-23 19:31:29 UTC
Please post the output of

$ egrep 'disabled|enabled' /sys/firmware/acpi/interrupts/*

before suspend and after resume.
Comment 5 Ortwin Glück 2011-02-24 08:27:57 UTC
Created attachment 48842 [details]
ACPI interrupts before/after suspend
Comment 6 Rafael J. Wysocki 2011-02-24 09:42:19 UTC
Thanks.  So GPE 01 is enabled both before suspend and after resume, but it
only starts to trigger after resume.  Interesting.

First, please attach the output of acpidump from your machine.
Comment 7 Rafael J. Wysocki 2011-02-24 09:47:23 UTC
Created attachment 48852 [details]
PCIe port resume debug patch

Second, please check if this patch makes a difference.
Comment 8 Ortwin Glück 2011-02-24 09:55:22 UTC
Created attachment 48862 [details]
acpidump output
Comment 9 Ortwin Glück 2011-02-24 11:47:43 UTC
Patch from comment 7 doesn't apply to 2.6.37. The lines in question have been added only later.
Comment 10 Rafael J. Wysocki 2011-02-24 18:25:20 UTC
So is the problem reproducible with 2.6.38-rc6 (or later)?
Comment 11 Ortwin Glück 2011-02-25 08:22:29 UTC
I have tried vanilla 2.6.38-rc6 and patch from comment 7 on top of that. Both exhibt the problem after resume, unfortunately. Same interrupts.
Comment 12 Rafael J. Wysocki 2011-02-25 21:39:24 UTC
Please unset CONFIG_HOTPLUG_PCI_PCIE in the kernel .config and set
CONFIG_HOTPLUG_PCI_ACPI so that it is built in (not as a module) and check
of the problem is reproducible with that kernel configuration.

Either way, please attach the output of dmesg including one suspend/resume
cycle and boot messages.
Comment 13 Ortwin Glück 2011-02-28 08:06:24 UTC
Created attachment 49562 [details]

PCIE Hotplug was already disabled, and ACPI hotplug was already built-in (I never build modules). dmesg attachment is already present. Thanks for being so responsive and keeping looking into the problem. I'll try whatever I can to help resolve the issue.
Comment 14 Rafael J. Wysocki 2011-03-01 20:46:07 UTC
Please attach the output of 'lspci -vvvxxx' after resume (ie. when the GPE
storm is going on).
Comment 15 Rafael J. Wysocki 2011-03-01 21:39:28 UTC
Created attachment 49792 [details]
PCI / ACPI: Call _OSC if ASPM is not supported
Comment 16 Rafael J. Wysocki 2011-03-01 21:41:35 UTC
Created attachment 49802 [details]
ACPI / PCI: Set _OSC support bits together

Please apply this patch on top of the previous one (on top of 2.6.38-rc6+)
and see if that makes a difference.
Comment 17 Rafael J. Wysocki 2011-03-01 21:42:35 UTC
I mean please apply the patch from comment #16 on top of the patch from
comment #15.
Comment 18 Ortwin Glück 2011-03-02 07:50:46 UTC
Created attachment 49862 [details]
lspci -vvvxxx before suspend
Comment 19 Ortwin Glück 2011-03-02 07:51:23 UTC
Created attachment 49872 [details]
lspci -vvvxxx after resume
Comment 20 Ortwin Glück 2011-03-02 08:16:43 UTC
Rafael, I confirm that the patches of comment 15 and comment 16 on top of 2.6.38-rc7 do fix the problem. Now gpe01 no longer fires after resume. I'll use this kernel today to do some real work. I will report back if any related issues occur. Thanks for your outstanding support!
Comment 21 Rafael J. Wysocki 2011-03-02 22:39:45 UTC
Created attachment 49952 [details]
PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

Please check if this patch (on top of 2.6.38-rc7) helps too (instead of the
previous two patches).
Comment 22 Ortwin Glück 2011-03-03 08:13:53 UTC
Positive. Also patch from comment 21 on top of a plain 2.6.38-rc7 resolves the problem.
Comment 23 Rafael J. Wysocki 2011-03-03 09:29:24 UTC
Handled-By : Rafael J. Wysocki <rjw@sisk.pl>
Patch : https://patchwork.kernel.org/patch/604371/
Comment 24 Florian Mickler 2011-03-28 23:02:31 UTC
A patch referencing this bug report has been merged in v2.6.38-8876-g036a982:

commit 8b8bae901ce23addbdcdb54fa1696fb2d049feb5
Author: Rafael J. Wysocki <rjw@sisk.pl>
Date:   Sat Mar 5 13:21:51 2011 +0100

    PCI/ACPI: Report ASPM support to BIOS if not disabled from command line