ARM BCM53573 SoC hangs/lockups caused by locks/clock/random changes
Linus Walleij
linus.walleij at linaro.org
Fri Sep 8 01:10:55 PDT 2023
Hi Rafal,
On Mon, Sep 4, 2023 at 10:34 AM Rafał Miłecki <zajec5 at gmail.com> wrote:
> I'm clueless at this point.
> Maybe someone can come up with an idea of actual issue & ideally a
> solution.
Damn this is frustrating.
> 2. Clock (arm,armv7-timer)
>
> While comparing main clock in Broadcom's SDK with upstream one I noticed
> a tiny difference: mask value. I don't know it it makes any sense but
> switching from CLOCKSOURCE_MASK(56) to CLOCKSOURCE_MASK(64) in
> arm_arch_timer.c (to match SDK) increases average uptime (time before a
> hang/lockup happens) from 4 minutes to 36 minutes.
This could be related to how often the system goes to idle.
> + if (cpu_idle_force_poll == 1234)
> + arch_cpu_idle();
> + if (cpu_idle_force_poll == 5678)
> + arch_cpu_idle();
> + if (cpu_idle_force_poll == 1234)
> + arch_cpu_idle();
> + if (cpu_idle_force_poll == 5678)
> + arch_cpu_idle();
> + if (cpu_idle_force_poll == 1234)
> + arch_cpu_idle();
> + if (cpu_idle_force_poll == 5678)
> + arch_cpu_idle();
> + if (cpu_idle_force_poll == 1234)
> + arch_cpu_idle();
Idle again.
I would have tried to see what arch_cpu_idle() is doing.
arm_pm_idle() or cpu_do_idle()?
What happens if you just put return in arch_cpu_idle()
so it does nothing?
Yours,
Linus Walleij
More information about the openwrt-devel
mailing list