* [PATCH V4 1/2] firmware: arm_scmi: Add support for marking certain frequencies as turbo
2024-03-12 9:47 [PATCH V4 0/2] cpufreq: scmi: Add boost frequency support Sibi Sankar
@ 2024-03-12 9:47 ` Sibi Sankar
2024-03-12 12:09 ` Dhruva Gole
2024-03-12 9:47 ` [PATCH V4 2/2] cpufreq: scmi: Enable boost support Sibi Sankar
2024-03-15 5:50 ` [PATCH V4 0/2] cpufreq: scmi: Add boost frequency support Viresh Kumar
2 siblings, 1 reply; 6+ messages in thread
From: Sibi Sankar @ 2024-03-12 9:47 UTC (permalink / raw)
To: sudeep.holla, cristian.marussi, rafael, viresh.kumar,
morten.rasmussen, dietmar.eggemann, lukasz.luba, sboyd, d-gole
Cc: linux-arm-kernel, linux-pm, linux-kernel, quic_mdtipton,
linux-arm-msm, nm, Sibi Sankar
All opps above the sustained frequency are treated as turbo, so mark them
accordingly.
Suggested-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
---
v4:
* Pickup Rbs
* Use turbo and simplify setting turbo. [Dhruva/Viresh]
drivers/firmware/arm_scmi/perf.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c
index 8e832d1ad825..345fff167b52 100644
--- a/drivers/firmware/arm_scmi/perf.c
+++ b/drivers/firmware/arm_scmi/perf.c
@@ -871,6 +871,9 @@ static int scmi_dvfs_device_opps_add(const struct scmi_protocol_handle *ph,
else
freq = dom->opp[idx].indicative_freq * dom->mult_factor;
+ /* All OPPs above the sustained frequency are treated as turbo */
+ data.turbo = freq > dom->sustained_freq_khz * 1000;
+
data.level = dom->opp[idx].perf;
data.freq = freq;
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH V4 2/2] cpufreq: scmi: Enable boost support
2024-03-12 9:47 [PATCH V4 0/2] cpufreq: scmi: Add boost frequency support Sibi Sankar
2024-03-12 9:47 ` [PATCH V4 1/2] firmware: arm_scmi: Add support for marking certain frequencies as turbo Sibi Sankar
@ 2024-03-12 9:47 ` Sibi Sankar
2024-03-12 12:09 ` Dhruva Gole
2024-03-15 5:50 ` [PATCH V4 0/2] cpufreq: scmi: Add boost frequency support Viresh Kumar
2 siblings, 1 reply; 6+ messages in thread
From: Sibi Sankar @ 2024-03-12 9:47 UTC (permalink / raw)
To: sudeep.holla, cristian.marussi, rafael, viresh.kumar,
morten.rasmussen, dietmar.eggemann, lukasz.luba, sboyd, d-gole
Cc: linux-arm-kernel, linux-pm, linux-kernel, quic_mdtipton,
linux-arm-msm, nm, Sibi Sankar
Certain platforms host a number of higher OPPs that are exclusive to
CPUs within specific CPUfreq policies and not all CPUs within that
CPUfreq policy are able to achieve those higher OPPs due to power
constraints. These OPPs are marked as turbo in the freq_table and in
the presence of such OPPs, let's enable boost by default.
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
---
v4:
* Pickup Rbs
* Update commit message of patch with more info. [Sudeep]
drivers/cpufreq/scmi-cpufreq.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c
index 0b483bd0d3ca..3b4f6bfb2f4c 100644
--- a/drivers/cpufreq/scmi-cpufreq.c
+++ b/drivers/cpufreq/scmi-cpufreq.c
@@ -30,6 +30,7 @@ struct scmi_data {
static struct scmi_protocol_handle *ph;
static const struct scmi_perf_proto_ops *perf_ops;
+static struct cpufreq_driver scmi_cpufreq_driver;
static unsigned int scmi_cpufreq_get_rate(unsigned int cpu)
{
@@ -167,6 +168,12 @@ scmi_get_rate_limit(u32 domain, bool has_fast_switch)
return rate_limit;
}
+static struct freq_attr *scmi_cpufreq_hw_attr[] = {
+ &cpufreq_freq_attr_scaling_available_freqs,
+ NULL,
+ NULL,
+};
+
static int scmi_cpufreq_init(struct cpufreq_policy *policy)
{
int ret, nr_opp, domain;
@@ -276,6 +283,17 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
policy->transition_delay_us =
scmi_get_rate_limit(domain, policy->fast_switch_possible);
+ if (policy_has_boost_freq(policy)) {
+ ret = cpufreq_enable_boost_support();
+ if (ret) {
+ dev_warn(cpu_dev, "failed to enable boost: %d\n", ret);
+ goto out_free_opp;
+ } else {
+ scmi_cpufreq_hw_attr[1] = &cpufreq_freq_attr_scaling_boost_freqs;
+ scmi_cpufreq_driver.boost_enabled = true;
+ }
+ }
+
return 0;
out_free_opp:
@@ -334,7 +352,7 @@ static struct cpufreq_driver scmi_cpufreq_driver = {
CPUFREQ_NEED_INITIAL_FREQ_CHECK |
CPUFREQ_IS_COOLING_DEV,
.verify = cpufreq_generic_frequency_table_verify,
- .attr = cpufreq_generic_attr,
+ .attr = scmi_cpufreq_hw_attr,
.target_index = scmi_cpufreq_set_target,
.fast_switch = scmi_cpufreq_fast_switch,
.get = scmi_cpufreq_get_rate,
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH V4 0/2] cpufreq: scmi: Add boost frequency support
2024-03-12 9:47 [PATCH V4 0/2] cpufreq: scmi: Add boost frequency support Sibi Sankar
2024-03-12 9:47 ` [PATCH V4 1/2] firmware: arm_scmi: Add support for marking certain frequencies as turbo Sibi Sankar
2024-03-12 9:47 ` [PATCH V4 2/2] cpufreq: scmi: Enable boost support Sibi Sankar
@ 2024-03-15 5:50 ` Viresh Kumar
2 siblings, 0 replies; 6+ messages in thread
From: Viresh Kumar @ 2024-03-15 5:50 UTC (permalink / raw)
To: Sibi Sankar
Cc: sudeep.holla, cristian.marussi, rafael, morten.rasmussen,
dietmar.eggemann, lukasz.luba, sboyd, d-gole, linux-arm-kernel,
linux-pm, linux-kernel, quic_mdtipton, linux-arm-msm, nm
On 12-03-24, 15:17, Sibi Sankar wrote:
> This series adds provision to mark dynamic opps as turbo capable and adds
> boost frequency support to the scmi cpufreq driver.
Applied. Thanks.
--
viresh
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 6+ messages in thread