|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 06/13] cpufreq: Export HWP parameters to userspace
On Thu, May 27, 2021 at 4:03 AM Jan Beulich <jbeulich@xxxxxxxx> wrote:
>
> On 03.05.2021 21:28, Jason Andryuk wrote:
> > --- a/xen/drivers/acpi/pmstat.c
> > +++ b/xen/drivers/acpi/pmstat.c
> > @@ -290,6 +290,12 @@ static int get_cpufreq_para(struct xen_sysctl_pm_op
> > *op)
> > &op->u.get_para.u.ondemand.sampling_rate,
> > &op->u.get_para.u.ondemand.up_threshold);
> > }
> > +
> > + if ( !strncasecmp(op->u.get_para.scaling_governor,
> > + "hwp-internal", CPUFREQ_NAME_LEN) )
> > + {
> > + ret = get_hwp_para(policy, &op->u.get_para.u.hwp_para);
> > + }
> > op->u.get_para.turbo_enabled = cpufreq_get_turbo_status(op->cpuid);
>
> Nit: Unnecessary parentheses again, and with the leading blank line
> you also want a trailing one. (As an aside I'm also not overly happy
> to see the call keyed to the governor name. Is there really no other
> indication that hwp is in use?)
This is preceded by similar checks for "userspace" and "ondemand", so
it is following existing code. Unlike other governors, hwp-internal
is static. It could be exported if you want to switch to comparing
with cpufreq_driver.
> > --- a/xen/include/acpi/cpufreq/cpufreq.h
> > +++ b/xen/include/acpi/cpufreq/cpufreq.h
> > @@ -246,4 +246,7 @@ int write_userspace_scaling_setspeed(unsigned int cpu,
> > unsigned int freq);
> > void cpufreq_dbs_timer_suspend(void);
> > void cpufreq_dbs_timer_resume(void);
> >
> > +/********************** hwp hypercall helper *************************/
> > +int get_hwp_para(struct cpufreq_policy *policy, struct xen_hwp_para
> > *hwp_para);
>
> While I can see that the excessive number of stars matches what
> we have elsewhere in the header, I still wonder if you need to go
> this far for a single declaration. If you want to stick to this,
> then to match the rest of the file you want to follow the comment
> by a blank line.
Will remove.
> > --- a/xen/include/public/sysctl.h
> > +++ b/xen/include/public/sysctl.h
> > @@ -301,6 +301,23 @@ struct xen_ondemand {
> > uint32_t up_threshold;
> > };
> >
> > +struct xen_hwp_para {
> > + uint16_t activity_window; /* 7bit mantissa and 3bit exponent */
>
> If you go this far with commenting, you should also make the further
> aspects clear: Which bits these are, and that the exponent is taking
> 10 as the base (in most other cases one would expect 2).
Yes, this is much more useful.
> > +#define XEN_SYSCTL_HWP_FEAT_ENERGY_PERF (1 << 0) /* energy_perf range
> > 0-255 if
> > + 1. Otherwise 0-15 */
> > +#define XEN_SYSCTL_HWP_FEAT_ACT_WINDOW (1 << 1) /* activity_window
> > supported
> > + if 1 */
>
> Style: Comment formatting. You may want to move the comment on separate
> lines ahead of what they comment.
>
> > + uint8_t hw_feature; /* bit flags for features */
> > + uint8_t hw_lowest;
> > + uint8_t hw_most_efficient;
> > + uint8_t hw_guaranteed;
> > + uint8_t hw_highest;
>
> Any particular reason for the recurring hw_ prefixes?
The idea was to differentiate values provided by CPU hardware from
user-configured values.
Regards,
Jason
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |