diff mbox series

[v2] ACPI: x86: Add Cezanne to the list for forcing StorageD3Enable

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

Commit Message

Mario Limonciello Feb. 28, 2023, 10:11 p.m. UTC
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(-)

Comments

Rafael J. Wysocki March 1, 2023, 6:26 p.m. UTC | #1
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 mbox series

Patch

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);
 }
 
 /*