All of lore.kernel.org
 help / color / mirror / Atom feed
From: "zhenglifeng (A)" <zhenglifeng1@huawei.com>
To: Pierre Gondois <pierre.gondois@arm.com>
Cc: <linux-kernel@vger.kernel.org>,
	Christian Loehle <christian.loehle@arm.com>,
	Ionela Voinescu <ionela.voinescu@arm.com>,
	Jie Zhan <zhanjie9@hisilicon.com>, Huang Rui <ray.huang@amd.com>,
	"Gautham R. Shenoy" <gautham.shenoy@amd.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Perry Yuan <perry.yuan@amd.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	<linux-pm@vger.kernel.org>
Subject: Re: [PATCH v2 3/3] cpufreq: Update set_boost callbacks to rely on boost_freq_req
Date: Tue, 23 Dec 2025 16:15:34 +0800	[thread overview]
Message-ID: <ea9111b5-cd85-4526-a959-54d8037d6ffb@huawei.com> (raw)
In-Reply-To: <73da1186-5edd-4465-bd49-e18d9064a501@arm.com>

On 2025/12/18 0:22, Pierre Gondois wrote:
> cpufreq_frequency_table_cpuinfo() can effectively update
> policy->cpuinfo.max_freq, but directly setting policy->max should be wrong
> as it bypasses the other QoS constraints on the maximal frequency.
> 
> Updates to policy->max should go through the following call chain
> to be sure all constraints/notifiers are respected/called.
> freq_qos_update_request()
> \-freq_qos_apply()
>   \-pm_qos_update_target()
>     \-blocking_notifier_call_chain()
>       \-cpufreq_notifier_max()
>         \-handle_update()
>           \-refresh_frequency_limits()
>             \-cpufreq_set_policy()
> 
> FYIU, we should have:
> - max_freq_req: the maximal frequency constraint as set by the user.
>   It is updated whenever the user write to scaling_max_freq.
> - boost_freq_req: the maximal frequency constraint as set by the
>   driver. It is updated whenever boost is enabled/disabled.
> - policy->cpuinfo.max_freq: the maximal frequency reachable by the driver.
>   This value is used in cpufreq at various places to check frequencies
>   are within valid boundaries.
> - policy->max: the maximal frequency cpufreq can use. It is a resultant
>   of all the QoS constraints received (from the user, boost, thermal).
>   It should be updated whenever one of the QoS constraint is updated.
>   It should never be set directly to avoid bypassing the QoS constraints.
> 
> Whenever a cpufreq driver is initialized, policy->max is set, but the
> value is overridden whenever the user writes to scaling_max_freq.
> Thus we might think it should be replaced with a max_freq_req constraint.
> 
> However if boost is enabled, the maximal frequency will be limited by
> max_freq_req. So at init, cpufreq drivers should set boost_freq_req
> instead (to policy->cpuinfo.max_freql).
> That way, if boost is enabled, the maximal frequency available is the
> boost frequency.
> 
> ------
> 
> Summary:
> -
> policy->max should never be set directly. It should only be set through
> cpufreq_set_policy(). cpufreq_set_policy() might be called indirectly
> after updating a QoS constraint using freq_qos_update_request().
> 
> -
> boost_freq_req should be set for all cpufreq drivers, with a default value
> of policy->cpuinfo.max_freq. This represents the maximal frequency available
> with/without boost.
> Note: the name "boost_freq_req" might not be well chosen.
> 
> -
> Any update to policy->cpuinfo.max_freq should be followed by a call to
> freq_qos_update_request(policy->boost_freq_req).
> This will allow to update "policy->max" with the new boost frequency.
> 

Hi Pierre,

I now think we might not need to add a new QoS constraints. Calling
refresh_frequency_limits() instead of freq_qos_update_request() when
setting boost might solve your problem, since cpuinfo.max_freq is already
used to limit policy->max in cpufreq_set_policy().

What do you think?

  parent reply	other threads:[~2025-12-23  8:15 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-08 10:59 [PATCH v2 0/3] cpufreq: Introduce boot frequency QoS Pierre Gondois
2025-12-08 10:59 ` [PATCH v2 1/3] cpufreq: Add boost_freq_req QoS request Pierre Gondois
2025-12-10  3:01   ` zhenglifeng (A)
2025-12-17 16:21     ` Pierre Gondois
2025-12-08 10:59 ` [PATCH v2 2/3] cpufreq: Centralize boost freq QoS requests Pierre Gondois
2026-01-08  5:10   ` Viresh Kumar
2026-01-12 15:04     ` Pierre Gondois
2025-12-08 10:59 ` [PATCH v2 3/3] cpufreq: Update set_boost callbacks to rely on boost_freq_req Pierre Gondois
2025-12-10  9:26   ` zhenglifeng (A)
2025-12-17 16:22     ` Pierre Gondois
2025-12-20 10:29       ` zhenglifeng (A)
2025-12-23  8:15       ` zhenglifeng (A) [this message]
2026-01-12 15:02         ` Pierre Gondois
2026-01-13  1:30           ` Viresh Kumar
2026-01-13 12:20             ` Rafael J. Wysocki
2026-01-15  3:41               ` zhenglifeng (A)
2026-01-08  4:37 ` [PATCH v2 0/3] cpufreq: Introduce boot frequency QoS Viresh Kumar

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=ea9111b5-cd85-4526-a959-54d8037d6ffb@huawei.com \
    --to=zhenglifeng1@huawei.com \
    --cc=christian.loehle@arm.com \
    --cc=gautham.shenoy@amd.com \
    --cc=ionela.voinescu@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --cc=perry.yuan@amd.com \
    --cc=pierre.gondois@arm.com \
    --cc=rafael@kernel.org \
    --cc=ray.huang@amd.com \
    --cc=viresh.kumar@linaro.org \
    --cc=zhanjie9@hisilicon.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.