Re: [PATCH V8 3/7] cpufreq: amd-pstate: Enable amd-pstate preferred core supporting.

From: Peter Zijlstra
Date: Tue Oct 10 2023 - 06:36:48 EST


On Mon, Oct 09, 2023 at 10:49:28AM +0800, Meng Li wrote:

> +static void amd_pstate_init_prefcore(struct amd_cpudata *cpudata)
> +{
> + int ret;
> + u32 highest_perf;
> + static u32 max_highest_perf = 0, min_highest_perf = U32_MAX;
> +
> + ret = amd_pstate_get_highest_perf(cpudata->cpu, &highest_perf);
> + if (ret)
> + return;
> +
> + cpudata->hw_prefcore = true;
> + /* check if CPPC preferred core feature is enabled*/
> + if (highest_perf == AMD_PSTATE_MAX_CPPC_PERF) {
> + pr_debug("AMD CPPC preferred core is unsupported!\n");
> + cpudata->hw_prefcore = false;
> + return;
> + }
> +
> + if (!amd_pstate_prefcore)
> + return;
> +
> + /*
> + * The priorities can be set regardless of whether or not
> + * sched_set_itmt_support(true) has been called and it is valid to
> + * update them at any time after it has been called.
> + */
> + sched_set_itmt_core_prio(highest_perf, cpudata->cpu);

You still got the whole u32 vs int thing confused, I've only pointed
that out *TWICE* before.

Boris, can you pull out the clue hammer please?

> +
> + if (max_highest_perf <= min_highest_perf) {
> + if (highest_perf > max_highest_perf)
> + max_highest_perf = highest_perf;
> +
> + if (highest_perf < min_highest_perf)
> + min_highest_perf = highest_perf;
> +
> + if (max_highest_perf > min_highest_perf) {
> + /*
> + * This code can be run during CPU online under the
> + * CPU hotplug locks, so sched_set_itmt_support()
> + * cannot be called from here. Queue up a work item
> + * to invoke it.
> + */
> + schedule_work(&sched_prefcore_work);
> + }
> + }
> +}