On 29.04.2025 12:36, Jan Beulich wrote: > On 14.04.2025 09:40, Penny Zheng wrote: >> --- a/xen/drivers/cpufreq/cpufreq.c >> +++ b/xen/drivers/cpufreq/cpufreq.c >> @@ -71,6 +71,49 @@ unsigned int __initdata cpufreq_xen_cnt = 1; >> >> static int __init cpufreq_cmdline_parse(const char *s, const char *e); >> >> +static bool __init cpufreq_opts_contain(enum cpufreq_xen_opt option) >> +{ >> + unsigned int count = cpufreq_xen_cnt; >> + >> + while ( count ) >> + { >> + if ( cpufreq_xen_opts[--count] == option ) >> + return true; >> + } >> + >> + return false; >> +} >> + >> +static int __init handle_cpufreq_cmdline(enum cpufreq_xen_opt option) >> +{ >> + int ret = 0; >> + >> + if ( cpufreq_opts_contain(option) ) >> + { >> + const char *cpufreq_opts_str[] = { "CPUFREQ_xen", "CPUFREQ_hwp" }; > > const char *const __initconstrel cpufreq_opts_str[] = { > "CPUFREQ_xen", "CPUFREQ_hwp" }; > > (line wrapped suitably, of course) Or maybe even better > > const char __initconst cpufreq_opts_str[][12] = { "CPUFREQ_xen", > "CPUFREQ_hwp" }; > > for the string literals to also end up in .init.rodata.
Actually, it didn't even occur to me that there might be a "static" missing here, too. Plus I'm missing any arrangement for the array slots to remain in sync with the corresponding enumerators. With that ... > With all of the adjustments: > Reviewed-by: Jan Beulich <jbeul...@suse.com> I'm sorry, but I need to take this back. There are just too many issues. Jan