linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] nvme: Add quirk for LiteON CL1 devices running FW 22301111
@ 2019-08-16 20:16 Mario Limonciello
  2019-08-19 18:57 ` Sagi Grimberg
  0 siblings, 1 reply; 4+ messages in thread
From: Mario Limonciello @ 2019-08-16 20:16 UTC (permalink / raw)
  To: Keith Busch
  Cc: Jens Axboe, Christoph Hellwig, Sagi Grimberg, linux-nvme, LKML,
	Ryan Hong, Crag Wang, sjg, Charles Hyde, Jared Dominguez,
	Mario Limonciello

One of the components in LiteON CL1 device has limitations that
can be encountered based upon boundary race conditions using the
nvme bus specific suspend to idle flow.

When this situation occurs the drive doesn't resume properly from
suspend-to-idle.

LiteON has confirmed this problem and fixed in the next firmware
version.  As this firmware is already in the field, avoid running
nvme specific suspend to idle flow.

Fixes: d916b1be94b6 ("nvme-pci: use host managed power state for suspend")
Link: http://lists.infradead.org/pipermail/linux-nvme/2019-July/thread.html
Signed-off-by: Mario Limonciello <mario.limonciello@dell.com>
Signed-off-by: Charles Hyde <charles.hyde@dellteam.com>
---
 drivers/nvme/host/core.c | 10 ++++++++++
 drivers/nvme/host/nvme.h |  5 +++++
 drivers/nvme/host/pci.c  |  3 ++-
 3 files changed, 17 insertions(+), 1 deletion(-)

This patch is the spiritual successor to the previously submitted
patch "[PATCH] drivers/nvme: save/restore HMB on suspend/resume".

After discussion with LiteON, they agreed to resolve the issue
in their next firmware release.

This patch is dependent upon commit
4eaefe8c621c6195c91044396ed8060c179f7aae
which is currently in Linus' tree for the next 5.3-rcX but not
yet in nvme-5.4.

changes from v2:
 * Fix whitespace to match other nearby code

changes from v1:
 * Group all 3 possible CL1 strings together
 * Remove the resume code because it's
   already implied by ndev->last_ps = U32_MAX

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 8f3fbe5..a1c8c19 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -2251,6 +2251,16 @@ static const struct nvme_core_quirk_entry core_quirks[] = {
 		.vid = 0x1179,
 		.mn = "THNSF5256GPUK TOSHIBA",
 		.quirks = NVME_QUIRK_NO_APST,
+	},
+	{
+		/*
+		 * This LiteON CL1-3D*-Q11 firmware version has a race
+		 * condition associated with actions related to suspend to idle
+		 * LiteON has resolved the problem in future firmware
+		 */
+		.vid = 0x14a4,
+		.fr = "22301111",
+		.quirks = NVME_QUIRK_SIMPLE_SUSPEND,
 	}
 };
 
diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index 26b563f..fe1ca0d 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -92,6 +92,11 @@ enum nvme_quirks {
 	 * Broken Write Zeroes.
 	 */
 	NVME_QUIRK_DISABLE_WRITE_ZEROES		= (1 << 9),
+
+	/*
+	 * Force simple suspend/resume path.
+	 */
+	NVME_QUIRK_SIMPLE_SUSPEND		= (1 << 10),
 };
 
 /*
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 108e109..b366f54 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -2875,7 +2875,8 @@ static int nvme_suspend(struct device *dev)
 	 * state (which may not be possible if the link is up).
 	 */
 	if (pm_suspend_via_firmware() || !ctrl->npss ||
-	    !pcie_aspm_enabled(pdev)) {
+	    !pcie_aspm_enabled(pdev) ||
+	    (ndev->ctrl.quirks & NVME_QUIRK_SIMPLE_SUSPEND)) {
 		nvme_dev_disable(ndev, true);
 		return 0;
 	}
-- 
2.7.4


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

* Re: [PATCH v3] nvme: Add quirk for LiteON CL1 devices running FW 22301111
  2019-08-16 20:16 [PATCH v3] nvme: Add quirk for LiteON CL1 devices running FW 22301111 Mario Limonciello
@ 2019-08-19 18:57 ` Sagi Grimberg
  2019-08-19 19:02   ` Jens Axboe
  0 siblings, 1 reply; 4+ messages in thread
From: Sagi Grimberg @ 2019-08-19 18:57 UTC (permalink / raw)
  To: Mario Limonciello, Keith Busch
  Cc: Jens Axboe, Christoph Hellwig, linux-nvme, LKML, Ryan Hong,
	Crag Wang, sjg, Charles Hyde, Jared Dominguez



On 8/16/19 1:16 PM, Mario Limonciello wrote:
> One of the components in LiteON CL1 device has limitations that
> can be encountered based upon boundary race conditions using the
> nvme bus specific suspend to idle flow.
> 
> When this situation occurs the drive doesn't resume properly from
> suspend-to-idle.
> 
> LiteON has confirmed this problem and fixed in the next firmware
> version.  As this firmware is already in the field, avoid running
> nvme specific suspend to idle flow.
> 
> Fixes: d916b1be94b6 ("nvme-pci: use host managed power state for suspend")
> Link: http://lists.infradead.org/pipermail/linux-nvme/2019-July/thread.html
> Signed-off-by: Mario Limonciello <mario.limonciello@dell.com>
> Signed-off-by: Charles Hyde <charles.hyde@dellteam.com>
> ---

Jens, can you please rebase for-linus so we have the needed dependency:
4eaefe8c621c6195c91044396ed8060c179f7aae

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

* Re: [PATCH v3] nvme: Add quirk for LiteON CL1 devices running FW 22301111
  2019-08-19 18:57 ` Sagi Grimberg
@ 2019-08-19 19:02   ` Jens Axboe
  2019-08-19 21:23     ` Sagi Grimberg
  0 siblings, 1 reply; 4+ messages in thread
From: Jens Axboe @ 2019-08-19 19:02 UTC (permalink / raw)
  To: Sagi Grimberg, Mario Limonciello, Keith Busch
  Cc: Christoph Hellwig, linux-nvme, LKML, Ryan Hong, Crag Wang, sjg,
	Charles Hyde, Jared Dominguez

On 8/19/19 12:57 PM, Sagi Grimberg wrote:
> 
> 
> On 8/16/19 1:16 PM, Mario Limonciello wrote:
>> One of the components in LiteON CL1 device has limitations that
>> can be encountered based upon boundary race conditions using the
>> nvme bus specific suspend to idle flow.
>>
>> When this situation occurs the drive doesn't resume properly from
>> suspend-to-idle.
>>
>> LiteON has confirmed this problem and fixed in the next firmware
>> version.  As this firmware is already in the field, avoid running
>> nvme specific suspend to idle flow.
>>
>> Fixes: d916b1be94b6 ("nvme-pci: use host managed power state for suspend")
>> Link: http://lists.infradead.org/pipermail/linux-nvme/2019-July/thread.html
>> Signed-off-by: Mario Limonciello <mario.limonciello@dell.com>
>> Signed-off-by: Charles Hyde <charles.hyde@dellteam.com>
>> ---
> 
> Jens, can you please rebase for-linus so we have the needed dependency:
> 4eaefe8c621c6195c91044396ed8060c179f7aae

I just did as part of adding a new patch, being pushed out shortly.

-- 
Jens Axboe


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

* Re: [PATCH v3] nvme: Add quirk for LiteON CL1 devices running FW 22301111
  2019-08-19 19:02   ` Jens Axboe
@ 2019-08-19 21:23     ` Sagi Grimberg
  0 siblings, 0 replies; 4+ messages in thread
From: Sagi Grimberg @ 2019-08-19 21:23 UTC (permalink / raw)
  To: Jens Axboe, Mario Limonciello, Keith Busch
  Cc: Crag Wang, sjg, LKML, linux-nvme, Ryan Hong, Jared Dominguez,
	Charles Hyde, Christoph Hellwig


>> Jens, can you please rebase for-linus so we have the needed dependency:
>> 4eaefe8c621c6195c91044396ed8060c179f7aae
> 
> I just did as part of adding a new patch, being pushed out shortly.

Thanks

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

end of thread, other threads:[~2019-08-19 21:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-16 20:16 [PATCH v3] nvme: Add quirk for LiteON CL1 devices running FW 22301111 Mario Limonciello
2019-08-19 18:57 ` Sagi Grimberg
2019-08-19 19:02   ` Jens Axboe
2019-08-19 21:23     ` Sagi Grimberg

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).