diff options
| author | Mario Limonciello <mario.limonciello@amd.com> | 2024-08-26 16:13:56 -0500 |
|---|---|---|
| committer | Mario Limonciello <mario.limonciello@amd.com> | 2024-09-11 10:23:23 -0500 |
| commit | ad4caad58d91d3293880f8074f7ad125490ce636 (patch) | |
| tree | 542a15e58468c0cfb284ad2b36d0f0b602572157 /arch/x86/kernel/acpi/cppc.c | |
| parent | x86/amd: Detect preferred cores in amd_get_boost_ratio_numerator() (diff) | |
| download | linux-ad4caad58d91d3293880f8074f7ad125490ce636.tar.gz linux-ad4caad58d91d3293880f8074f7ad125490ce636.zip | |
cpufreq: amd-pstate: Merge amd_pstate_highest_perf_set() into amd_get_boost_ratio_numerator()
The special case in amd_pstate_highest_perf_set() is the value used
for calculating the boost numerator. Merge this into
amd_get_boost_ratio_numerator() and then use that to calculate boost
ratio.
This allows dropping more special casing of the highest perf value.
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Diffstat (limited to 'arch/x86/kernel/acpi/cppc.c')
| -rw-r--r-- | arch/x86/kernel/acpi/cppc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/cppc.c b/arch/x86/kernel/acpi/cppc.c index df367bc35930..956984054bf3 100644 --- a/arch/x86/kernel/acpi/cppc.c +++ b/arch/x86/kernel/acpi/cppc.c @@ -9,6 +9,7 @@ #include <asm/processor.h> #include <asm/topology.h> +#define CPPC_HIGHEST_PERF_PERFORMANCE 196 #define CPPC_HIGHEST_PERF_PREFCORE 166 enum amd_pref_core { @@ -245,6 +246,21 @@ int amd_get_boost_ratio_numerator(unsigned int cpu, u64 *numerator) *numerator = boost_numerator; return 0; } + + /* + * For AMD CPUs with Family ID 19H and Model ID range 0x70 to 0x7f, + * the highest performance level is set to 196. + * https://bugzilla.kernel.org/show_bug.cgi?id=218759 + */ + if (cpu_feature_enabled(X86_FEATURE_ZEN4)) { + switch (boot_cpu_data.x86_model) { + case 0x70 ... 0x7f: + *numerator = CPPC_HIGHEST_PERF_PERFORMANCE; + return 0; + default: + break; + } + } *numerator = CPPC_HIGHEST_PERF_PREFCORE; return 0; |
