arm64: mm: decode xFSC in mem_abort_decode()
authorMark Rutland <mark.rutland@arm.com>
Tue, 8 Jun 2021 12:37:42 +0000 (13:37 +0100)
committerWill Deacon <will@kernel.org>
Tue, 8 Jun 2021 16:35:31 +0000 (17:35 +0100)
It would be helpful if mem_abort_decode() could decode the DFSC/IFSC, as
this can make it easier to identify common bugs (e.g. accesses which
trigger alignment faults) without having to manually decode the xFSC
value.

Decode the xFSC in mem_abort_decode().

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20210608123742.11921-1-mark.rutland@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/mm/fault.c

index 5c855b2..6786cf1 100644 (file)
@@ -99,6 +99,8 @@ static void mem_abort_decode(unsigned int esr)
        pr_alert("  EA = %lu, S1PTW = %lu\n",
                 (esr & ESR_ELx_EA) >> ESR_ELx_EA_SHIFT,
                 (esr & ESR_ELx_S1PTW) >> ESR_ELx_S1PTW_SHIFT);
+       pr_alert("  FSC = 0x%02x: %s\n", (esr & ESR_ELx_FSC),
+                esr_to_fault_info(esr)->name);
 
        if (esr_is_data_abort(esr))
                data_abort_decode(esr);