platform-driver-x86.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug
@ 2024-04-10 14:09 Mario Limonciello
  2024-04-10 14:09 ` [PATCH 2/3] platform/x86/amd: pmf: Add infrastructure for quirking supported funcs Mario Limonciello
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Mario Limonciello @ 2024-04-10 14:09 UTC (permalink / raw)
  To: Hans de Goede, Ilpo Järvinen
  Cc: open list:X86 PLATFORM DRIVERS, Shyam Sundar S K, al0uette,
	Mario Limonciello

ASUS ROG Zephyrus G14 doesn't have _CRS in AMDI0102 device and so
there are no resources to walk.  This is expected behavior because
it doesn't support Smart PC.  Decrease error message to debug.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=218685
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/platform/x86/amd/pmf/acpi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/x86/amd/pmf/acpi.c
index d0cf46e2fc8e..60fc71c9fb0f 100644
--- a/drivers/platform/x86/amd/pmf/acpi.c
+++ b/drivers/platform/x86/amd/pmf/acpi.c
@@ -437,7 +437,7 @@ int apmf_check_smart_pc(struct amd_pmf_dev *pmf_dev)
 
 	status = acpi_walk_resources(ahandle, METHOD_NAME__CRS, apmf_walk_resources, pmf_dev);
 	if (ACPI_FAILURE(status)) {
-		dev_err(pmf_dev->dev, "acpi_walk_resources failed :%d\n", status);
+		dev_dbg(pmf_dev->dev, "acpi_walk_resources failed :%d\n", status);
 		return -EINVAL;
 	}
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/3] platform/x86/amd: pmf: Add infrastructure for quirking supported funcs
  2024-04-10 14:09 [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Mario Limonciello
@ 2024-04-10 14:09 ` Mario Limonciello
  2024-04-10 14:09 ` [PATCH 3/3] platform/x86/amd: pmf: Add quirk for ROG Zephyrus G14 Mario Limonciello
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Mario Limonciello @ 2024-04-10 14:09 UTC (permalink / raw)
  To: Hans de Goede, Ilpo Järvinen
  Cc: open list:X86 PLATFORM DRIVERS, Shyam Sundar S K, al0uette,
	Mario Limonciello

In the event of a BIOS bug add infrastructure that will be utilized
to override the return value for supported_funcs to avoid enabling
features.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/platform/x86/amd/pmf/Makefile     |  2 +-
 drivers/platform/x86/amd/pmf/acpi.c       |  5 ++-
 drivers/platform/x86/amd/pmf/core.c       |  1 +
 drivers/platform/x86/amd/pmf/pmf-quirks.c | 43 +++++++++++++++++++++++
 drivers/platform/x86/amd/pmf/pmf.h        |  3 ++
 5 files changed, 52 insertions(+), 2 deletions(-)
 create mode 100644 drivers/platform/x86/amd/pmf/pmf-quirks.c

diff --git a/drivers/platform/x86/amd/pmf/Makefile b/drivers/platform/x86/amd/pmf/Makefile
index 6b26e48ce8ad..7d6079b02589 100644
--- a/drivers/platform/x86/amd/pmf/Makefile
+++ b/drivers/platform/x86/amd/pmf/Makefile
@@ -7,4 +7,4 @@
 obj-$(CONFIG_AMD_PMF) += amd-pmf.o
 amd-pmf-objs := core.o acpi.o sps.o \
 		auto-mode.o cnqf.o \
-		tee-if.o spc.o
+		tee-if.o spc.o pmf-quirks.o
diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/x86/amd/pmf/acpi.c
index 60fc71c9fb0f..1157ec148880 100644
--- a/drivers/platform/x86/amd/pmf/acpi.c
+++ b/drivers/platform/x86/amd/pmf/acpi.c
@@ -343,7 +343,10 @@ static int apmf_if_verify_interface(struct amd_pmf_dev *pdev)
 	if (err)
 		return err;
 
-	pdev->supported_func = output.supported_functions;
+	/* only set if not already set by a quirk */
+	if (!pdev->supported_func)
+		pdev->supported_func = output.supported_functions;
+
 	dev_dbg(pdev->dev, "supported functions:0x%x notifications:0x%x version:%u\n",
 		output.supported_functions, output.notification_mask, output.version);
 
diff --git a/drivers/platform/x86/amd/pmf/core.c b/drivers/platform/x86/amd/pmf/core.c
index 5d4f80698a8b..64e6e34a2a9a 100644
--- a/drivers/platform/x86/amd/pmf/core.c
+++ b/drivers/platform/x86/amd/pmf/core.c
@@ -445,6 +445,7 @@ static int amd_pmf_probe(struct platform_device *pdev)
 	mutex_init(&dev->lock);
 	mutex_init(&dev->update_mutex);
 
+	amd_pmf_quirks_init(dev);
 	apmf_acpi_init(dev);
 	platform_set_drvdata(pdev, dev);
 	amd_pmf_dbgfs_register(dev);
diff --git a/drivers/platform/x86/amd/pmf/pmf-quirks.c b/drivers/platform/x86/amd/pmf/pmf-quirks.c
new file mode 100644
index 000000000000..9f3790eaaa30
--- /dev/null
+++ b/drivers/platform/x86/amd/pmf/pmf-quirks.c
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * AMD Platform Management Framework Driver Quirks
+ *
+ * Copyright (c) 2024, Advanced Micro Devices, Inc.
+ * All Rights Reserved.
+ *
+ * Author: Mario Limonciello <mario.limonciello@amd.com>
+ */
+
+#include <linux/dmi.h>
+
+#include "pmf.h"
+
+struct quirk_entry {
+	u32 supported_func;
+};
+
+static struct quirk_entry quirk_no_sps_bug = {
+	.supported_func = 0x4003,
+};
+
+static const struct dmi_system_id fwbug_list[] = {
+	{}
+};
+
+void amd_pmf_quirks_init(struct amd_pmf_dev *dev)
+{
+	const struct dmi_system_id *dmi_id;
+	struct quirk_entry *quirks;
+
+	dmi_id = dmi_first_match(fwbug_list);
+	if (!dmi_id)
+		return;
+
+	quirks = dmi_id->driver_data;
+	if (quirks->supported_func) {
+		dev->supported_func = quirks->supported_func;
+		pr_info("Using supported funcs quirk to avoid %s platform firmware bug\n",
+			dmi_id->ident);
+	}
+}
+
diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h
index 8c4df5753f40..eeedd0c0395a 100644
--- a/drivers/platform/x86/amd/pmf/pmf.h
+++ b/drivers/platform/x86/amd/pmf/pmf.h
@@ -720,4 +720,7 @@ int apmf_check_smart_pc(struct amd_pmf_dev *pmf_dev);
 void amd_pmf_populate_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *in);
 void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *in);
 
+/* Quirk infrastructure */
+void amd_pmf_quirks_init(struct amd_pmf_dev *dev);
+
 #endif /* PMF_H */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/3] platform/x86/amd: pmf: Add quirk for ROG Zephyrus G14
  2024-04-10 14:09 [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Mario Limonciello
  2024-04-10 14:09 ` [PATCH 2/3] platform/x86/amd: pmf: Add infrastructure for quirking supported funcs Mario Limonciello
@ 2024-04-10 14:09 ` Mario Limonciello
  2024-04-15 13:53 ` [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Hans de Goede
  2024-04-16 12:31 ` Ilpo Järvinen
  3 siblings, 0 replies; 5+ messages in thread
From: Mario Limonciello @ 2024-04-10 14:09 UTC (permalink / raw)
  To: Hans de Goede, Ilpo Järvinen
  Cc: open list:X86 PLATFORM DRIVERS, Shyam Sundar S K, al0uette,
	Mario Limonciello

ROG Zephyrus G14 advertises support for SPS notifications to the
BIOS but doesn't actually use them. Instead the asus-nb-wmi driver
utilizes such events.

Add a quirk to prevent the system from registering for ACPI platform
profile when this system is found to avoid conflicts.

Reported-by: al0uette@outlook.com
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218685
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/platform/x86/amd/pmf/pmf-quirks.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/platform/x86/amd/pmf/pmf-quirks.c b/drivers/platform/x86/amd/pmf/pmf-quirks.c
index 9f3790eaaa30..0b2eb0ae85fe 100644
--- a/drivers/platform/x86/amd/pmf/pmf-quirks.c
+++ b/drivers/platform/x86/amd/pmf/pmf-quirks.c
@@ -21,6 +21,14 @@ static struct quirk_entry quirk_no_sps_bug = {
 };
 
 static const struct dmi_system_id fwbug_list[] = {
+	{
+		.ident = "ROG Zephyrus G14",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "GA403UV"),
+		},
+		.driver_data = &quirk_no_sps_bug,
+	},
 	{}
 };
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug
  2024-04-10 14:09 [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Mario Limonciello
  2024-04-10 14:09 ` [PATCH 2/3] platform/x86/amd: pmf: Add infrastructure for quirking supported funcs Mario Limonciello
  2024-04-10 14:09 ` [PATCH 3/3] platform/x86/amd: pmf: Add quirk for ROG Zephyrus G14 Mario Limonciello
@ 2024-04-15 13:53 ` Hans de Goede
  2024-04-16 12:31 ` Ilpo Järvinen
  3 siblings, 0 replies; 5+ messages in thread
From: Hans de Goede @ 2024-04-15 13:53 UTC (permalink / raw)
  To: Mario Limonciello, Ilpo Järvinen
  Cc: open list:X86 PLATFORM DRIVERS, Shyam Sundar S K, al0uette

Hi Mario, Ilpo,

On 4/10/24 4:09 PM, Mario Limonciello wrote:
> ASUS ROG Zephyrus G14 doesn't have _CRS in AMDI0102 device and so
> there are no resources to walk.  This is expected behavior because
> it doesn't support Smart PC.  Decrease error message to debug.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=218685
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>

Thank you, this entire series looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

for the series.

Ilpo, since this fixes a bug and does so based on a DMI match,
so the chance for regressions is quite small I believe it
would be best to merge this through the pdx86/fixes branch,
can you pick this series up please ?

Regards,

Hans





> ---
>  drivers/platform/x86/amd/pmf/acpi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/x86/amd/pmf/acpi.c
> index d0cf46e2fc8e..60fc71c9fb0f 100644
> --- a/drivers/platform/x86/amd/pmf/acpi.c
> +++ b/drivers/platform/x86/amd/pmf/acpi.c
> @@ -437,7 +437,7 @@ int apmf_check_smart_pc(struct amd_pmf_dev *pmf_dev)
>  
>  	status = acpi_walk_resources(ahandle, METHOD_NAME__CRS, apmf_walk_resources, pmf_dev);
>  	if (ACPI_FAILURE(status)) {
> -		dev_err(pmf_dev->dev, "acpi_walk_resources failed :%d\n", status);
> +		dev_dbg(pmf_dev->dev, "acpi_walk_resources failed :%d\n", status);
>  		return -EINVAL;
>  	}
>  


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug
  2024-04-10 14:09 [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Mario Limonciello
                   ` (2 preceding siblings ...)
  2024-04-15 13:53 ` [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Hans de Goede
@ 2024-04-16 12:31 ` Ilpo Järvinen
  3 siblings, 0 replies; 5+ messages in thread
From: Ilpo Järvinen @ 2024-04-16 12:31 UTC (permalink / raw)
  To: Hans de Goede, Mario Limonciello
  Cc: open list:X86 PLATFORM DRIVERS, Shyam Sundar S K, al0uette

On Wed, 10 Apr 2024 09:09:54 -0500, Mario Limonciello wrote:

> ASUS ROG Zephyrus G14 doesn't have _CRS in AMDI0102 device and so
> there are no resources to walk.  This is expected behavior because
> it doesn't support Smart PC.  Decrease error message to debug.
> 
> 


Thank you for your contribution, it has been applied to my local
review-ilpo branch. Note it will show up in the public
platform-drivers-x86/review-ilpo branch only once I've pushed my
local branch there, which might take a while.

The list of commits applied:
[1/3] platform/x86/amd: pmf: Decrease error message to debug
      commit: 03cea821b82cbf0ee4a285f9dca6cc1d660dbef3
[2/3] platform/x86/amd: pmf: Add infrastructure for quirking supported funcs
      commit: ed13f622bcd594d6cefd6239b1722ed8b84ba98f
[3/3] platform/x86/amd: pmf: Add quirk for ROG Zephyrus G14
      commit: 9d893061ed68820de24b572d1e193b5e4737f2e0

--
 i.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-04-16 12:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-10 14:09 [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Mario Limonciello
2024-04-10 14:09 ` [PATCH 2/3] platform/x86/amd: pmf: Add infrastructure for quirking supported funcs Mario Limonciello
2024-04-10 14:09 ` [PATCH 3/3] platform/x86/amd: pmf: Add quirk for ROG Zephyrus G14 Mario Limonciello
2024-04-15 13:53 ` [PATCH 1/3] platform/x86/amd: pmf: Decrease error message to debug Hans de Goede
2024-04-16 12:31 ` Ilpo Järvinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).