> -----Original Message-----
> From: Keith Busch <kbu...@kernel.org>
> Sent: Wednesday, August 14, 2019 2:32 PM
> To: Limonciello, Mario
> Cc: Jens Axboe; Christoph Hellwig; Sagi Grimberg; linux-
> n...@lists.infradead.org; LKML; Hong, Ryan; Wang, Crag; s...@google.com;
> Hyde, Charles - Dell Team; Dominguez, Jared
> Subject: Re: [PATCH] nvme: Add quirk for LiteON CL1 devices running FW
> 22301111
> 
> 
> [EXTERNAL EMAIL]
> 
> On Wed, Aug 14, 2019 at 09:05:49AM -0700, Mario Limonciello wrote:
> > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> > index 8f3fbe5..47c7754 100644
> > --- a/drivers/nvme/host/core.c
> > +++ b/drivers/nvme/host/core.c
> > @@ -2251,6 +2251,29 @@ static const struct nvme_core_quirk_entry
> core_quirks[] = {
> >             .vid = 0x1179,
> >             .mn = "THNSF5256GPUK TOSHIBA",
> >             .quirks = NVME_QUIRK_NO_APST,
> > +   },
> > +   /*
> > +    * This LiteON CL1 firmware version has a race condition associated with
> > +    * actions related to suspend to idle.  LiteON has resolved the problem
> > +    * in future firmware.
> > +    */
> > +   {
> > +           .vid = 0x14a4,
> > +           .mn = "CL1-3D128-Q11 NVMe LITEON 128GB",
> > +           .fr = "22301111",
> > +           .quirks = NVME_QUIRK_SIMPLE_SUSPEND,
> > +   },
> > +   {
> > +           .vid = 0x14a4,
> > +           .mn = "CL1-3D256-Q11 NVMe LITEON 256GB",
> > +           .fr = "22301111",
> > +           .quirks = NVME_QUIRK_SIMPLE_SUSPEND,
> > +   },
> > +   {
> > +           .vid = 0x14a4,
> > +           .mn = "CL1-3D512-Q11 NVMe LITEON 512GB",
> > +           .fr = "22301111",
> > +           .quirks = NVME_QUIRK_SIMPLE_SUSPEND,
> >     }
> >  };
> 
> Are there models from this vendor with this same 'fr' that don't need
> this quirk? If not, you can leave .mn blank and just use a single entry.

Yes, I confirmed this firmware version string is only used on the CL1 family
of devices.

I will send a v2 modifying this.  I also noticed that the
(ndev->ctrl.quirks & NVME_QUIRK_SIMPLE_SUSPEND)

is unnecessary in nvme_resume because ndev->last_ps is set to U32_MAX
in nvme_suspend, so I will remove that second modification.

Reply via email to