With non-volatile registers saved on interrupt, bad_page_fault
can now be called by do_page_fault.

Signed-off-by: Nicholas Piggin <[email protected]>
---
 arch/powerpc/kernel/exceptions-64e.S | 6 ------
 arch/powerpc/mm/fault.c              | 4 ++--
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kernel/exceptions-64e.S 
b/arch/powerpc/kernel/exceptions-64e.S
index eef8b5bc3cc8..d9151f3ae35d 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -962,12 +962,6 @@ storage_fault_common:
        ld      r14,PACA_EXGEN+EX_R14(r13)
        ld      r15,PACA_EXGEN+EX_R15(r13)
        bl      do_page_fault
-       cmpdi   r3,0
-       bne-    1f
-       b       interrupt_return
-       mr      r4,r3
-       addi    r3,r1,STACK_FRAME_OVERHEAD
-       bl      __bad_page_fault
        b       interrupt_return
 
 /*
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index bb368257b55c..f271715a1c0a 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -552,11 +552,11 @@ static long __do_page_fault(struct pt_regs *regs)
        if (likely(entry)) {
                instruction_pointer_set(regs, extable_fixup(entry));
                return 0;
-       } else if (IS_ENABLED(CONFIG_PPC_BOOK3S_64)) {
+       } else if (IS_ENABLED(CONFIG_PPC64)) {
                __bad_page_fault(regs, err);
                return 0;
        } else {
-               /* 32 and 64e handle the bad page fault in asm */
+               /* 32-bit handles the bad page fault in asm */
                return err;
        }
 }
-- 
2.23.0

Reply via email to