LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH v1 0/2] PCI/ASPM: Tighten up ASPM L1.2 and LTR usage
@ 2018-04-19 21:05 Bjorn Helgaas
  2018-04-19 21:05 ` [PATCH v1 1/2] PCI/ASPM: Disable ASPM L1.2 Substate if we don't have LTR Bjorn Helgaas
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2018-04-19 21:05 UTC (permalink / raw)
  To: linux-pci
  Cc: Rafael J. Wysocki, Sinan Kaya, Rajat Jain, Srinath Mannam,
	Ray Jui, Keith Busch, linux-acpi, linux-nvme, linux-kernel

The ASPM L1.2 substate depends on LTR information.  Per the PCI
Firmware spec, the OS is supposed to negotiate with the platform for
control of the LTR feature, but previously we didn't do that.

In addition, we must not enable LTR in an endpoint unless the Root
Complex and all intermediate switches also support LTR.  We already
took care of that in pci_configure_ltr(), but we didn't ensure that
LTR was enabled before allowing ASPM L1.2 to be enabled.

These patches fix both of these issues.  Or rather, they *should* fix
them.  I don't have hardware to test them, so any help with testing
would be appreciated.

I think the most likely issue would be a platform where the hardware
supports LTR and the ASPM L1.2 substate, but the BIOS doesn't support
LTR in _OSC.  In that case, we previously could have enabled ASPM L1.2
(though it probably wouldn't work correctly), and after these patches,
we should not enable ASPM L1.2.

You can look for issues by comparing dmesg and "lspci -vv" output
before and after these patches.

It would also be interesting to collect an acpidump from platforms
that support LTR, even if there's no endpoint that supports ASPM L1.2.
The acpidump should show that _OSC supports LTR.

I included some NVMe folks because these were motivated by Srinath's
recent report of LTR and ASPM issues with a Samsung NVMe SSD
Controller SM961/PM961 device, so this is sort of FYI in case you see
similar issues or are in a position to test these.

---

Bjorn Helgaas (2):
      PCI/ASPM: Disable ASPM L1.2 Substate if we don't have LTR
      PCI/ACPI: Request LTR control from platform before using it


 drivers/acpi/pci_root.c |    7 +++++++
 drivers/pci/pcie/aspm.c |    9 +++++++++
 drivers/pci/probe.c     |    5 +++++
 include/linux/acpi.h    |    3 ++-
 include/linux/pci.h     |    1 +
 5 files changed, 24 insertions(+), 1 deletion(-)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-04-30 21:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-19 21:05 [PATCH v1 0/2] PCI/ASPM: Tighten up ASPM L1.2 and LTR usage Bjorn Helgaas
2018-04-19 21:05 ` [PATCH v1 1/2] PCI/ASPM: Disable ASPM L1.2 Substate if we don't have LTR Bjorn Helgaas
2018-04-20  8:52   ` Srinath Mannam
2018-04-19 21:05 ` [PATCH v1 2/2] PCI/ACPI: Request LTR control from platform before using it Bjorn Helgaas
2018-04-23  7:56 ` [PATCH v1 0/2] PCI/ASPM: Tighten up ASPM L1.2 and LTR usage Rafael J. Wysocki
2018-04-30 21:02 ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).