powerpc: bad_page_fault get registers from regs
authorNicholas Piggin <npiggin@gmail.com>
Sat, 30 Jan 2021 13:08:21 +0000 (23:08 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 8 Feb 2021 13:02:09 +0000 (00:02 +1100)
Similar to the previous patch this makes interrupt handler function
types more regular so they can be wrapped with the next patch.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210130130852.2952424-12-npiggin@gmail.com
arch/powerpc/include/asm/bug.h
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/exceptions-64e.S
arch/powerpc/kernel/traps.c
arch/powerpc/mm/book3s64/hash_utils.c
arch/powerpc/mm/book3s64/slb.c
arch/powerpc/mm/fault.c
arch/powerpc/platforms/8xx/machine_check.c

index f7827e9..4220789 100644 (file)
 
 struct pt_regs;
 long do_page_fault(struct pt_regs *);
-extern void bad_page_fault(struct pt_regs *, unsigned long, int);
-void __bad_page_fault(struct pt_regs *regs, unsigned long address, int sig);
+void bad_page_fault(struct pt_regs *, int);
+void __bad_page_fault(struct pt_regs *regs, int sig);
 extern void _exception(int, struct pt_regs *, int, unsigned long);
 extern void _exception_pkey(struct pt_regs *, unsigned long, int);
 extern void die(const char *, struct pt_regs *, long);
index d6ea3f2..b102b40 100644 (file)
@@ -672,9 +672,8 @@ handle_page_fault:
        lwz     r0,_TRAP(r1)
        clrrwi  r0,r0,1
        stw     r0,_TRAP(r1)
-       mr      r5,r3
+       mr      r4,r3           /* err arg for bad_page_fault */
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       lwz     r4,_DAR(r1)
        bl      __bad_page_fault
        b       ret_from_except_full
 
index 1a7291d..003999c 100644 (file)
@@ -1016,9 +1016,8 @@ storage_fault_common:
        bne-    1f
        b       ret_from_except_lite
 1:     bl      save_nvgprs
-       mr      r5,r3
+       mr      r4,r3
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       ld      r4,_DAR(r1)
        bl      __bad_page_fault
        b       ret_from_except
 
index dfb0d33..f737014 100644 (file)
@@ -1612,7 +1612,7 @@ bad:
        if (user_mode(regs))
                _exception(sig, regs, code, regs->dar);
        else
-               bad_page_fault(regs, regs->dar, sig);
+               bad_page_fault(regs, sig);
 
 bail:
        exception_exit(prev_state);
index 9a499af..1a270cc 100644 (file)
@@ -1539,7 +1539,7 @@ long do_hash_fault(struct pt_regs *regs)
         * the access, or panic if there isn't a handler.
         */
        if (unlikely(in_nmi())) {
-               bad_page_fault(regs, ea, SIGSEGV);
+               bad_page_fault(regs, SIGSEGV);
                return 0;
        }
 
@@ -1578,7 +1578,7 @@ long do_hash_fault(struct pt_regs *regs)
                        else
                                _exception(SIGBUS, regs, BUS_ADRERR, ea);
                } else {
-                       bad_page_fault(regs, ea, SIGBUS);
+                       bad_page_fault(regs, SIGBUS);
                }
                err = 0;
 
index 985902c..c581548 100644 (file)
@@ -874,7 +874,7 @@ void do_bad_slb_fault(struct pt_regs *regs)
                if (user_mode(regs))
                        _exception(SIGSEGV, regs, SEGV_BNDERR, regs->dar);
                else
-                       bad_page_fault(regs, regs->dar, SIGSEGV);
+                       bad_page_fault(regs, SIGSEGV);
        } else if (err == -EINVAL) {
                unrecoverable_exception(regs);
        } else {
index 273ff84..5dd3248 100644 (file)
@@ -566,7 +566,7 @@ NOKPROBE_SYMBOL(do_page_fault);
  * It is called from the DSI and ISI handlers in head.S and from some
  * of the procedures in traps.c.
  */
-void __bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
+void __bad_page_fault(struct pt_regs *regs, int sig)
 {
        int is_write = page_fault_is_write(regs->dsisr);
 
@@ -604,7 +604,7 @@ void __bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
        die("Kernel access of bad area", regs, sig);
 }
 
-void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
+void bad_page_fault(struct pt_regs *regs, int sig)
 {
        const struct exception_table_entry *entry;
 
@@ -613,5 +613,5 @@ void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
        if (entry)
                instruction_pointer_set(regs, extable_fixup(entry));
        else
-               __bad_page_fault(regs, address, sig);
+               __bad_page_fault(regs, sig);
 }
index 88dedf3..6563659 100644 (file)
@@ -26,7 +26,7 @@ int machine_check_8xx(struct pt_regs *regs)
         * to deal with that than having a wart in the mcheck handler.
         * -- BenH
         */
-       bad_page_fault(regs, regs->dar, SIGBUS);
+       bad_page_fault(regs, SIGBUS);
        return 1;
 #else
        return 0;