[AMD Public Use] > From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> > Sent: Wednesday, April 14, 2021 3:49 PM > To: Liang, Prike <Prike.Liang@xxxxxxx> > Cc: linux-nvme@xxxxxxxxxxxxxxxxxxx; kbusch@xxxxxxxxxx; > Chaitanya.Kulkarni@xxxxxxx; hch@xxxxxxxxxxxxx; S-k, Shyam-sundar > <Shyam-sundar.S-k@xxxxxxx>; Deucher, Alexander > <Alexander.Deucher@xxxxxxx>; # 5 . 11+ <stable@xxxxxxxxxxxxxxx> > Subject: Re: [PATCH 2/2] nvme-pci: add AMD PCIe quirk for suspend/resume > > On Wed, Apr 14, 2021 at 07:13:15AM +0000, Liang, Prike wrote: > > [AMD Public Use] > > > > > From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> > > > Sent: Wednesday, April 14, 2021 2:40 PM > > > To: Liang, Prike <Prike.Liang@xxxxxxx> > > > Cc: linux-nvme@xxxxxxxxxxxxxxxxxxx; kbusch@xxxxxxxxxx; > > > Chaitanya.Kulkarni@xxxxxxx; hch@xxxxxxxxxxxxx; S-k, Shyam-sundar > > > <Shyam-sundar.S-k@xxxxxxx>; Deucher, Alexander > > > <Alexander.Deucher@xxxxxxx>; # 5 . 11+ <stable@xxxxxxxxxxxxxxx> > > > Subject: Re: [PATCH 2/2] nvme-pci: add AMD PCIe quirk for > > > suspend/resume > > > > > > On Wed, Apr 14, 2021 at 02:20:00PM +0800, Prike Liang wrote: > > > > The NVME device pluged in some AMD PCIE root port will resume > > > > timeout from s2idle which caused by NVME power CFG lost in the SMU > FW restore. > > > > This issue can be workaround by using PCIe power set with simple > > > > suspend/resume process path instead of APST. In the onwards ASIC > > > > will try do the NVME shutdown save and restore in the BIOS and > > > > still need PCIe power setting to resume from RTD3 for s2idle. > > > > > > > > Update the nvme_acpi_storage_d3() _with previously added quirk. > > > > > > > > Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx> > > > > [ck: split patches for nvme and pcie] > > > > Signed-off-by: Prike Liang <Prike.Liang@xxxxxxx> > > > > Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@xxxxxxx> > > > > Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx> > > > > Cc: <stable@xxxxxxxxxxxxxxx> # 5.11+ > > > > --- > > > > drivers/nvme/host/pci.c | 5 +++++ > > > > 1 file changed, 5 insertions(+) > > > > > > > > diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c > > > > index > > > > 6bad4d4..5a9a192 100644 > > > > --- a/drivers/nvme/host/pci.c > > > > +++ b/drivers/nvme/host/pci.c > > > > @@ -2832,6 +2832,7 @@ static bool nvme_acpi_storage_d3(struct > > > > pci_dev > > > > *dev) { > > > > struct acpi_device *adev; > > > > struct pci_dev *root; > > > > +struct pci_dev *rdev; > > > > acpi_handle handle; > > > > acpi_status status; > > > > u8 val; > > > > @@ -2845,6 +2846,10 @@ static bool nvme_acpi_storage_d3(struct > > > pci_dev *dev) > > > > if (!root) > > > > return false; > > > > > > > > +rdev = pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(0, 0)); if > > > > +(rdev && (rdev->dev_flags & > > > PCI_DEV_FLAGS_AMD_NVME_SIMPLE_SUSPEND)) > > > > +return NVME_QUIRK_SIMPLE_SUSPEND; > > > > + > > > > adev = ACPI_COMPANION(&root->dev); if (!adev) return false; > > > > -- > > > > 2.7.4 > > > > > > > > > > This is still broken, why resend it? > > Sorry can't get how come the reference count leaked, could you help give > more detail about this. > > Please read the documentation for the call you are making here. For once, it > is actually written down what needs to be done :) Thanks, get it now and will update the patch.