2024-12-10 00:17:37 +03:00
|
|
|
From f077f4265c59f5d417aa40eaf82bb632c891b221 Mon Sep 17 00:00:00 2001
|
2024-10-29 05:12:06 +03:00
|
|
|
From: Perry Yuan <perry.yuan@amd.com>
|
|
|
|
Date: Fri, 9 Aug 2024 14:09:05 +0800
|
|
|
|
Subject: cpufreq: amd-pstate: add quirk for Ryzen 3000 series processor
|
|
|
|
|
|
|
|
The Ryzen 3000 series processors have been observed lacking the
|
|
|
|
nominal_freq and lowest_freq parameters in their ACPI tables. This
|
|
|
|
absence causes issues with loading the amd-pstate driver on these
|
|
|
|
systems. Introduces a fix to resolve the dependency issue
|
|
|
|
by adding a quirk specifically for the Ryzen 3000 series.
|
|
|
|
|
|
|
|
Reported-by: David Wang <00107082@163.com>
|
|
|
|
Signed-off-by: Perry Yuan <perry.yuan@amd.com>
|
|
|
|
---
|
|
|
|
drivers/cpufreq/amd-pstate.c | 30 ++++++++++++++++++++++++++++++
|
|
|
|
1 file changed, 30 insertions(+)
|
|
|
|
|
|
|
|
--- a/drivers/cpufreq/amd-pstate.c
|
|
|
|
+++ b/drivers/cpufreq/amd-pstate.c
|
2024-12-10 00:17:37 +03:00
|
|
|
@@ -136,6 +136,11 @@ static struct quirk_entry quirk_amd_7k62
|
2024-10-29 05:12:06 +03:00
|
|
|
.lowest_freq = 550,
|
|
|
|
};
|
|
|
|
|
|
|
|
+static struct quirk_entry quirk_amd_mts = {
|
|
|
|
+ .nominal_freq = 3600,
|
|
|
|
+ .lowest_freq = 550,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
static int __init dmi_matched_7k62_bios_bug(const struct dmi_system_id *dmi)
|
|
|
|
{
|
|
|
|
/**
|
2024-12-10 00:17:37 +03:00
|
|
|
@@ -152,6 +157,21 @@ static int __init dmi_matched_7k62_bios_
|
2024-10-29 05:12:06 +03:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
+static int __init dmi_matched_mts_bios_bug(const struct dmi_system_id *dmi)
|
|
|
|
+{
|
|
|
|
+ /**
|
|
|
|
+ * match the broken bios for ryzen 3000 series processor support CPPC V2
|
|
|
|
+ * broken BIOS lack of nominal_freq and lowest_freq capabilities
|
|
|
|
+ * definition in ACPI tables
|
|
|
|
+ */
|
|
|
|
+ if (cpu_feature_enabled(X86_FEATURE_ZEN2)) {
|
|
|
|
+ quirks = dmi->driver_data;
|
|
|
|
+ pr_info("Overriding nominal and lowest frequencies for %s\n", dmi->ident);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
static const struct dmi_system_id amd_pstate_quirks_table[] __initconst = {
|
|
|
|
{
|
|
|
|
.callback = dmi_matched_7k62_bios_bug,
|
2024-12-10 00:17:37 +03:00
|
|
|
@@ -162,6 +182,16 @@ static const struct dmi_system_id amd_ps
|
2024-10-29 05:12:06 +03:00
|
|
|
},
|
|
|
|
.driver_data = &quirk_amd_7k62,
|
|
|
|
},
|
|
|
|
+ {
|
|
|
|
+ .callback = dmi_matched_mts_bios_bug,
|
|
|
|
+ .ident = "AMD Ryzen 3000",
|
|
|
|
+ .matches = {
|
|
|
|
+ DMI_MATCH(DMI_PRODUCT_NAME, "B450M MORTAR MAX (MS-7B89)"),
|
|
|
|
+ DMI_MATCH(DMI_BIOS_RELEASE, "06/10/2020"),
|
|
|
|
+ DMI_MATCH(DMI_BIOS_VERSION, "5.14"),
|
|
|
|
+ },
|
|
|
|
+ .driver_data = &quirk_amd_mts,
|
|
|
|
+ },
|
|
|
|
{}
|
|
|
|
};
|
|
|
|
MODULE_DEVICE_TABLE(dmi, amd_pstate_quirks_table);
|