[PATCH] arm64: skip register_cpufreq_notifier on ACPI-based systems

Juri Lelli juri.lelli at arm.com
Wed Jan 25 08:48:06 PST 2017


On 25/01/17 10:49, Christopher Covington wrote:
> On 01/25/2017 07:03 AM, Juri Lelli wrote:
> > Hi,
> > 
> > On 24/01/17 17:43, Prashanth Prakash wrote:
> >> On ACPI based systems where the topology is setup using the API
> >> store_cpu_topology, at the moment we do not have necessary code
> >> to handle a cpufreq notifier, thus resulting in a crash.
> >>
> >> Skip register_cpufreq_notifier if raw_capacity is not allocated
> >> as part of topology initialization.
> >>
> >> Stack:
> >>         init_cpu_capacity_callback+0xb4/0x1c8
> >>         notifier_call_chain+0x5c/0xa0
> >>         __blocking_notifier_call_chain+0x58/0xa0
> >>         blocking_notifier_call_chain+0x3c/0x50
> >>         cpufreq_set_policy+0xe4/0x328
> >>         cpufreq_init_policy+0x80/0x100
> >>         cpufreq_online+0x418/0x710
> >>         cpufreq_add_dev+0x118/0x180
> >>         subsys_interface_register+0xa4/0xf8
> >>         cpufreq_register_driver+0x1c0/0x298
> >>         cppc_cpufreq_init+0xdc/0x1000 [cppc_cpufreq]
> >>         do_one_initcall+0x5c/0x168
> >>         do_init_module+0x64/0x1e4
> >>         load_module+0x130c/0x14d0
> >>         SyS_finit_module+0x108/0x120
> >>         el0_svc_naked+0x24/0x28
> >>
> >> Patch that added support for popultaing cpu capacity for DT:
> >> https://patchwork.codeaurora.org/patch/98353/
> 
> In other words,
> 
> Fixes: 7202bde8b7ae ("arm64: parse cpu capacity-dmips-mhz from DT")
> 
> >> Signed-off-by: Prashanth Prakash <pprakash at codeaurora.org>
> >> ---
> >>  arch/arm64/kernel/topology.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
> >> index 23e9e13..3f175ce 100644
> >> --- a/arch/arm64/kernel/topology.c
> >> +++ b/arch/arm64/kernel/topology.c
> >> @@ -209,7 +209,7 @@ static void normalize_cpu_capacity(void)
> >>  
> >>  static int __init register_cpufreq_notifier(void)
> >>  {
> >> -	if (cap_parsing_failed)
> >> +	if (cap_parsing_failed || !raw_capacity)
> > 
> > Looks good. I couldn't really test it to check if it fixes your problem
> > (I assume it does), but it doesn't seem to introduce regressions on my
> > boxes.
> 
> Are you testing on QEMU or Fast Models?

Neither, Juno R2. Let me see if I can quickly test it in ACPI mode.

> I was under the impression that the
> former had ACPI support. For the latter, wouldn't it be nice to have ACPI
> support in the bootwrapper. Out of curiosity, is Mark's bootwrapper
> repository on kernel.org the best one to use these days?
> 
> http://git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git/
> 

Not sure, Mark, others?

Thanks,

- Juri



More information about the linux-arm-kernel mailing list