|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 03/15] xen/cpufreq: refactor cmdline "cpufreq=xxx"
On 26.03.2025 08:20, Penny, Zheng wrote:
>> -----Original Message-----
>> From: Jan Beulich <jbeulich@xxxxxxxx>
>> Sent: Monday, March 24, 2025 11:01 PM
>>
>> On 06.03.2025 09:39, Penny Zheng wrote:
>>> --- a/docs/misc/xen-command-line.pandoc
>>> +++ b/docs/misc/xen-command-line.pandoc
>>> @@ -535,7 +535,8 @@ choice of `dom0-kernel` is deprecated and not supported
>> by all Dom0 kernels.
>>> processor to autonomously force physical package components into idle
>>> state.
>>> The default is enabled, but the option only applies when `hwp` is
>>> enabled.
>>>
>>> -There is also support for `;`-separated fallback options:
>>> +User could use `;`-separated options to support universal options
>>> +which they would like to try on any agnostic platform, *but* under
>>> +priority order, like
>>> `cpufreq=hwp;xen,verbose`. This first tries `hwp` and falls back to
>>> `xen` if unavailable. Note: The `verbose` suboption is handled
>>> globally. Setting it for either the primary or fallback option
>>> applies to both irrespective of where
>>
>> What does "support" here mean? I fear I can't even suggest what else to use,
>> as I
>> don't follow what additional information you mean to add here. Is a change
>> here
>> really needed?
>
> There are two changes I'd like to address:
> 1) ";" is not designed for fallback options anymore, like we discussed
> before, we would
> like to support something like "cpufreq=hwp;amd-cppc;xen" for users to define
> all universal options
> they would like to try.
Why would the meaning of ; change? There's no difference between having a single
fallback option from hwp, or two of them from amd-cppc.
> 2) Must under *priority* order. As in cpufreq_driver_init(), we are using
> loop to decide which driver to
> try firstly. If user defines "cpufreq=xen;amd-cppc", which leads legacy
> P-state set before amd-cppc in cpufreq_xen_opts[],
> then in the loop, we will try to register legacy P-state firstly, once it
> gets registered successfully, we will not try to register amd-cppc at all.
This in-order aspect also doesn't change.
Overall I fear I don't feel my question was answered.
>>> --- a/xen/drivers/cpufreq/cpufreq.c
>>> +++ b/xen/drivers/cpufreq/cpufreq.c
>>> + if ( arg[0] && arg[1] )
>>> + ret = cpufreq_cmdline_parse(arg + 1, end);
>>> +
>>> + return ret;
>>> +}
>>> +
>>> +static int __init cpufreq_cmdline_parse_hwp(const char *arg, const
>>> +char *end) {
>>> + int ret = 0;
>>> +
>>> + xen_processor_pmbits |= XEN_PROCESSOR_PM_PX;
>>> + cpufreq_controller = FREQCTL_xen;
>>> + cpufreq_xen_opts[cpufreq_xen_cnt++] = CPUFREQ_hwp;
>>> + if ( arg[0] && arg[1] )
>>> + ret = hwp_cmdline_parse(arg + 1, end);
>>> +
>>> + return ret;
>>> +}
>>
>> For both of the helpers may I suggest s/parse/process/ or some such ("handle"
>> might be another possible term to use), as themselves they don't do any
>> parsing?
>>
>
> Maybe I mis-understood the previous comment you said
> ```
> > else if ( IS_ENABLED(CONFIG_INTEL) && choice < 0 &&
> > ```
>
> For the rest of this, I guess I'd prefer to see this in context. Also
> with
> regard to the helper function's name.
> ```
> I thought you suggested to introduce helper function to wrap the conditional
> codes...
> Or may you were suggesting something like:
> ```
> #ifdef CONFIG_INTEL
> else if ( choice < 0 && !cmdline_strcmp(str, "hwp") )
> {
> xen_processor_pmbits |= XEN_PROCES
> ...
> }
> #endif
> ```
Was this reply of yours misplaced? It doesn't fit with the part of my reply in
context above. Or maybe I'm not understanding what you mean to say.
>> In the end I'm also not entirely convinced that we need these two almost
>> identical
>> helpers (with a 3rd likely appearing in a later patch).
Instead it feels as if this response of yours was to this part of my comment.
Indeed iirc I was suggesting to introduce a helper function. Note, however, the
singular here as well as in your response above.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |