• Christophe Leroy's avatar
    powerpc: Fix 32-bit handling of MSR_EE on exceptions · 40530db7
    Christophe Leroy authored
    [text mostly copied from benh's RFC/WIP]
    
    ppc32 are still doing something rather gothic and wrong on 32-bit
    which we stopped doing on 64-bit a while ago.
    
    We have that thing where some handlers "copy" the EE value from the
    original stack frame into the new MSR before transferring to the
    handler.
    
    Thus for a number of exceptions, we enter the handlers with interrupts
    enabled.
    
    This is rather fishy, some of the stuff that handlers might do early
    on such as irq_enter/exit or user_exit, context tracking, etc...
    should be run with interrupts off afaik.
    
    Generally our handlers know when to re-enable interrupts if needed.
    
    The problem we were having is that we assumed these interrupts would
    return with interrupts enabled. However that isn't the case.
    
    Instead, this patch changes things so that we always enter exception
    handlers with interrupts *off* with the notable exception of syscalls
    which are special (and get a fast path).
    Suggested-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    40530db7
entry_32.S 33.7 KB