commit 3bde7ec13c971445faade32172cb0b4370b841d9 upstream.
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 455cd867b85b ("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 mario.limonciello@amd.com Suggested-by: Mark Pearson mpearson-lenovo@squebb.ca Signed-off-by: David Lazar dlazar@gmail.com Reviewed-by: Mario Limonciello mario.limonciello@amd.com Reviewed-by: Mark Pearson mpearson-lenovo@squebb.ca Link: https://lore.kernel.org/r/ZTlsyOaFucF2pWrL@localhost Signed-off-by: Hans de Goede hdegoede@redhat.com --- drivers/platform/x86/amd/pmc-quirks.c | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+)
diff --git a/drivers/platform/x86/amd/pmc-quirks.c b/drivers/platform/x86/amd/pmc-quirks.c index ad702463a65d..6bbffb081053 100644 --- a/drivers/platform/x86/amd/pmc-quirks.c +++ b/drivers/platform/x86/amd/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 10/30/2023 16:12, David Lazar wrote:
commit 3bde7ec13c971445faade32172cb0b4370b841d9 upstream.
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 455cd867b85b ("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 mario.limonciello@amd.com Suggested-by: Mark Pearson mpearson-lenovo@squebb.ca Signed-off-by: David Lazar dlazar@gmail.com Reviewed-by: Mario Limonciello mario.limonciello@amd.com Reviewed-by: Mark Pearson mpearson-lenovo@squebb.ca Link: https://lore.kernel.org/r/ZTlsyOaFucF2pWrL@localhost Signed-off-by: Hans de Goede hdegoede@redhat.com
In this case are there modifications or is a clean cherry-pick? If it's not a clean cherry pick, why?
If it's just missing another system in the quirk list it's cleaner to backport that missing system and then have a clean pick.
drivers/platform/x86/amd/pmc-quirks.c | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+)
diff --git a/drivers/platform/x86/amd/pmc-quirks.c b/drivers/platform/x86/amd/pmc-quirks.c index ad702463a65d..6bbffb081053 100644 --- a/drivers/platform/x86/amd/pmc-quirks.c +++ b/drivers/platform/x86/amd/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 Mon, 30 Oct 2023 16:30, Mario Limonciello wrote:
In this case are there modifications or is a clean cherry-pick? If it's not a clean cherry pick, why?
This wasn't a clean cherry pick because the code has been moved from drivers/platform/x86/amd/pmc-quirks.c in 6.5.y to drivers/platform/x86/amd/pmc/pmc-quirks.c in 6.6.y.
If it's just missing another system in the quirk list it's cleaner to backport that missing system and then have a clean pick.
In this case (the 6.5 patch) there was no missing system in the quirks list. However, in the 6.1 version, the HP system *is* missing from the list (it looks like the patch that added that system wasn't backported to 6.1). But even adding that system wouldn't result in a clean cherry pick, given that the code had been moved once before from drivers/platform/x86/thinkpad_acpi.c in 6.1.y to drivers/platform/x86/amd/pmc-quirks.c in 6.5.y.
I had refrained from adding the missing system also in order to stay close to the upstream patch.
In any case, I see Sasha and Greg are already working on these patches, so I'll leave them alone for now, to not generate more work for them.
Thanks for your help, everyone, and please let me know if there's anything else I should do.
-=[david]=-
On 10/31/2023 06:10, David Lazar wrote:
On Mon, 30 Oct 2023 16:30, Mario Limonciello wrote:
In this case are there modifications or is a clean cherry-pick? If it's not a clean cherry pick, why?
This wasn't a clean cherry pick because the code has been moved from drivers/platform/x86/amd/pmc-quirks.c in 6.5.y to drivers/platform/x86/amd/pmc/pmc-quirks.c in 6.6.y.
If it's just missing another system in the quirk list it's cleaner to backport that missing system and then have a clean pick.
In this case (the 6.5 patch) there was no missing system in the quirks list. However, in the 6.1 version, the HP system *is* missing from the list (it looks like the patch that added that system wasn't backported to 6.1). But even adding that system wouldn't result in a clean cherry pick, given that the code had been moved once before from drivers/platform/x86/thinkpad_acpi.c in 6.1.y to drivers/platform/x86/amd/pmc-quirks.c in 6.5.y.
I had refrained from adding the missing system also in order to stay close to the upstream patch.
In any case, I see Sasha and Greg are already working on these patches, so I'll leave them alone for now, to not generate more work for them.
Thanks for your help, everyone, and please let me know if there's anything else I should do.
-=[david]=-
Got it, thanks I think you made the right decisions in both 6.1 and 6.5 versions.
linux-stable-mirror@lists.linaro.org