]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
s390/mm: Let dump_fault_info() print additional information
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 3 Nov 2025 15:25:33 +0000 (16:25 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Fri, 14 Nov 2025 10:34:27 +0000 (11:34 +0100)
Let dump_fault_info() print additional information to make debugging
easier:

Print "FSI" if the access-exception-fetch/store-indication facility is
installed. If it is installed the TEID may also indicate if an exception
happened because of a fetch or a store operation.

Print "SOP", "ESOP-1", or "ESOP-2" depending on the type of the installed
Suppression-on-Protection facility. This also gives additional information
about the validity and meaning of the TEID bits.

The output is changed from something like:

Failing address: 0000000000000000 TEID: 0000000000000803

to

Failing address: 0000000000000000 TEID: 0000000000000803 ESOP-2 FSI

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/mm/fault.c

index 639c4f610fdd7ec2333b27413f155aacfdb9f4af..20804f1f781a47da1f93e898c3e42eba807d637a 100644 (file)
@@ -133,8 +133,17 @@ static void dump_fault_info(struct pt_regs *regs)
        union teid teid = { .val = regs->int_parm_long };
        unsigned long asce;
 
-       pr_alert("Failing address: %016lx TEID: %016lx\n",
+       pr_alert("Failing address: %016lx TEID: %016lx",
                 get_fault_address(regs), teid.val);
+       if (test_facility(131))
+               pr_cont(" ESOP-2");
+       else if (machine_has_esop())
+               pr_cont(" ESOP-1");
+       else
+               pr_cont(" SOP");
+       if (test_facility(75))
+               pr_cont(" FSI");
+       pr_cont("\n");
        pr_alert("Fault in ");
        switch (teid.as) {
        case PSW_BITS_AS_HOME: