2024-02-04 14:10:41

by Lizhe

[permalink] [raw]
Subject: [PATCH] cpufreq/schedutil: When updating limitations, frequency modulation interval not become invalid.

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



2024-02-05 07:38:34

by Viresh Kumar

[permalink] [raw]
Subject: Re: [PATCH] cpufreq/schedutil: When updating limitations, frequency modulation interval not become invalid.

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

2024-02-05 08:54:59

by Viresh Kumar

[permalink] [raw]
Subject: Re: [PATCH] cpufreq/schedutil: When updating limitations, frequency modulation interval not become invalid.

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