Message ID | 20230228221128.2560-1-mario.limonciello@amd.com |
---|---|
State | Accepted |
Commit | e2a56364485e7789e7b8f342637c7f3a219f7ede |
Headers | show |
Series | [v2] ACPI: x86: Add Cezanne to the list for forcing StorageD3Enable | expand |
On Tue, Feb 28, 2023 at 11:11 PM Mario Limonciello <mario.limonciello@amd.com> wrote: > > commit 018d6711c26e4 ("ACPI: x86: Add a quirk for Dell Inspiron 14 2-in-1 > for StorageD3Enable") introduced a quirk to allow a system with ambiguous > use of _ADR 0 to force StorageD3Enable. > > It was reported that several more Dell systems suffered the same symptoms. > As the list is continuing to grow but these are all Cezanne systems, > instead add Cezanne to the CPU list to apply the StorageD3Enable property > and remove the whole list. > > It was also reported that an HP system only has StorageD3Enable on the ACPI > device for the first NVME disk, not the second. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217003 > Link: https://bugzilla.kernel.org/show_bug.cgi?id=216773 > Reported-by: David Alvarez Lombardi <dqalombardi@proton.me> > Reported-by: dbilios@stdio.gr > Reported-and-tested-by: Elvis Angelaccio <elvis.angelaccio@kde.org> > Tested-by: victor.bonnelle@proton.me > Tested-by: hurricanepootis@protonmail.com > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> > --- > v1->v2: > * Switch to using CPU rather than an ever growing list > > drivers/acpi/x86/utils.c | 37 +++++++++++++------------------------ > 1 file changed, 13 insertions(+), 24 deletions(-) > > diff --git a/drivers/acpi/x86/utils.c b/drivers/acpi/x86/utils.c > index d7d3f1669d4c..788b29ed9fb3 100644 > --- a/drivers/acpi/x86/utils.c > +++ b/drivers/acpi/x86/utils.c > @@ -200,39 +200,28 @@ bool acpi_device_override_status(struct acpi_device *adev, unsigned long long *s > * a hardcoded allowlist for D3 support, which was used for these platforms. > * > * This allows quirking on Linux in a similar fashion. > + * > + * Cezanne systems shouldn't *normally* need this as the BIOS includes > + * StorageD3Enable. But for two reasons we have added it. > + * 1) The BIOS on a number of Dell systems have ambiguity > + * between the same value used for _ADR on ACPI nodes GPP1.DEV0 and GPP1.NVME. > + * GPP1.NVME is needed to get StorageD3Enable node set properly. > + * https://bugzilla.kernel.org/show_bug.cgi?id=216440 > + * https://bugzilla.kernel.org/show_bug.cgi?id=216773 > + * https://bugzilla.kernel.org/show_bug.cgi?id=217003 > + * 2) On at least one HP system StorageD3Enable is missing on the second NVME > + disk in the system. > */ > static const struct x86_cpu_id storage_d3_cpu_ids[] = { > X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 96, NULL), /* Renoir */ > X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 104, NULL), /* Lucienne */ > - {} > -}; > - > -static const struct dmi_system_id force_storage_d3_dmi[] = { > - { > - /* > - * _ADR is ambiguous between GPP1.DEV0 and GPP1.NVME > - * but .NVME is needed to get StorageD3Enable node > - * https://bugzilla.kernel.org/show_bug.cgi?id=216440 > - */ > - .matches = { > - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 14 7425 2-in-1"), > - } > - }, > - { > - .matches = { > - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 16 5625"), > - } > - }, > + X86_MATCH_VENDOR_FAM_MODEL(AMD, 25, 80, NULL), /* Cezanne */ > {} > }; > > bool force_storage_d3(void) > { > - const struct dmi_system_id *dmi_id = dmi_first_match(force_storage_d3_dmi); > - > - return dmi_id || x86_match_cpu(storage_d3_cpu_ids); > + return x86_match_cpu(storage_d3_cpu_ids); > } > > /* > -- Applied as 6.3-rc material, thanks!
diff --git a/drivers/acpi/x86/utils.c b/drivers/acpi/x86/utils.c index d7d3f1669d4c..788b29ed9fb3 100644 --- a/drivers/acpi/x86/utils.c +++ b/drivers/acpi/x86/utils.c @@ -200,39 +200,28 @@ bool acpi_device_override_status(struct acpi_device *adev, unsigned long long *s * a hardcoded allowlist for D3 support, which was used for these platforms. * * This allows quirking on Linux in a similar fashion. + * + * Cezanne systems shouldn't *normally* need this as the BIOS includes + * StorageD3Enable. But for two reasons we have added it. + * 1) The BIOS on a number of Dell systems have ambiguity + * between the same value used for _ADR on ACPI nodes GPP1.DEV0 and GPP1.NVME. + * GPP1.NVME is needed to get StorageD3Enable node set properly. + * https://bugzilla.kernel.org/show_bug.cgi?id=216440 + * https://bugzilla.kernel.org/show_bug.cgi?id=216773 + * https://bugzilla.kernel.org/show_bug.cgi?id=217003 + * 2) On at least one HP system StorageD3Enable is missing on the second NVME + disk in the system. */ static const struct x86_cpu_id storage_d3_cpu_ids[] = { X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 96, NULL), /* Renoir */ X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 104, NULL), /* Lucienne */ - {} -}; - -static const struct dmi_system_id force_storage_d3_dmi[] = { - { - /* - * _ADR is ambiguous between GPP1.DEV0 and GPP1.NVME - * but .NVME is needed to get StorageD3Enable node - * https://bugzilla.kernel.org/show_bug.cgi?id=216440 - */ - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 14 7425 2-in-1"), - } - }, - { - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 16 5625"), - } - }, + X86_MATCH_VENDOR_FAM_MODEL(AMD, 25, 80, NULL), /* Cezanne */ {} }; bool force_storage_d3(void) { - const struct dmi_system_id *dmi_id = dmi_first_match(force_storage_d3_dmi); - - return dmi_id || x86_match_cpu(storage_d3_cpu_ids); + return x86_match_cpu(storage_d3_cpu_ids); } /*