• Tony Lindgren's avatar
    ARM: omap2+: Revert omap-smp.c changes resetting CPU1 during boot · 351b7c49
    Tony Lindgren authored
    Commit 32518852 ("ARM: OMAP4+: Reset CPU1 properly for kexec") started
    unconditionally resetting CPU1 because of a kexec boot issue I was seeing
    earlier on omap4 when doing kexec boot between two different kernel
    versions.
    
    This caused issues on some systems. We should only reset CPU1 as a last
    resort option, and try to avoid it where possible. Doing an unconditional
    CPU1 reset causes issues for example when booting a bootloader configured
    secure OS running on CPU1 as reported by Andrew F. Davis <afd@ti.com>.
    
    We can't completely remove the reset of CPU1 as it would break kexec
    booting from older kernels. But we can limit the CPU1 reset to cases
    where CPU1 is wrongly parked within the memory area used by the booting
    kernel. Then later on we can add support for parking CPU1 for kexec out
    of the SDRAM back to bootrom.
    
    So let's first fix the regression reported by Andrew by making CPU1 reset
    conditional. To do this, we need to:
    
    1. Save configured AUX_CORE_BOOT_1 for later
    
    2. Modify AUX_CORE_BOOT_0 reading code to for HS SoCs to return
       the whole register instead of the CPU mask
    
    3. Check if CPU1 is wrongly parked into the booting kernel by the
       previous kernel and reset if needed
    
    Fixes: 32518852 ("ARM: OMAP4+: Reset CPU1 properly for kexec")
    Reported-by: default avatarAndrew F. Davis <afd@ti.com>
    Cc: Andrew F. Davis <afd@ti.com>
    Cc: Keerthy <j-keerthy@ti.com>
    Cc: Russell King <rmk+kernel@armlinux.org.uk>
    Cc: Santosh Shilimkar <ssantosh@kernel.org>
    Cc: Tero Kristo <t-kristo@ti.com>
    Tested-by: default avatarKeerthy <j-keerthy@ti.com>
    Tested-by: default avatarAndrew F. Davis <afd@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    351b7c49
omap-smc.S 2.5 KB