platform/x86: Add s2idle quirk for more Lenovo laptops
Subsystems (2)
PATCH 1/1 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.
--- drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++ 1 file changed, 73 insertions(+)
drivers/platform/x86/amd/pmc/pmc-quirks.c +73 -0
@@ -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",
Signature · 1 line
2.39.2
Quoted 14 lines · David Lazar
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_FAULTdomain=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.
Quoted 5 lines
Suggested-by Mario Limonciello <[email protected]>Suggested-by Mark Pearson <[email protected]>Signed-off-by David Lazar <[email protected]>---
Quoted 87 lines
drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++ 1 file changed, 73 insertions(+)drivers/platform/x86/amd/pmc/pmc-quirks.c +73
-0@@ -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",
Mark Pearson
Reviewed-byThanks David for doing this.
Quoted 15 lines · Mario Limonciello
Quoted 14 lines · David Lazar
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_FAULTdomain=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.
Quoted 7 lines
Quoted 5 lines
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]>
Quoted 88 lines
Quoted 88 lines
drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++ 1 file changed, 73 insertions(+)drivers/platform/x86/amd/pmc/pmc-quirks.c +73
-0@@ -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,
Quoted 14 lines · David Lazar
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_FAULTdomain=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.
Quoted 4 lines
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
Quoted 88 lines
--- drivers/platform/x86/amd/pmc/pmc-quirks.c | 73 +++++++++++++++++++++++ 1 file changed, 73 insertions(+)drivers/platform/x86/amd/pmc/pmc-quirks.c +73
-0@@ -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",
Quoted 2 lines · Hans de Goede
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]=-
Quoted 2 lines · Hans de Goede
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,
Quoted 11 lines · David Lazar
Quoted 2 lines · Hans de Goede
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:
Quoted 4 lines
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