Bug 67241 - ASPM not working on Lenovo T440p
Summary: ASPM not working on Lenovo T440p
Status: CLOSED INVALID
Alias: None
Product: ACPI
Classification: Unclassified
Component: BIOS (show other bugs)
Hardware: x86-64 Linux
: P1 high
Assignee: Lv Zheng
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-17 19:42 UTC by nkalkhof
Modified: 2014-09-01 19:23 UTC (History)
7 users (show)

See Also:
Kernel Version: 3.13rc3
Subsystem:
Regression: No
Bisected commit-id:


Attachments
dmesg dump (44.83 KB, text/x-log)
2013-12-17 19:42 UTC, nkalkhof
Details
acpi dump (430.12 KB, text/x-log)
2013-12-17 19:43 UTC, nkalkhof
Details
kernel config (77.56 KB, application/octet-stream)
2013-12-17 19:43 UTC, nkalkhof
Details

Description nkalkhof 2013-12-17 19:42:36 UTC
Created attachment 118841 [details]
dmesg dump

Hello,

got a Lenovo T440p today with a i7-4600M cpu and I've noticed that power comsumption is way up (17-19 Watts according to Powertop) even if the machine is idle. Even my old T420 with a SNB i7 idles at only 7-8 Watts. I dug around in the dmesg output and found something fishy:

[    0.101907] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[    0.256275] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.257724] acpi PNP0A08:00: _OSC failed (AE_SUPPORT); disabling ASPM

I guess this means that the kernel failed to enable ASPM. pcie_aspm=force didn't help either. Could someone please look into it? I've attached dmesg, acpidump and my kernel config.
Comment 1 nkalkhof 2013-12-17 19:43:07 UTC
Created attachment 118851 [details]
acpi dump

acpi dump
Comment 2 nkalkhof 2013-12-17 19:43:32 UTC
Created attachment 118861 [details]
kernel config
Comment 3 Aaron Lu 2013-12-19 06:26:06 UTC
Lv,

I remembered you dealt with a similar bug some time ago, can you please take a look at this one? Thanks.
Comment 4 nkalkhof 2013-12-19 07:48:53 UTC
Some updates on the Issue:

Powertop 2.5 shows that the CPU reaches it's C7 states and the GPU idles nicely @ RC6. It seems that package C-States above pc3 are never reached. Is this supposed to be normal?

          Package   |             Core    |            CPU 0
                    |                     | C0 active   5.6%
                    |                     | POLL        0.0%    0.0 ms
                    |                     | C1E-HSW     0.1%    0.0 ms
C2 (pc2)   60.5%    |                     |
C3 (pc3)   10.2%    | C3 (cc3)    1.9%    | C3-HSW      2.0%    0.4 ms
C6 (pc6)    0.0%    | C6 (cc6)    0.9%    | C6-HSW      0.9%    0.4 ms
C7 (pc7)    0.0%    | C7 (cc7)   89.8%    | C7s-HSW    90.7%    2.5 ms

                    |             Core    |            CPU 1
                    |                     | C0 active   3.7%
                    |                     | POLL        0.0%    0.0 ms
                    |                     | C1E-HSW     0.1%    0.1 ms
                    |                     |
                    | C3 (cc3)    0.2%    | C3-HSW      0.3%    0.1 ms
                    | C6 (cc6)    0.1%    | C6-HSW      0.1%    0.1 ms
                    | C7 (cc7)   92.2%    | C7s-HSW    92.3%   10.9 ms

                    |             GPU     |
                    |                     |
                    | Powered On 23.1%    |
                    | RC6        76.9%    |
                    | RC6p        0.0%    |

turbostat yields:
cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7 CTMP PTMP   %pc2   %pc3   %pc6   %pc7  Pkg_W  Cor_W GFX_W
          0.68 2.95 2.89   0   0.38   0.11   0.07  98.76   52   55  82.65  15.08   0.00   0.00   9.31   0.14  0.01
  0   0   0.81 2.95 2.89   0   0.44   0.12   0.12  98.51   52   55  82.65  15.08   0.00   0.00   9.31   0.14  0.01
  1   1   0.56 2.95 2.89   0   0.32   0.09   0.01  99.02   50

and lspci -vv |grep "ASPM"
                LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <16us
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
                LnkCap: Port #2, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <16us
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
                L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <32us
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+

I've also tried i915.pc8_timeout=5 since PC8 powersave patches should already be merged into http://cgit.freedesktop.org/~danvet/drm-intel/log/?h=drm-intel-nightly.

Maybe I'm totally off here but I'm under the impression that a Lenovo t440p notebook with a Haswell i7-4600M and no discrete graphics should not draw twice as much power compared to an t420 with a Sandybridge i7-2620m  when idle, right?
Comment 5 Jan Bessai 2014-01-17 16:25:46 UTC
I can confirm exactly the same behaviour. Power consumption improved to ~12 W after I disabled CONFIG_NO_HZ_FULL as suggested in #50721, used bbswitch to disable the nvidia card present in my notebook and deactivated turbo boost (echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo). However the CPU frequency remains stuck at 2.7Ghz and Package in C2 or C3.
Comment 6 Jan Bessai 2014-01-17 16:58:34 UTC
Additionally forcing the CPU to stay at 800Mhz by

# echo 21 > /sys/devices/system/cpu/intel_pstate/max_perf_pct

does not decrease power consumption in a mesurable way.
Comment 7 Martin Jørgensen 2014-02-13 08:46:23 UTC
I can confirm that I get the same error on my newly bought T440p laptop as well. pcie_aspm=force didnt help me either.
Comment 8 Andrea Oliveri 2014-04-11 21:11:08 UTC
Similar bug in a thinkpad T430
ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \_SB_.PCI0.LPC_.PMIO 1 (20131115/utaddress-251)
ACPI Warning: 0x0000000000000530-0x000000000000053f SystemIO conflicts with Region \_SB_.PCI0.LPC_.LPIO 1 (20131115/utaddress-251)
ACPI Warning: 0x0000000000000500-0x000000000000052f SystemIO conflicts with Region \_SB_.PCI0.LPC_.LPIO 1 (20131115/utaddress-251)
ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20131115/hwxface-580)
ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20131115/hwxface-580)
acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
acpi PNP0A08:00: _OSC: platform does not support [PCIeCapability]
acpi PNP0A08:00: _OSC: not requesting control; platform does not support [PCIeCapability]
acpi PNP0A08:00: _OSC: OS requested [PCIeHotplug PME AER PCIeCapability]
acpi PNP0A08:00: _OSC: platform willing to grant [PCIeHotplug PME AER]
acpi PNP0A08:00: _OSC failed (AE_SUPPORT); disabling ASPM8)

i have tried to open a ticket on lenovo forum but i dont receive a satisfying answer...
http://forums.lenovo.com/t5/Linux-Discussion/ACPI-error-and-warnings-on-Linux-Thinkpad-T430/td-p/1401235
Comment 9 Rob 2014-05-16 04:40:19 UTC
Hey guys, please take a look at this bug report: https://bugzilla.kernel.org/show_bug.cgi?id=6218

I believe its related?
Comment 10 Rob 2014-05-16 04:41:04 UTC
I'm sorry, the correct URL is https://bugzilla.kernel.org/show_bug.cgi?id=62181
Comment 11 Lv Zheng 2014-05-16 07:26:58 UTC
(In reply to nkalkhof from comment #1)
> Created attachment 118851 [details]
> acpi dump
> 
> acpi dump

Hi,

I checked the acpidump.
There is no issue related to Linux ASPM support.

[    0.101907] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[    0.256275] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.257724] acpi PNP0A08:00: _OSC failed (AE_SUPPORT); disabling ASPM

The error messages are reasonable.
In you FADT:
                PCIe ASPM Not Supported (V4) : 1
Thus you can see the first error log.

In your DSDT and SSDTs.
There is no _OSC for PCI0 device, thus _OSC failed.

It seems your BIOS simply has reported to OSPM of no ASPM support.

Please find other causes of your platform's power consumption.
Comment 12 Lv Zheng 2014-05-16 07:29:50 UTC
Hi,

(In reply to benssonrob from comment #10)
> I'm sorry, the correct URL is
> https://bugzilla.kernel.org/show_bug.cgi?id=62181

In that bug, BIOS also reports "no ASPM support".
These failures are just error messages telling people what has happened.
There is no functionality issue here.
Comment 13 Andrea Oliveri 2014-05-16 15:44:28 UTC
(In reply to benssonrob from comment #10)
> I'm sorry, the correct URL is
> https://bugzilla.kernel.org/show_bug.cgi?id=62181

On Thinkpad T430 i have the same issues and i have the same option in BIOS ("PCI Express Power management") and if i change it (enable/disable) the errors remain in dmesg, no changes happen
Comment 14 Lv Zheng 2014-06-11 00:24:00 UTC
This is only an error message improvement requirement.
Closing due to no real bugs.
Comment 15 linux-ide 2014-09-01 19:23:12 UTC
At least there is a bug. Though the bug is in the firmware/BIOS. However people see message "ACPI FADT declares the system doesn't support PCIe ASPM, so disable" and start using pcie_aspm=force, expecting that parameter to override what the BIOS is telling the kernel. 

pcie_aspm= "force" description in the kernel documentation can be improved to cause less misunderstanding.

Reading: "force" = "Enable ASPM even on devices that claim not to support it." on <https://www.kernel.org/doc/Documentation/kernel-parameters.txt> made me think "Hey that will fix my faulty BIOS telling this system does not support ASPM, while in fact the computer does support. I see the BIOS as a device.

Most obvious would be a new option: "pcie_aspm=on" = "Enable ASPM even on a BIOS that claims not to support it."

Note You need to log in before you can comment on or make changes to this bug.