2020-07-13 14:00:04

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH] cpufreq: intel_pstate: Fix active mode setting from command line

From: Rafael J. Wysocki <[email protected]>

If intel_pstate starts in the passive mode by default (that happens
when the processor in the system doesn't support HWP), passing
intel_pstate=active in the kernel command line doesn't work, so
fix that.

Fixes: 33aa46f252c7 ("cpufreq: intel_pstate: Use passive mode by default without HWP")
Reported-by: Doug Smythies <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
---
drivers/cpufreq/intel_pstate.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Index: linux-pm/drivers/cpufreq/intel_pstate.c
===================================================================
--- linux-pm.orig/drivers/cpufreq/intel_pstate.c
+++ linux-pm/drivers/cpufreq/intel_pstate.c
@@ -2534,7 +2534,7 @@ static struct cpufreq_driver intel_cpufr
.name = "intel_cpufreq",
};

-static struct cpufreq_driver *default_driver = &intel_pstate;
+static struct cpufreq_driver *default_driver;

static void intel_pstate_driver_cleanup(void)
{
@@ -2828,6 +2828,7 @@ static int __init intel_pstate_init(void
hwp_active++;
hwp_mode_bdw = id->driver_data;
intel_pstate.attr = hwp_cpufreq_attrs;
+ default_driver = &intel_pstate;
goto hwp_cpu_matched;
}
} else {
@@ -2845,7 +2846,8 @@ static int __init intel_pstate_init(void
return -ENODEV;
}
/* Without HWP start in the passive mode. */
- default_driver = &intel_cpufreq;
+ if (!default_driver)
+ default_driver = &intel_cpufreq;

hwp_cpu_matched:
/*
@@ -2899,6 +2901,8 @@ static int __init intel_pstate_setup(cha

if (!strcmp(str, "disable")) {
no_load = 1;
+ } else if (!strcmp(str, "active")) {
+ default_driver = &intel_pstate;
} else if (!strcmp(str, "passive")) {
default_driver = &intel_cpufreq;
no_hwp = 1;




2020-07-13 15:25:16

by Doug Smythies

[permalink] [raw]
Subject: RE: [PATCH] cpufreq: intel_pstate: Fix active mode setting from command line

Hi Rafael,

Thank you.

On 2020.07.13 06:59 Rafael J. Wysocki wrote:
>
> From: Rafael J. Wysocki <[email protected]>
>
> If intel_pstate starts in the passive mode by default (that happens
> when the processor in the system doesn't support HWP), passing
> intel_pstate=active in the kernel command line doesn't work, so
> fix that.
>
> Fixes: 33aa46f252c7 ("cpufreq: intel_pstate: Use passive mode by default without HWP")
> Reported-by: Doug Smythies <[email protected]>
> Signed-off-by: Rafael J. Wysocki <[email protected]>

Acked-by: Doug Smythies <[email protected]>

> ---
> drivers/cpufreq/intel_pstate.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> Index: linux-pm/drivers/cpufreq/intel_pstate.c
> ===================================================================
> --- linux-pm.orig/drivers/cpufreq/intel_pstate.c
> +++ linux-pm/drivers/cpufreq/intel_pstate.c
> @@ -2534,7 +2534,7 @@ static struct cpufreq_driver intel_cpufr
> .name = "intel_cpufreq",
> };
>
> -static struct cpufreq_driver *default_driver = &intel_pstate;
> +static struct cpufreq_driver *default_driver;
>
> static void intel_pstate_driver_cleanup(void)
> {
> @@ -2828,6 +2828,7 @@ static int __init intel_pstate_init(void
> hwp_active++;
> hwp_mode_bdw = id->driver_data;
> intel_pstate.attr = hwp_cpufreq_attrs;
> + default_driver = &intel_pstate;
> goto hwp_cpu_matched;
> }
> } else {
> @@ -2845,7 +2846,8 @@ static int __init intel_pstate_init(void
> return -ENODEV;
> }
> /* Without HWP start in the passive mode. */
> - default_driver = &intel_cpufreq;
> + if (!default_driver)
> + default_driver = &intel_cpufreq;
>
> hwp_cpu_matched:
> /*
> @@ -2899,6 +2901,8 @@ static int __init intel_pstate_setup(cha
>
> if (!strcmp(str, "disable")) {
> no_load = 1;
> + } else if (!strcmp(str, "active")) {
> + default_driver = &intel_pstate;
> } else if (!strcmp(str, "passive")) {
> default_driver = &intel_cpufreq;
> no_hwp = 1;
>