All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: rjw@rjwysocki.net, mingo@redhat.com, bp@suse.de, x86@kernel.org,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-acpi@vger.kernel.org, peterz@infradead.org,
	tim.c.chen@linux.intel.com
Subject: Re: [PATCH v3 8/8] cpufreq: intel_pstate: Use CPPC to get max performance
Date: Sat, 10 Sep 2016 18:22:55 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.20.1609101654160.2804@nanos> (raw)
In-Reply-To: <1473373615-51427-9-git-send-email-srinivas.pandruvada@linux.intel.com>

On Thu, 8 Sep 2016, Srinivas Pandruvada wrote:
> +
> +/* Call set_sched_itmt from a work function to be able to use hotplug locks */

And why can't the function below not do that? Is the reader required to
figure that out himslf?

> +static void intel_pstste_sched_itmt_work_fn(struct work_struct *work)
> +{
> +	set_sched_itmt(true);
> +}
> +
> +static DECLARE_WORK(sched_itmt_work, intel_pstste_sched_itmt_work_fn);
>  
>  static bool intel_pstate_get_ppc_enable_status(void)
>  {
> @@ -377,14 +391,63 @@ static void intel_pstate_init_acpi_perf_limits(struct cpufreq_policy *policy)
>  	int ret;
>  	int i;
>  
> -	if (hwp_active)
> +	cpu = all_cpu_data[policy->cpu];
> +
> +	if (hwp_active) {

Please split this out into a seperate function.

> +		struct cppc_perf_caps *perf_caps;
> +
> +		cpu->cppc_data = kzalloc(sizeof(struct cppc_cpudata),
> +					 GFP_KERNEL);
> +		if (!cpu->cppc_data)
> +			return;
> +
> +		perf_caps = &cpu->cppc_data->perf_caps;
> +		ret = cppc_get_perf_caps(policy->cpu, perf_caps);
> +		if (ret) {
> +			kfree(cpu->cppc_data);
> +			return;
> +		}
> +
> +		cpu->valid_cppc_table = true;
> +		pr_debug("cpu:%d H:0x%x N:0x%x L:0x%x\n", policy->cpu,
> +			 perf_caps->highest_perf, perf_caps->nominal_perf,
> +			 perf_caps->lowest_perf);
> +
> +		cpumask_set_cpu(policy->cpu, &cppc_rd_cpu_mask);
> +		if (cpumask_subset(topology_core_cpumask(policy->cpu),
> +				   &cppc_rd_cpu_mask)) {
> +			int cpu_index;
> +			int max_prio;
> +			bool itmt_support = false;
> +
> +			cpu = all_cpu_data[0];
> +			max_prio = cpu->cppc_data->perf_caps.highest_perf;
> +			for_each_cpu(cpu_index, &cppc_rd_cpu_mask) {
> +				cpu = all_cpu_data[cpu_index];
> +				perf_caps = &cpu->cppc_data->perf_caps;
> +				if (max_prio != perf_caps->highest_perf) {
> +					itmt_support = true;
> +					break;
> +				}
> +			}

20 lines of magic logic w/o a userful comment. Darn, you yourself will have
forgotten the magic within 3 month ....

Thanks,

	tglx

  reply	other threads:[~2016-09-10 16:22 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-08 22:26 [PATCH v3 0/8] Support Intel® Turbo Boost Max Technology 3.0 Srinivas Pandruvada
2016-09-08 22:26 ` [PATCH v3 1/8] sched, x86: Add SD_ASYM_PACKING flags to x86 cpu topology for ITMT Srinivas Pandruvada
2016-09-10 13:10   ` Thomas Gleixner
2016-09-12 20:50     ` Tim Chen
2016-09-13  7:26       ` Peter Zijlstra
2016-09-19  9:11         ` Jiri Olsa
2016-09-19 16:01           ` Tim Chen
2016-09-10 13:13   ` Thomas Gleixner
2016-09-08 22:26 ` [PATCH v3 2/8] sched: Extend scheduler's asym packing Srinivas Pandruvada
2016-09-08 22:26 ` [PATCH v3 3/8] x86, cpu: provide a function topology_num_packages to enumerate #packages Srinivas Pandruvada
2016-09-10 13:28   ` Thomas Gleixner
2016-09-12 20:51     ` Tim Chen
2016-09-08 22:26 ` [PATCH v3 4/8] sched, x86: use arch_update_cpu_topology to indicate x86 need sched domain rebuild Srinivas Pandruvada
2016-09-10 16:20   ` Thomas Gleixner
2016-09-12 21:00     ` Tim Chen
2016-09-08 22:26 ` [PATCH v3 5/8] sched,x86: Enable Turbo Boost Max Technology Srinivas Pandruvada
2016-09-10 16:21   ` Thomas Gleixner
2016-09-12 21:34     ` Tim Chen
2016-09-08 22:26 ` [PATCH v3 6/8] acpi: bus: Enable HWP CPPC objects Srinivas Pandruvada
2016-09-08 22:26 ` [PATCH v3 7/8] acpi: bus: Set _OSC for diverse core support Srinivas Pandruvada
2016-09-08 22:26 ` [PATCH v3 8/8] cpufreq: intel_pstate: Use CPPC to get max performance Srinivas Pandruvada
2016-09-10 16:22   ` Thomas Gleixner [this message]
2016-09-12 22:34     ` Srinivas Pandruvada

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=alpine.DEB.2.20.1609101654160.2804@nanos \
    --to=tglx@linutronix.de \
    --cc=bp@suse.de \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=tim.c.chen@linux.intel.com \
    --cc=x86@kernel.org \
    /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.