|
Hannes Reinecke |
dd74a7 |
From: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
dd74a7 |
Date: Wed, 3 Jun 2020 08:24:17 +0200
|
|
Hannes Reinecke |
dd74a7 |
Subject: [PATCH] nvme-pci: use simple suspend when a HMB is enabled
|
|
Hannes Reinecke |
dd74a7 |
Git-commit: b97120b15ebd3de51325084136d3b9c3cce656d6
|
|
Hannes Reinecke |
dd74a7 |
Patch-mainline: v5.8-rc1
|
|
Hannes Reinecke |
dd74a7 |
References: git-fixes
|
|
Hannes Reinecke |
dd74a7 |
|
|
Hannes Reinecke |
dd74a7 |
While the NVMe specification allows the device to access the host memory
|
|
Hannes Reinecke |
dd74a7 |
buffer in host DRAM from all power states, hosts will fail access to
|
|
Hannes Reinecke |
dd74a7 |
DRAM during S3 and similar power states.
|
|
Hannes Reinecke |
dd74a7 |
|
|
Hannes Reinecke |
dd74a7 |
Fixes: d916b1be94b6 ("nvme-pci: use host managed power state for suspend")
|
|
Hannes Reinecke |
dd74a7 |
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
dd74a7 |
Reviewed-by: Keith Busch <kbusch@kernel.org>
|
|
Hannes Reinecke |
dd74a7 |
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
|
|
Hannes Reinecke |
dd74a7 |
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Hannes Reinecke |
dd74a7 |
Acked-by: Hannes Reinecke <hare@suse.com>
|
|
Hannes Reinecke |
dd74a7 |
---
|
|
Hannes Reinecke |
dd74a7 |
drivers/nvme/host/pci.c | 6 ++++++
|
|
Hannes Reinecke |
dd74a7 |
1 file changed, 6 insertions(+)
|
|
Hannes Reinecke |
dd74a7 |
|
|
Hannes Reinecke |
dd74a7 |
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
|
|
Hannes Reinecke |
dd74a7 |
index d690d5593a80..e2bacd369a88 100644
|
|
Hannes Reinecke |
dd74a7 |
--- a/drivers/nvme/host/pci.c
|
|
Hannes Reinecke |
dd74a7 |
+++ b/drivers/nvme/host/pci.c
|
|
Hannes Reinecke |
dd74a7 |
@@ -2950,9 +2950,15 @@ static int nvme_suspend(struct device *dev)
|
|
Hannes Reinecke |
dd74a7 |
* the PCI bus layer to put it into D3 in order to take the PCIe link
|
|
Hannes Reinecke |
dd74a7 |
* down, so as to allow the platform to achieve its minimum low-power
|
|
Hannes Reinecke |
dd74a7 |
* state (which may not be possible if the link is up).
|
|
Hannes Reinecke |
dd74a7 |
+ *
|
|
Hannes Reinecke |
dd74a7 |
+ * If a host memory buffer is enabled, shut down the device as the NVMe
|
|
Hannes Reinecke |
dd74a7 |
+ * specification allows the device to access the host memory buffer in
|
|
Hannes Reinecke |
dd74a7 |
+ * host DRAM from all power states, but hosts will fail access to DRAM
|
|
Hannes Reinecke |
dd74a7 |
+ * during S3.
|
|
Hannes Reinecke |
dd74a7 |
*/
|
|
Hannes Reinecke |
dd74a7 |
if (pm_suspend_via_firmware() || !ctrl->npss ||
|
|
Hannes Reinecke |
dd74a7 |
!pcie_aspm_enabled(pdev) ||
|
|
Hannes Reinecke |
dd74a7 |
+ ndev->nr_host_mem_descs ||
|
|
Hannes Reinecke |
dd74a7 |
(ndev->ctrl.quirks & NVME_QUIRK_SIMPLE_SUSPEND))
|
|
Hannes Reinecke |
dd74a7 |
return nvme_disable_prepare_reset(ndev, true);
|
|
Hannes Reinecke |
dd74a7 |
|
|
Hannes Reinecke |
dd74a7 |
--
|
|
Hannes Reinecke |
dd74a7 |
2.29.2
|
|
Hannes Reinecke |
dd74a7 |
|