[PATCH v2 0/4] PCI: Introduce pci_suspend_retains_context() API
Manivannan Sadhasivam via B4 Relay
devnull+manivannan.sadhasivam.oss.qualcomm.com at kernel.org
Tue May 19 01:11:19 PDT 2026
Hi all,
This series introduces a new PCI API, pci_suspend_retains_context() to
let the client drivers know whether they can expect context retention across
suspend/resume or not and uses it in the NVMe PCI host driver.
This new API is targeted to abstract the PCI power management details away from
the client drivers. This is needed because client drivers like NVMe make use of
APIs such as pm_suspend_via_firmware() and decide to keep the device in low
power mode if this API returns 'false'. But some platforms may have other
limitations like in the case of Qcom, where if the RC driver removes the PCIe RC
resource vote to allow the SoC to enter low power mode, it cannot reliably exit
the L1ss state when the endpoint asserts CLKREQ#. So in this case also, the
client drivers cannot keep the device in low power state during suspend and
expect context retention.
And these limitations may just keep adding in the future. Without a unified
API, the client drivers have to implement their own logic which may cause code
duplication and may also lead to drivers missing some of the platform
limitations.
Once this series gets merged, we can extend this API usage to other client
drivers as well.
Testing
=======
This series is tested on Qualcomm Hamoa based Lenovo Thinkpad T14s latop with
NVMe drive.
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at oss.qualcomm.com>
---
Changes in v2:
- Renamed the API to pci_suspend_retains_context()
- Reworded the commit messages to include L10_REFCLK_ON + T_COMMONMODE as the
L1ss exit latency
- Rebased on top of v7.1-rc1
---
Manivannan Sadhasivam (4):
PCI: Introduce an API to check if RC/platform can retain device context during suspend
PCI: Indicate context lost if L1ss exit is broken during resume from system suspend
PCI: qcom: Indicate broken L1ss exit during resume from system suspend
nvme-pci: Use pci_suspend_retains_context() API during suspend
drivers/nvme/host/pci.c | 3 ++-
drivers/pci/controller/dwc/pcie-qcom.c | 12 ++++++++++++
drivers/pci/pci.c | 34 ++++++++++++++++++++++++++++++++++
include/linux/pci.h | 9 +++++++++
4 files changed, 57 insertions(+), 1 deletion(-)
---
base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
change-id: 20260414-l1ss-fix-6c9cf2451944
Best regards,
--
Manivannan Sadhasivam <manivannan.sadhasivam at oss.qualcomm.com>
More information about the Linux-nvme
mailing list