• Tony Lindgren's avatar
    ARM: 8353/1: mm: Fix Cortex-A8 erratum 430973 segfaults for bootloaders and multiarch · e748994f
    Tony Lindgren authored
    Looks like apps can be made to segfault easily on armhf distros
    just by running cpuburn-a8 in the background, then starting apt
    get update unless erratum 430973 workaround is enabled. This happens
    on r3p2 also, which has 430973 fixed in hardware.
    
    Turns out the reason for this is some bootloaders incorrectly
    setting the auxilary register IBE bit, which probably causes us
    to hit erratum 687067 on Cortex-A8 later than r1p2.
    
    If the bootloader incorrectly sets the IBE bit in the auxilary control
    register for Cortex-A8 revisions with 430973 fixed in hardware, we
    need to call flush BTAC/BTB to avoid segfaults probably caused by
    erratum 687067. So let's flush BTAC/BTB unconditionally for Cortex-A8.
    It won't do anything unless the IBE bit is set.
    
    Note that we keep the erratum 430973 Kconfig option still around and
    disabled for multiarch as it may be unsafe to enable for some secure
    SoC. It is known safe to be enabled for n900, but won't do anything
    on n900 as the IBE bit needs to be set with SMC.
    
    Also note that SoCs probably should also add checks and print warnings
    for the misconfigured IBE bit depending on the Cortex-A8 revision
    so the bootloaders can be fixed Cortex-A8 revisions later than
    r1p2 to not set the IBE bit.
    Tested-by: default avatarSebastian Reichel <sre@kernel.org>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    e748994f
proc-v7-2level.S 4.48 KB