• Benjamin Herrenschmidt's avatar
    powerpc: Call do_page_fault() with interrupts off · a546498f
    Benjamin Herrenschmidt authored
    We currently turn interrupts back to their previous state before
    calling do_page_fault(). This can be annoying when debugging as
    a bad fault will potentially have lost some processor state before
    getting into the debugger.
    
    We also end up calling some generic code with interrupts enabled
    such as notify_page_fault() with interrupts enabled, which could
    be unexpected.
    
    This changes our code to behave more like other architectures,
    and make the assembly entry code call into do_page_faults() with
    interrupts disabled. They are conditionally re-enabled from
    within do_page_fault() in the same spot x86 does it.
    
    While there, add the might_sleep() test in the case of a successful
    trylock of the mmap semaphore, again like x86.
    
    Also fix a bug in the existing assembly where r12 (_MSR) could get
    clobbered by C calls (the DTL accounting in the exception common
    macro and DISABLE_INTS) in some cases.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    ---
    
    v2. Add the r12 clobber fix
    a546498f
head_40x.S 28 KB