[PATCH] ARM: omap2+: Revert omap-smp.c changes resetting cpu1 during boot
From: tony@atomide.com (Tony Lindgren)
Date: 2017-02-14 19:36:45
Also in:
linux-omap
* Tony Lindgren [off-list ref] [170213 13:51]:
Commit 3251885285e1 ("ARM: OMAP4+: Reset CPU1 properly for kexec") started
resetting cpu1 because of a kexec boot issue I was seeing earlier in 2016
on omap4 when doing kexec boot between two different kernel versions. The
booted kernel ended up trying to use the old kernel start-up address unless
cpu1 was reset before configuring the cpu1 start-up address.
It seems the reset part was not correct but probably working around some
other issue. I have not been able to reproduce this issue any longer despite
testing with backported patches back to v4.6 kernel. So it is possible this
issue was caused by other work in progress kexec patches I had applied. Or
it is possible some other fixes have made the issue go way.
The unconditional reset of cpu1 can cause issues booting some devices. For
example, bootloader configured secure OS running on cpu1 will fail as the
configuration is not preserved as reported by Andrew F. Davis [off-list ref].
Let's fix the issue by reverting the cpu1 reset parts. If it turns out we
still need to reset cpu1 in some cases, we can add it back and do it
conditionally.Actually with this I'm now seeing cpu1 not come up after a suspend/resume cycle on duovero: [ 118.257415] CPU1: shutdown [ 118.294616] Error taking CPU1 up: -2 [ 118.299072] PM: noirq resume of devices complete after 3.723 msecs [ 118.303802] PM: early resume of devices complete after 3.723 msecs So this issue needs to be investigated more. Regards, Tony
quoted hunk ↗ jump to hunk
Fixes: 3251885285e1 ("ARM: OMAP4+: Reset CPU1 properly for kexec") Cc: Keerthy <j-keerthy@ti.com> Cc: Tero Kristo <redacted> Reported-by: Andrew F. Davis <redacted> Signed-off-by: Tony Lindgren <tony@atomide.com> --- arch/arm/mach-omap2/omap-smp.c | 10 ---------- 1 file changed, 10 deletions(-)diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c@@ -300,16 +300,6 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus) scu_enable(cfg.scu_base); /* - * Reset CPU1 before configuring, otherwise kexec will - * end up trying to use old kernel startup address. - */ - if (cfg.cpu1_rstctrl_va) { - writel_relaxed(1, cfg.cpu1_rstctrl_va); - readl_relaxed(cfg.cpu1_rstctrl_va); - writel_relaxed(0, cfg.cpu1_rstctrl_va); - } - - /* * Write the address of secondary startup routine into the * AuxCoreBoot1 where ROM code will jump and start executing * on secondary core once out of WFE-- 2.11.1 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html