• Nicholas Piggin's avatar
    powerpc/64s/hash: improve context tracking of hash faults · a008f8f9
    Nicholas Piggin authored
    This moves the 64s/hash context tracking from hash_page_mm() to
    __do_hash_fault(), so it's no longer called by OCXL / SPU
    accelerators, which was certainly the wrong thing to be doing,
    because those callers are not low level interrupt handlers, so
    should have entered a kernel context tracking already.
    
    Then remain in kernel context for the duration of the fault,
    rather than enter/exit for the hash fault then enter/exit for
    the page fault, which is pointless.
    
    Even still, calling exception_enter/exit in __do_hash_fault seems
    questionable because that's touching per-cpu variables, tracing,
    etc., which might have been interrupted by this hash fault or
    themselves cause hash faults. But maybe I miss something because
    hash_page_mm very deliberately calls trace_hash_fault too, for
    example. So for now go with it, it's no worse than before, in this
    regard.
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210130130852.2952424-32-npiggin@gmail.com
    a008f8f9
hash_utils.c 55 KB