2023-10-25 19:30:59

by David Lazar

[permalink] [raw]
Subject: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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


2023-10-25 22:07:23

by Mario Limonciello

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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",

2023-10-25 22:39:41

by Mark Pearson

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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",

2023-10-26 08:12:07

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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",

2023-10-26 12:38:03

by David Lazar

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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]=-

2023-10-29 13:31:41

by David Lazar

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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]=-

2023-10-29 14:24:06

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: Add s2idle quirk for more Lenovo laptops

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