Message ID | 41d5573ed19525f95d79d2af46bd1cce5779d6a1.1718095377.git.perry.yuan@amd.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Mario Limonciello |
Headers | show |
Series | AMD Pstate Driver Fixes and Improvements | expand |
On 6/11/2024 03:52, Perry Yuan wrote: > Add CPU ID checking in case the driver attempt to load on systems where > CPPC functionality is unavailable. And the warning message will not > be shown if CPPC is not supported. > > It will also print debug message if the CPU has no CPPC support that > helps to debug the driver loading failure issue. > > Reported-by: Paul Menzel <pmenzel@molgen.mpg.de> > Closes: https://lore.kernel.org/linux-pm/CYYPR12MB8655D32EA18574C9497E888A9C122@CYYPR12MB8655.namprd12.prod.outlook.com/T/#t > Signed-off-by: Perry Yuan <perry.yuan@amd.com> > Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com> Acked-by: Mario Limonciello <mario.limonciello@amd.com> > --- > drivers/cpufreq/amd-pstate.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c > index 36b1964ca8d3..f166b3b94091 100644 > --- a/drivers/cpufreq/amd-pstate.c > +++ b/drivers/cpufreq/amd-pstate.c > @@ -1740,6 +1740,20 @@ static int __init amd_pstate_set_driver(int mode_idx) > return -EINVAL; > } > > +/** > + * CPPC function is not supported for family ID 17H with model_ID ranging from 0x10 to 0x2F. > + * show the debug message that helps to check if the CPU has CPPC support for loading issue. > + */ > +static bool amd_cppc_supported(void) > +{ > + if ((boot_cpu_data.x86 == 0x17) && (boot_cpu_data.x86_model < 0x30)) { > + pr_debug_once("CPPC feature is not supported by the processor\n"); > + return false; > + } > + > + return true; > +} > + > static int __init amd_pstate_init(void) > { > struct device *dev_root; > @@ -1748,6 +1762,11 @@ static int __init amd_pstate_init(void) > if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) > return -ENODEV; > > + /* show debug message only if CPPC is not supported */ > + if (!amd_cppc_supported()) > + return -EOPNOTSUPP; > + > + /* show warning message when BIOS broken or ACPI disabled */ > if (!acpi_cpc_valid()) { > pr_warn_once("the _CPC object is not present in SBIOS or ACPI disabled\n"); > return -ENODEV;
diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index 36b1964ca8d3..f166b3b94091 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -1740,6 +1740,20 @@ static int __init amd_pstate_set_driver(int mode_idx) return -EINVAL; } +/** + * CPPC function is not supported for family ID 17H with model_ID ranging from 0x10 to 0x2F. + * show the debug message that helps to check if the CPU has CPPC support for loading issue. + */ +static bool amd_cppc_supported(void) +{ + if ((boot_cpu_data.x86 == 0x17) && (boot_cpu_data.x86_model < 0x30)) { + pr_debug_once("CPPC feature is not supported by the processor\n"); + return false; + } + + return true; +} + static int __init amd_pstate_init(void) { struct device *dev_root; @@ -1748,6 +1762,11 @@ static int __init amd_pstate_init(void) if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) return -ENODEV; + /* show debug message only if CPPC is not supported */ + if (!amd_cppc_supported()) + return -EOPNOTSUPP; + + /* show warning message when BIOS broken or ACPI disabled */ if (!acpi_cpc_valid()) { pr_warn_once("the _CPC object is not present in SBIOS or ACPI disabled\n"); return -ENODEV;