[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