• Mark Rutland's avatar
    arm64: mm: fix inverted PAR_EL1.F check · 38137335
    Mark Rutland authored
    When detecting a spurious EL1 translation fault, we have the CPU retry
    the translation using an AT S1E1R instruction, and inspect PAR_EL1 to
    determine if the fault was spurious.
    
    When PAR_EL1.F == 0, the AT instruction successfully translated the
    address without a fault, which implies the original fault was spurious.
    However, in this case we return false and treat the original fault as if
    it was not spurious.
    
    Invert the return value so that we treat such a case as spurious.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Fixes: 42f91093 ("arm64: mm: Ignore spurious translation faults taken from the kernel")
    Tested-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarWill Deacon <will@kernel.org>
    38137335
fault.c 26.3 KB