Thread (25 messages) flat view 25 messages, 3 authors, 2021-03-22

Re: [PATCH 07/10] powerpc/64e/interrupt: handle bad_page_fault in C

From: Christophe Leroy <hidden>
Date: 2021-03-15 14:08:16


Le 15/03/2021 à 04:17, Nicholas Piggin a écrit :
quoted hunk ↗ jump to hunk
With non-volatile registers saved on interrupt, bad_page_fault
can now be called by do_page_fault.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
  arch/powerpc/kernel/exceptions-64e.S | 6 ------
  arch/powerpc/mm/fault.c              | 5 +----
  2 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
index a059ab3542c2..b08c84e0fa56 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -937,12 +937,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
Then __bad_page_fault() can be static now.
quoted hunk ↗ jump to hunk
  	b	interrupt_return
  
  /*
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index 2e54bac99a22..44833660b21d 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -552,12 +552,9 @@ 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_BOOK3E_64)) {
+	} else {
  		__bad_page_fault(regs, err);
  		return 0;
-	} else {
-		/* 32 and 64e handle the bad page fault in asm */
-		return err;
  	}
  }
  NOKPROBE_SYMBOL(__do_page_fault);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help