If the current frequency scaling policy is schedutil.
echo schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
This would result in an invalid frequency modulation interval.
In sugov_limit(), sg_policy->limits_changed is set to true.
Signed-off-by: Lizhe <[email protected]>
---
drivers/cpufreq/cpufreq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 44db4f59c4cc..a0af38fcb7e2 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -2631,7 +2631,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,
if (new_gov == policy->governor) {
pr_debug("governor limits update\n");
- cpufreq_governor_limits(policy);
+ cpufreq_policy_apply_limits(policy);
return 0;
}
--
2.25.1
On 04-02-24, 06:09, Lizhe wrote:
> If the current frequency scaling policy is schedutil.
> echo schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
> This would result in an invalid frequency modulation interval.
> In sugov_limit(), sg_policy->limits_changed is set to true.
That will only make us do an extra freq change. What's the problem with that ?
> Signed-off-by: Lizhe <[email protected]>
> ---
> drivers/cpufreq/cpufreq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index 44db4f59c4cc..a0af38fcb7e2 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -2631,7 +2631,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,
>
> if (new_gov == policy->governor) {
> pr_debug("governor limits update\n");
> - cpufreq_governor_limits(policy);
> + cpufreq_policy_apply_limits(policy);
> return 0;
> }
--
viresh
On 05-02-24, 16:33, lizhe wrote:
> HI:
> I think not.
> It will cause the following changes:
> limits_changed in sugov_limit() is set to true.
> This will cause the modulation interval to be invalid.
> The system modulation will ignore the modulation interval.
> A modulation request will be initiated immediately.
>
>
> As shown below :
> sugov_should_update_freq(...)
> {
> if (unlikely(sg_policy->limits_changed)) {
> ....
> return true;
> }
> }
>
> Repeatedly setting the schedutil modulation policy causes the modulation interval to be invalid.
> Why is this necessary ?
This is the penalty being paid to keep the interface simple and consistent.
Playing with sysfs can do such minor things.
--
viresh