|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 04/15] xen/sysctl: Nest cpufreq scaling options
On 15.06.2023 16:07, Jason Andryuk wrote:
> On Thu, Jun 15, 2023 at 9:29 AM Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>
>> On 14.06.2023 20:02, Jason Andryuk wrote:
>>> --- a/tools/include/xenctrl.h
>>> +++ b/tools/include/xenctrl.h
>>> @@ -1909,16 +1909,20 @@ struct xc_get_cpufreq_para {
>>> uint32_t cpuinfo_cur_freq;
>>> uint32_t cpuinfo_max_freq;
>>> uint32_t cpuinfo_min_freq;
>>> - uint32_t scaling_cur_freq;
>>> -
>>> - char scaling_governor[CPUFREQ_NAME_LEN];
>>> - uint32_t scaling_max_freq;
>>> - uint32_t scaling_min_freq;
>>> -
>>> - /* for specific governor */
>>> union {
>>> - xc_userspace_t userspace;
>>> - xc_ondemand_t ondemand;
>>> + struct {
>>> + uint32_t scaling_cur_freq;
>>> +
>>> + char scaling_governor[CPUFREQ_NAME_LEN];
>>> + uint32_t scaling_max_freq;
>>> + uint32_t scaling_min_freq;
>>> +
>>> + /* for specific governor */
>>> + union {
>>> + xc_userspace_t userspace;
>>> + xc_ondemand_t ondemand;
>>> + } u;
>>> + } s;
>>> } u;
>>
>> There's no comment in the header that this needs to mirror the sysctl
>> struct. Does it really need changing?
>
> Since this matched the other structure, I kept them in sync. The
> cppc/hwp data needs to be represented somehow, and it gets introduced
> in the same way for both later. If this doesn't get the new nested
> struct, then maybe fields could be placed into the single union. That
> would grow the overall struct and have unused fields for hwp.
I guess I need to leave this to the maintainers then. Still ...
>>> --- a/tools/libs/ctrl/xc_pm.c
>>> +++ b/tools/libs/ctrl/xc_pm.c
>>> @@ -265,15 +265,10 @@ int xc_get_cpufreq_para(xc_interface *xch, int cpuid,
>>> user_para->cpuinfo_cur_freq = sys_para->cpuinfo_cur_freq;
>>> user_para->cpuinfo_max_freq = sys_para->cpuinfo_max_freq;
>>> user_para->cpuinfo_min_freq = sys_para->cpuinfo_min_freq;
>>> - user_para->scaling_cur_freq = sys_para->scaling_cur_freq;
>>> - user_para->scaling_max_freq = sys_para->scaling_max_freq;
>>> - user_para->scaling_min_freq = sys_para->scaling_min_freq;
>>> user_para->turbo_enabled = sys_para->turbo_enabled;
>>>
>>> memcpy(user_para->scaling_driver,
>>> sys_para->scaling_driver, CPUFREQ_NAME_LEN);
>>> - memcpy(user_para->scaling_governor,
>>> - sys_para->scaling_governor, CPUFREQ_NAME_LEN);
>>
>> Did you really mean to remove the copying of these 4 entities, rather
>> than simply change the way the fields are accessed?
>
> Yes, it was intentional.
>
> The immediate following lines are:
> /* copy to user_para no matter what cpufreq governor */
> BUILD_BUG_ON(sizeof(((struct xc_get_cpufreq_para *)0)->u) !=
> sizeof(((struct xen_get_cpufreq_para *)0)->u));
>
> memcpy(&user_para->u, &sys_para->u, sizeof(sys_para->u));
... this suggests that some matching is intended, yet it's not clear
to me why then the hole struct-s aren't assumed to be matching / made
match.
> And this memcpy copies all the moved entities.
Right, I should have gone to the source instead of going just from
patch context, sorry.
> I suppose the comment could change to "...no matter which cpufreq driver".
Yeah, well, it really would be driver/governor then, I guess.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |