|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 17/19] xen/cpufreq: introduce helper cpufreq_in_cppc_passive_mode()
On 11.07.2025 05:51, Penny Zheng wrote:
> --- a/xen/drivers/acpi/pm-op.c
> +++ b/xen/drivers/acpi/pm-op.c
> @@ -152,7 +152,15 @@ static int get_cpufreq_para(struct xen_sysctl_pm_op *op)
> else
> strlcpy(op->u.get_para.scaling_driver, "Unknown", CPUFREQ_NAME_LEN);
>
> - ret = get_cpufreq_cppc(op->cpuid, &op->u.get_para.u.cppc_para);
> + /*
> + * When cpufreq driver in cppc passive mode, it has both cppc and
> governor
> + * info. Users could only rely on "get-cpufreq-cppc" to acquire CPPC
> info.
> + * And it returns governor info in "get-cpufreq-para"
> + */
Which of the two they need to invoke to obtain a complete picture? Both?
I'm confused by you bypassing get_cpufreq_cppc() (i.e. get_hwp_para())
for yet another reason, when - aiui - some information there is relevant
in both active and passive modes.
> + if ( cpufreq_in_cppc_passive_mode(op->cpuid) )
> + ret = -ENODEV;
> + else
> + ret = get_cpufreq_cppc(op->cpuid, &op->u.get_para.u.cppc_para);
Any reason the extra check isn't put in get_cpufreq_cppc(), alongside the
hwp_active() one?
> --- a/xen/drivers/cpufreq/cpufreq.c
> +++ b/xen/drivers/cpufreq/cpufreq.c
> @@ -962,3 +962,9 @@ int __init cpufreq_register_driver(const struct
> cpufreq_driver *driver_data)
>
> return 0;
> }
> +
> +bool cpufreq_in_cppc_passive_mode(unsigned int cpuid)
> +{
> + return processor_pminfo[cpuid]->init & XEN_CPPC_INIT &&
Nit: Please use parentheses when using & and && together.
Also, isn't this function going to become unreachable when PM_OP=n, thus
violating Misra rule 2.1?
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |