When suspending to idle and resuming on some Lenovo laptops using the
Mendocino APU, multiple NVME IOMMU page faults occur, showing up in
dmesg as repeated errors:
nvme 0000:01:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x000b
address=0xb6674000 flags=0x0000]
The system is unstable afterwards.
Applying the s2idle quirk introduced by commit 455cd867b85b5
("platform/x86: thinkpad_acpi: Add a s2idle resume quirk for a number of
laptops") allows these systems to work with the IOMMU enabled and s2idle
resume to work.
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218024
Suggested-by: Mario Limonciello <[email protected]>
Suggested-by: Mark Pearson <[email protected]>
Signed-off-by: David Lazar <[email protected]>
---
drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++
1 file changed, 73 insertions(+)
diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
index ad702463a65d..6bbffb081053 100644
--- a/drivers/platform/x86/amd/pmc/pmc-quirks.c
+++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c
@@ -111,6 +111,79 @@ static const struct dmi_system_id fwbug_list[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
}
},
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
+ {
+ .ident = "V14 G4 AMN",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82YT"),
+ }
+ },
+ {
+ .ident = "V14 G4 AMN",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "83GE"),
+ }
+ },
+ {
+ .ident = "V15 G4 AMN",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82YU"),
+ }
+ },
+ {
+ .ident = "V15 G4 AMN",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "83CQ"),
+ }
+ },
+ {
+ .ident = "IdeaPad 1 14AMN7",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82VF"),
+ }
+ },
+ {
+ .ident = "IdeaPad 1 15AMN7",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82VG"),
+ }
+ },
+ {
+ .ident = "IdeaPad 1 15AMN7",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82X5"),
+ }
+ },
+ {
+ .ident = "IdeaPad Slim 3 14AMN8",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82XN"),
+ }
+ },
+ {
+ .ident = "IdeaPad Slim 3 15AMN8",
+ .driver_data = &quirk_s2idle_bug,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
+ }
+ },
/* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
{
.ident = "HP Laptop 15s-eq2xxx",
--
2.39.2
On 10/25/2023 14:30, David Lazar wrote:
> When suspending to idle and resuming on some Lenovo laptops using the
> Mendocino APU, multiple NVME IOMMU page faults occur, showing up in
> dmesg as repeated errors:
>
> nvme 0000:01:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x000b
> address=0xb6674000 flags=0x0000]
>
> The system is unstable afterwards.
>
> Applying the s2idle quirk introduced by commit 455cd867b85b5
> ("platform/x86: thinkpad_acpi: Add a s2idle resume quirk for a number of
> laptops") allows these systems to work with the IOMMU enabled and s2idle
> resume to work.
>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218024
> Suggested-by: Mario Limonciello <[email protected]>
> Suggested-by: Mark Pearson <[email protected]>
> Signed-off-by: David Lazar <[email protected]>
> ---
Reviewed-by: Mario Limonciello <[email protected]>
> drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++
> 1 file changed, 73 insertions(+)
>
> diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
> index ad702463a65d..6bbffb081053 100644
> --- a/drivers/platform/x86/amd/pmc/pmc-quirks.c
> +++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c
> @@ -111,6 +111,79 @@ static const struct dmi_system_id fwbug_list[] = {
> DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
> }
> },
> + /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
> + {
> + .ident = "V14 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82YT"),
> + }
> + },
> + {
> + .ident = "V14 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "83GE"),
> + }
> + },
> + {
> + .ident = "V15 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82YU"),
> + }
> + },
> + {
> + .ident = "V15 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "83CQ"),
> + }
> + },
> + {
> + .ident = "IdeaPad 1 14AMN7",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82VF"),
> + }
> + },
> + {
> + .ident = "IdeaPad 1 15AMN7",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82VG"),
> + }
> + },
> + {
> + .ident = "IdeaPad 1 15AMN7",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82X5"),
> + }
> + },
> + {
> + .ident = "IdeaPad Slim 3 14AMN8",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82XN"),
> + }
> + },
> + {
> + .ident = "IdeaPad Slim 3 15AMN8",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
> + }
> + },
> /* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
> {
> .ident = "HP Laptop 15s-eq2xxx",
Thanks David for doing this.
On Wed, Oct 25, 2023, at 6:06 PM, Mario Limonciello wrote:
> On 10/25/2023 14:30, David Lazar wrote:
>> When suspending to idle and resuming on some Lenovo laptops using the
>> Mendocino APU, multiple NVME IOMMU page faults occur, showing up in
>> dmesg as repeated errors:
>>
>> nvme 0000:01:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x000b
>> address=0xb6674000 flags=0x0000]
>>
>> The system is unstable afterwards.
>>
>> Applying the s2idle quirk introduced by commit 455cd867b85b5
>> ("platform/x86: thinkpad_acpi: Add a s2idle resume quirk for a number of
>> laptops") allows these systems to work with the IOMMU enabled and s2idle
>> resume to work.
>>
>> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218024
>> Suggested-by: Mario Limonciello <[email protected]>
>> Suggested-by: Mark Pearson <[email protected]>
>> Signed-off-by: David Lazar <[email protected]>
>> ---
>
> Reviewed-by: Mario Limonciello <[email protected]>
Reviewed-by: Mark Pearson <[email protected]>
>
>> drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++
>> 1 file changed, 73 insertions(+)
>>
>> diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
>> index ad702463a65d..6bbffb081053 100644
>> --- a/drivers/platform/x86/amd/pmc/pmc-quirks.c
>> +++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c
>> @@ -111,6 +111,79 @@ static const struct dmi_system_id fwbug_list[] = {
>> DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
>> }
>> },
>> + /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
>> + {
>> + .ident = "V14 G4 AMN",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82YT"),
>> + }
>> + },
>> + {
>> + .ident = "V14 G4 AMN",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "83GE"),
>> + }
>> + },
>> + {
>> + .ident = "V15 G4 AMN",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82YU"),
>> + }
>> + },
>> + {
>> + .ident = "V15 G4 AMN",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "83CQ"),
>> + }
>> + },
>> + {
>> + .ident = "IdeaPad 1 14AMN7",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82VF"),
>> + }
>> + },
>> + {
>> + .ident = "IdeaPad 1 15AMN7",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82VG"),
>> + }
>> + },
>> + {
>> + .ident = "IdeaPad 1 15AMN7",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82X5"),
>> + }
>> + },
>> + {
>> + .ident = "IdeaPad Slim 3 14AMN8",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82XN"),
>> + }
>> + },
>> + {
>> + .ident = "IdeaPad Slim 3 15AMN8",
>> + .driver_data = &quirk_s2idle_bug,
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
>> + DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
>> + }
>> + },
>> /* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
>> {
>> .ident = "HP Laptop 15s-eq2xxx",
Hi,
On 10/25/23 21:30, David Lazar wrote:
> When suspending to idle and resuming on some Lenovo laptops using the
> Mendocino APU, multiple NVME IOMMU page faults occur, showing up in
> dmesg as repeated errors:
>
> nvme 0000:01:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x000b
> address=0xb6674000 flags=0x0000]
>
> The system is unstable afterwards.
>
> Applying the s2idle quirk introduced by commit 455cd867b85b5
> ("platform/x86: thinkpad_acpi: Add a s2idle resume quirk for a number of
> laptops") allows these systems to work with the IOMMU enabled and s2idle
> resume to work.
>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218024
> Suggested-by: Mario Limonciello <[email protected]>
> Suggested-by: Mark Pearson <[email protected]>
> Signed-off-by: David Lazar <[email protected]>
Thank you and Mario and Mark thank you for the reviews.
I'll prep + send a fixes pull-req to Linus
with just this single patch tomorrow.
Regards,
Hans
> ---
> drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++
> 1 file changed, 73 insertions(+)
>
> diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
> index ad702463a65d..6bbffb081053 100644
> --- a/drivers/platform/x86/amd/pmc/pmc-quirks.c
> +++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c
> @@ -111,6 +111,79 @@ static const struct dmi_system_id fwbug_list[] = {
> DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
> }
> },
> + /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
> + {
> + .ident = "V14 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82YT"),
> + }
> + },
> + {
> + .ident = "V14 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "83GE"),
> + }
> + },
> + {
> + .ident = "V15 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82YU"),
> + }
> + },
> + {
> + .ident = "V15 G4 AMN",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "83CQ"),
> + }
> + },
> + {
> + .ident = "IdeaPad 1 14AMN7",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82VF"),
> + }
> + },
> + {
> + .ident = "IdeaPad 1 15AMN7",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82VG"),
> + }
> + },
> + {
> + .ident = "IdeaPad 1 15AMN7",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82X5"),
> + }
> + },
> + {
> + .ident = "IdeaPad Slim 3 14AMN8",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82XN"),
> + }
> + },
> + {
> + .ident = "IdeaPad Slim 3 15AMN8",
> + .driver_data = &quirk_s2idle_bug,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
> + }
> + },
> /* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
> {
> .ident = "HP Laptop 15s-eq2xxx",
On Thu, 26 Oct 2023, Hans de Goede wrote:
> I'll prep + send a fixes pull-req to Linus
> with just this single patch tomorrow.
Thanks, Hans, both for taking care of this patch, and also for the
sleuthing on the original keyboard bug. Much appreciated.
Cheers,
-=[david]=-
On Thu, 26 Oct 2023, Hans de Goede wrote:
> I'll prep + send a fixes pull-req to Linus
> with just this single patch tomorrow.
The patch recently landed in Linus' tree, so thanks for that.
I didn't realize that the fixes for this laptop family would be also
considered for the stable trees, so I hadn't Cc-ed
[email protected] in my original patch. But I now see that gregkh
picked up Thomas' fix for stable-6.1 and stable-6.5:
https://www.spinics.net/lists/stable-commits/msg321665.html
So, should we also forward this patch to gregkh, to make these laptops
work with the stable trees? What's the process for that?
Thanks,
-=[david]=-
Hi David,
On 10/29/23 14:30, David Lazar wrote:
> On Thu, 26 Oct 2023, Hans de Goede wrote:
>> I'll prep + send a fixes pull-req to Linus
>> with just this single patch tomorrow.
>
> The patch recently landed in Linus' tree, so thanks for that.
>
> I didn't realize that the fixes for this laptop family would be also
> considered for the stable trees, so I hadn't Cc-ed
> [email protected] in my original patch. But I now see that gregkh
> picked up Thomas' fix for stable-6.1 and stable-6.5:
>
> https://www.spinics.net/lists/stable-commits/msg321665.html
>
> So, should we also forward this patch to gregkh, to make these laptops
> work with the stable trees? What's the process for that?
Yes you should also submit the patch to the stable series.
To do this send the patch to [email protected] and at the top
of the body (so below the first line / subject) of the commit msg add:
commit 3bde7ec13c971445faade32172cb0b4370b841d9 upstream
So the entire commit msg should look like this:
"""
<original subject>
commit 3bde7ec13c971445faade32172cb0b4370b841d9 upstream
<original
body>
"""
And then submit the patch with this updated subject to
[email protected] and that's it.
Regards,
Hans