|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH v7 13/13] xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC xen_sysctl_pm_op for amd-cppc driver
[Public]
> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Thursday, August 28, 2025 3:09 PM
> To: Penny, Zheng <penny.zheng@xxxxxxx>
> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Anthony PERARD
> <anthony.perard@xxxxxxxxxx>; Andrew Cooper <andrew.cooper3@xxxxxxxxxx>;
> Orzel, Michal <Michal.Orzel@xxxxxxx>; Julien Grall <julien@xxxxxxx>; Roger Pau
> Monné <roger.pau@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>;
> xen-
> devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH v7 13/13] xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC
> xen_sysctl_pm_op for amd-cppc driver
>
> On 28.08.2025 08:54, Penny, Zheng wrote:
> > [Public]
> >
> >> -----Original Message-----
> >> From: Jan Beulich <jbeulich@xxxxxxxx>
> >> Sent: Thursday, August 28, 2025 2:38 PM
> >> To: Penny, Zheng <penny.zheng@xxxxxxx>
> >> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Anthony PERARD
> >> <anthony.perard@xxxxxxxxxx>; Andrew Cooper
> >> <andrew.cooper3@xxxxxxxxxx>; Orzel, Michal <Michal.Orzel@xxxxxxx>;
> >> Julien Grall <julien@xxxxxxx>; Roger Pau Monné
> >> <roger.pau@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>;
> >> xen- devel@xxxxxxxxxxxxxxxxxxxx
> >> Subject: Re: [PATCH v7 13/13] xen/cpufreq: Adapt
> SET/GET_CPUFREQ_CPPC
> >> xen_sysctl_pm_op for amd-cppc driver
> >>
> >> On 28.08.2025 08:35, Jan Beulich wrote:
> >>> On 28.08.2025 06:06, Penny, Zheng wrote:
> >>>>> -----Original Message-----
> >>>>> From: Jan Beulich <jbeulich@xxxxxxxx>
> >>>>> Sent: Tuesday, August 26, 2025 12:03 AM
> >>>>>
> >>>>> On 22.08.2025 12:52, Penny Zheng wrote:
> >>>>>> --- a/xen/include/public/sysctl.h
> >>>>>> +++ b/xen/include/public/sysctl.h
> >>>>>> @@ -336,8 +336,14 @@ struct xen_ondemand {
> >>>>>> uint32_t up_threshold;
> >>>>>> };
> >>>>>>
> >>>>>> +#define CPUFREQ_POLICY_UNKNOWN 0
> >>>>>> +#define CPUFREQ_POLICY_POWERSAVE 1
> >>>>>> +#define CPUFREQ_POLICY_PERFORMANCE 2
> >>>>>> +#define CPUFREQ_POLICY_ONDEMAND 3
> >>>>>
> >>>>> Without XEN_ prefixes they shouldn't appear in a public header.
> >>>>> But do we need ...
> >>>>>
> >>>>>> struct xen_get_cppc_para {
> >>>>>> /* OUT */
> >>>>>> + uint32_t policy; /* CPUFREQ_POLICY_xxx */
> >>>>>
> >>>>> ... the new field at all? Can't you synthesize the
> >>>>> kind-of-governor into struct xen_get_cpufreq_para's respective
> >>>>> field? You invoke both sub-ops from xenpm now anyway ...
> >>>>>
> >>>>
> >>>> Maybe I could borrow governor field to indicate policy info, like
> >>>> the following in
> >> print_cpufreq_para(), then we don't need to add the new filed "policy"
> >>>> ```
> >>>> + /* Translate governor info to policy info in CPPC active mode */
> >>>> + if ( is_cppc_active )
> >>>> + {
> >>>> + if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >>>> + "ondemand", CPUFREQ_NAME_LEN) )
> >>>> + printf("cppc policy : ondemand\n");
> >>>> + else if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >>>> + "performance", CPUFREQ_NAME_LEN) )
> >>>> + printf("cppc policy : performance\n");
> >>>> +
> >>>> + else if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >>>> + "powersave", CPUFREQ_NAME_LEN) )
> >>>> + printf("cppc policy : powersave\n");
> >>>> + else
> >>>> + printf("cppc policy : unknown\n");
> >>>> + }
> >>>> +
> >>>> ```
> >>>
> >>> Something like this is what I was thinking of, yes.
> >>
> >> Albeit - why the complicated if/else sequence? Why not simply print
> >> the field the hypercall returned?
> >
> > userspace governor doesn't have according policy. I could simplify it
> > to ```
> > if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> > "userspace", CPUFREQ_NAME_LEN) )
> > printf("policy : unknown\n");
> > else
> > printf("policy : %s\n",
> > p_cpufreq->u.s.scaling_governor); ```
>
> But the hypervisor shouldn't report back "userspace" when the CPPC driver is
> in
> use. ANd I think the tool is okay to trust the hypervisor.
True, we shall make sure governor is set properly in hypervisor side even in
cppc mode
>
> Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |