• Tony Lindgren's avatar
    ARM: OMAP4+: Prevent CPU1 related hang with kexec · 0573b957
    Tony Lindgren authored
    Kexec booted kernels on omap4 will hang early during the boot if the
    booted kernel is different version from the previous kernel.
    
    This is because the previous kernel may have configured low-power mode
    using CPU1_WAKEUP_NS_PA_ADDR. In that case it points to the previous
    kernel's omap4_secondary_startup(), and CPU1 can be in low power mode
    from the previous kernel. When the new kernel configures the CPU1
    clockdomain, CPU1 can wake from low power state prematurely during
    omap44xx_clockdomains_init() running random code.
    
    Let's fix the issue by configuring CPU1_WAKEUP_NS_PA_ADDR before we
    call omap44xx_clockdomains_init(). Note that this is very early during
    the init, and we will do proper CPU1 reset during SMP init a bit later
    on in omap4_smp_prepare_cpus(). And we need to do this when SMP is
    not enabled as the previous kernel may have had it enabled.
    Acked-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
    Tested-by: default avatarKeerthy <j-keerthy@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    0573b957
omap-mpuss-lowpower.c 12.6 KB