mbox series

[0/1,U/OEM-5.6] PCI: vmd: Enable ASPM if BIOS requests it

Message ID 20200730103404.136666-1-vicamo.yang@canonical.com
Headers show
Series PCI: vmd: Enable ASPM if BIOS requests it | expand

Message

You-Sheng Yang July 30, 2020, 10:34 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1889384

[Impact]
ASPM of VMD devices is not automatically enabled even it's said capable
in its Link Capabilities Register.

  $ sudo lspci -vvn | grep -E '^(1|\s+LnkCtl:)'
  10000:e0:1d.0 0604: 8086:a0b0 (rev 20) (prog-if 00 [Normal decode])
    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
  10000:e1:00.0 0108: 1e0f:0001 (prog-if 02 [NVM Express])
    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+

This blocks system from entering PC10 and fails to meet E-Star
regulations.

[Fix]
A proposed patch in linux-pci mailing list to enable ASPM for all
children on the VMD bus.

[Test Case]
A simple command to grep current LnkCtl state:

  $ sudo lspci -vv | grep -E '^(1|\s+LnkCtl:)'

Run turbostat in the background and trigger long idle. turbostat should
give non-zero residency percentage of Pk%pc10 column.

[Regression Potential]
Low. BIOS has set Link Capabilities Register as supporting L1 on VMD
devices, and Windows driver on the same platform will enable ASPM when
loaded, but Linux doesn't. This would affect only devices should have
done so yet doesn't.

[Other Info]
Full VMD/RAID mode support targets oem-5.6 kernel and newer only.

Jon Derrick (1):
  PCI: vmd: Enable ASPM if BIOS requests it

 drivers/pci/controller/vmd.c |  9 ++++++++-
 drivers/pci/pcie/aspm.c      | 19 ++-----------------
 include/linux/pci.h          | 17 +++++++++++++++++
 3 files changed, 27 insertions(+), 18 deletions(-)