2019-05-29 09:33:01

by Abhishek Goel

[permalink] [raw]
Subject: [PATCH] cpupower : frequency-set -r option misses the last cpu in related cpu list

To set frequency on specific cpus using cpupower, following syntax can
be used :
cpupower -c #i frequency-set -f #f -r

While setting frequency using cpupower frequency-set command, if we use
'-r' option, it is expected to set frequency for all cpus related to
cpu #i. But it is observed to be missing the last cpu in related cpu
list. This patch fixes the problem.

Signed-off-by: Abhishek Goel <[email protected]>
---
tools/power/cpupower/utils/cpufreq-set.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/tools/power/cpupower/utils/cpufreq-set.c b/tools/power/cpupower/utils/cpufreq-set.c
index 1eef0aed6..08a405593 100644
--- a/tools/power/cpupower/utils/cpufreq-set.c
+++ b/tools/power/cpupower/utils/cpufreq-set.c
@@ -306,6 +306,8 @@ int cmd_freq_set(int argc, char **argv)
bitmask_setbit(cpus_chosen, cpus->cpu);
cpus = cpus->next;
}
+ /* Set the last cpu in related cpus list */
+ bitmask_setbit(cpus_chosen, cpus->cpu);
cpufreq_put_related_cpus(cpus);
}
}
--
2.17.1


2019-05-29 12:14:35

by Gautham R Shenoy

[permalink] [raw]
Subject: Re: [PATCH] cpupower : frequency-set -r option misses the last cpu in related cpu list

Hi Abhishek,

On Wed, May 29, 2019 at 3:02 PM Abhishek Goel
<[email protected]> wrote:
>
> To set frequency on specific cpus using cpupower, following syntax can
> be used :
> cpupower -c #i frequency-set -f #f -r
>
> While setting frequency using cpupower frequency-set command, if we use
> '-r' option, it is expected to set frequency for all cpus related to
> cpu #i. But it is observed to be missing the last cpu in related cpu
> list. This patch fixes the problem.
>
> Signed-off-by: Abhishek Goel <[email protected]>
> ---
> tools/power/cpupower/utils/cpufreq-set.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/power/cpupower/utils/cpufreq-set.c b/tools/power/cpupower/utils/cpufreq-set.c
> index 1eef0aed6..08a405593 100644
> --- a/tools/power/cpupower/utils/cpufreq-set.c
> +++ b/tools/power/cpupower/utils/cpufreq-set.c
> @@ -306,6 +306,8 @@ int cmd_freq_set(int argc, char **argv)
> bitmask_setbit(cpus_chosen, cpus->cpu);
> cpus = cpus->next;
> }
> + /* Set the last cpu in related cpus list */
> + bitmask_setbit(cpus_chosen, cpus->cpu);

Perhaps you could convert the while() loop to a do .. while(). That
should will ensure
that we terminate the loop after setting the last valid CPU.


> cpufreq_put_related_cpus(cpus);
> }
> }
> --
> 2.17.1
>


--
Thanks and Regards
gautham.

2019-05-29 14:22:41

by Thomas Renninger

[permalink] [raw]
Subject: Re: [PATCH] cpupower : frequency-set -r option misses the last cpu in related cpu list

Hi,

On Wednesday, May 29, 2019 2:12:34 PM CEST Gautham R Shenoy wrote:
> Hi Abhishek,
>
> On Wed, May 29, 2019 at 3:02 PM Abhishek Goel

...

> > bitmask_setbit(cpus_chosen, cpus->cpu);
> > cpus = cpus->next;
> >
> > }
> >
> > + /* Set the last cpu in related cpus list */
> > + bitmask_setbit(cpus_chosen, cpus->cpu);
>
> Perhaps you could convert the while() loop to a do .. while(). That
> should will ensure
> that we terminate the loop after setting the last valid CPU.

It would do exactly the same, right?
IMHO it's not worth the extra hassle of resubmitting. Setting the last value
outside a while loop is rather common.

I do not have a CPU with related cores at hand.
If you tested this it would be nice to see this pushed:

Reviewed-by: Thomas Renninger <[email protected]>

Thanks!

Thomas

2019-06-04 15:19:10

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH] cpupower : frequency-set -r option misses the last cpu in related cpu list

On 5/29/19 8:21 AM, Thomas Renninger wrote:
> Hi,
>
> On Wednesday, May 29, 2019 2:12:34 PM CEST Gautham R Shenoy wrote:
>> Hi Abhishek,
>>
>> On Wed, May 29, 2019 at 3:02 PM Abhishek Goel
>
> ...
>
>>> bitmask_setbit(cpus_chosen, cpus->cpu);
>>> cpus = cpus->next;
>>>
>>> }
>>>
>>> + /* Set the last cpu in related cpus list */
>>> + bitmask_setbit(cpus_chosen, cpus->cpu);
>>
>> Perhaps you could convert the while() loop to a do .. while(). That
>> should will ensure
>> that we terminate the loop after setting the last valid CPU.
>
> It would do exactly the same, right?
> IMHO it's not worth the extra hassle of resubmitting. Setting the last value
> outside a while loop is rather common.
>
> I do not have a CPU with related cores at hand.
> If you tested this it would be nice to see this pushed:
>
> Reviewed-by: Thomas Renninger <[email protected]>
>

Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux.git/
cpupower branch.

thanks,
-- Shuah