[PATCH] nvme-pci: set some AMD PCIe downstream storage device to D3 for s2idle

Limonciello, Mario Mario.Limonciello at amd.com
Tue May 25 13:09:02 PDT 2021


[Public]

> On Tue, May 25, 2021 at 02:06:09PM +0000, Limonciello, Mario wrote:
> > "Then the NVMe device will be shutdown by SMU firmware in the s2idle
> entry
> > and then will lost the NVMe power context during s2idle resume. Finally,
> > the NVMe command queue request will be processed abnormally and
> result
> > in access timeout"
> 
> The nvme driver explicitly checks pm_set_suspend_via_firmware() in order
> to know if firmware may manipulate our device after completing the idle
> suspend. That is returning false here, yet firmware will do something
> anyway.

pm_set_suspend_via_firmware is not set during s2idle - from drivers/acpi/sleep.c
it means ACPI S3 or ACPI S4 and thus pm_suspend_via_firmware however would
not be used.

Overloading this definition on these AMD platforms to solve this NVME problem 
would have unintended consequences.  Just glancing through the kernel I notice
the following drivers make use of that for decisions, which I would suspect to be
problematic:

* cros_ec/gsmi (on any AMD chromebook, EC might receive wrong event and logging wrong)
* tpm
* i8042
* amdgpu (would break DPM_FLAG_SMART_SUSPEND)



More information about the Linux-nvme mailing list