• Michael Ellerman's avatar
    powerpc: Fix faults caused by radix patching of SLB miss handler · 6e914ee6
    Michael Ellerman authored
    As part of the Radix MMU support we added some feature sections in the
    SLB miss handler. These are intended to catch the case that we
    incorrectly take an SLB miss when Radix is enabled, and instead of
    crashing weirdly they bail out to a well defined exit path and trigger
    an oops.
    
    However the way they were written meant the bailout case was enabled by
    default until we did CPU feature patching.
    
    On powermacs the early debug prints in setup_system() can cause an SLB
    miss, which happens before code patching, and so the SLB miss handler
    would incorrectly bailout and crash during boot.
    
    Fix it by inverting the sense of the feature section, so that the code
    which is in place at boot is correct for the hash case. Once we
    determine we are using Radix - which will never happen on a powermac -
    only then do we patch in the bailout case which unconditionally jumps.
    
    Fixes: caca285e ("powerpc/mm/radix: Use STD_MMU_64 to properly isolate hash related code")
    Reported-by: default avatarDenis Kirjanov <kda@linux-powerpc.org>
    Tested-by: default avatarDenis Kirjanov <kda@linux-powerpc.org>
    Reviewed-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    6e914ee6
exceptions-64s.S 43 KB