From: "Doug Smythies" <dsmythies@telus.net>
To: "'Rafael J. Wysocki'" <rjw@rjwysocki.net>
Cc: "'Srinivas Pandruvada'" <srinivas.pandruvada@linux.intel.com>,
"'LKML'" <linux-kernel@vger.kernel.org>,
"'Linux PM'" <linux-pm@vger.kernel.org>
Subject: RE: [PATCH 3/4] cpufreq: intel_pstate: Add ->offline and ->online callbacks
Date: Fri, 21 Aug 2020 17:47:16 -0700 [thread overview]
Message-ID: <000501d6781d$c953def0$5bfb9cd0$@net> (raw)
In-Reply-To: <1879185.C8Vd3vmt8n@kreacher>
Hi Rafael,
Just annoying typo type feedback.
On 2020.08.20 09:38 Rafael J. Wysocki wrote:
>
> From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
>
> Add ->offline and ->online driver callbacksto to do the cleanup
"to to" and suggest this:
Add ->offline and ->online driver callbacks to cleanup
> before taking a CPU offline and to restore its working configuration
> when it goes back online, respectively, to avoid invoking the ->init
> callback on every CPU online which is quite a bit of unnecessary
> overhead.
>
> Define ->offline and ->online so that they can be used in the
> passive as well as in the active mode and because ->offline will
passive mode
> do the majority of ->stop_cpu work, the passive mode does not
> need that callback any more, so drop it.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/cpufreq/intel_pstate.c | 38 ++++++++++++++++++++++++++++------
> 1 file changed, 32 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 3d18934fa975..aca0587b176f 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -2297,28 +2297,51 @@ static int intel_pstate_verify_policy(struct cpufreq_policy_data *policy)
> return 0;
> }
>
> -static void intel_cpufreq_stop_cpu(struct cpufreq_policy *policy)
> +static int intel_pstate_cpu_offline(struct cpufreq_policy *policy)
> {
> + pr_debug("CPU %d going offline\n", policy->cpu);
> +
> + intel_pstate_exit_perf_limits(policy);
> +
> + /*
> + * If the CPU is an SMT thread and it goes offline with the performance
> + * settings different from the minimum, it will prevent its sibling
> + * from getting to lower performance levels, so force the minimum
> + * performance on CPU offline to prevent that form happening.
form/from
> + */
> if (hwp_active)
> intel_pstate_hwp_force_min_perf(policy->cpu);
> else
> intel_pstate_set_min_pstate(all_cpu_data[policy->cpu]);
> +
> + return 0;
> +}
> +
> +static int intel_pstate_cpu_online(struct cpufreq_policy *policy)
> +{
> + pr_debug("CPU %d going online\n", policy->cpu);
> +
> + intel_pstate_init_acpi_perf_limits(policy);
> +
> + if (hwp_active)
> + wrmsrl_on_cpu(policy->cpu, MSR_HWP_REQUEST,
> + all_cpu_data[policy->cpu]->hwp_req_cached);
> +
> + return 0;
> }
>
> static void intel_pstate_stop_cpu(struct cpufreq_policy *policy)
> {
> - pr_debug("CPU %d exiting\n", policy->cpu);
> + pr_debug("CPU %d stopping\n", policy->cpu);
>
> intel_pstate_clear_update_util_hook(policy->cpu);
> if (hwp_active)
> intel_pstate_hwp_save_state(policy);
> -
> - intel_cpufreq_stop_cpu(policy);
> }
>
> static int intel_pstate_cpu_exit(struct cpufreq_policy *policy)
> {
> - intel_pstate_exit_perf_limits(policy);
> + pr_debug("CPU %d exiting\n", policy->cpu);
>
> policy->fast_switch_possible = false;
>
> @@ -2398,6 +2421,8 @@ static struct cpufreq_driver intel_pstate = {
> .init = intel_pstate_cpu_init,
> .exit = intel_pstate_cpu_exit,
> .stop_cpu = intel_pstate_stop_cpu,
> + .offline = intel_pstate_cpu_offline,
> + .online = intel_pstate_cpu_online,
> .update_limits = intel_pstate_update_limits,
> .name = "intel_pstate",
> };
> @@ -2652,7 +2677,8 @@ static struct cpufreq_driver intel_cpufreq = {
> .fast_switch = intel_cpufreq_fast_switch,
> .init = intel_cpufreq_cpu_init,
> .exit = intel_cpufreq_cpu_exit,
> - .stop_cpu = intel_cpufreq_stop_cpu,
> + .offline = intel_pstate_cpu_offline,
> + .online = intel_pstate_cpu_online,
> .update_limits = intel_pstate_update_limits,
> .name = "intel_cpufreq",
> };
> --
> 2.26.2
>
>
next prev parent reply other threads:[~2020-08-22 0:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-20 16:35 [PATCH 0/4] cpufreq: intel_pstate: Address some HWP-related oddities Rafael J. Wysocki
2020-08-20 16:36 ` [PATCH 1/4] cpufreq: intel_pstate: Refuse to turn off with HWP enabled Rafael J. Wysocki
2020-08-20 16:37 ` [PATCH 2/4] cpufreq: intel_pstate: Always return last EPP value from sysfs Rafael J. Wysocki
2020-08-20 16:38 ` [PATCH 3/4] cpufreq: intel_pstate: Add ->offline and ->online callbacks Rafael J. Wysocki
2020-08-22 0:47 ` Doug Smythies [this message]
2020-08-24 13:40 ` [PATCH v2 " Rafael J. Wysocki
2020-08-20 16:38 ` [PATCH 4/4] cpufreq: intel_pstate: Free memory only when turning off Rafael J. Wysocki
2020-08-22 0:47 ` [PATCH 0/4] cpufreq: intel_pstate: Address some HWP-related oddities Doug Smythies
2020-08-24 14:06 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='000501d6781d$c953def0$5bfb9cd0$@net' \
--to=dsmythies@telus.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.