Thread (59 messages) 59 messages, 5 authors, 2021-03-08

Re: [PATCH v5 09/22] powerpc/syscall: Make interrupt.c buildable on PPC32

From: Nicholas Piggin <npiggin@gmail.com>
Date: 2021-02-09 07:52:04
Also in: lkml

Excerpts from Christophe Leroy's message of February 9, 2021 4:02 pm:

Le 09/02/2021 à 02:27, Nicholas Piggin a écrit :
quoted
Excerpts from Christophe Leroy's message of February 9, 2021 1:10 am:
quoted
To allow building interrupt.c on PPC32, ifdef out specific PPC64
code or use helpers which are available on both PP32 and PPC64

Modify Makefile to always build interrupt.o

Signed-off-by: Christophe Leroy <redacted>
---
v5:
- Also for interrupt exit preparation
- Opted out kuap related code, ppc32 keeps it in ASM for the time being
---
  arch/powerpc/kernel/Makefile    |  4 ++--
  arch/powerpc/kernel/interrupt.c | 31 ++++++++++++++++++++++++-------
  2 files changed, 26 insertions(+), 9 deletions(-)
quoted
quoted
diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
index d6be4f9a67e5..2dac4d2bb1cf 100644
--- a/arch/powerpc/kernel/interrupt.c
+++ b/arch/powerpc/kernel/interrupt.c
@@ -39,7 +39,7 @@ notrace long system_call_exception(long r3, long r4, long r5,
  		BUG_ON(!(regs->msr & MSR_RI));
  	BUG_ON(!(regs->msr & MSR_PR));
  	BUG_ON(!FULL_REGS(regs));
-	BUG_ON(regs->softe != IRQS_ENABLED);
+	BUG_ON(arch_irq_disabled_regs(regs));
  
  #ifdef CONFIG_PPC_PKEY
  	if (mmu_has_feature(MMU_FTR_PKEY)) {
@@ -65,7 +65,9 @@ notrace long system_call_exception(long r3, long r4, long r5,
  			isync();
  	} else
  #endif
+#ifdef CONFIG_PPC64
  		kuap_check_amr();
+#endif
Wouldn't mind trying to get rid of these ifdefs at some point, but
there's some kuap / keys changes going on recently so I'm happy enough
to let this settle then look at whether we can refactor.
I have a follow up series that implements interrupts entries/exits in C and that removes all kuap 
assembly, I will likely release it as RFC later today.
quoted
quoted
  
  	account_cpu_user_entry();
  
@@ -318,7 +323,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
  	return ret;
  }
  
-#ifdef CONFIG_PPC_BOOK3S /* BOOK3E not yet using this */
+#ifndef CONFIG_PPC_BOOK3E_64 /* BOOK3E not yet using this */
  notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs, unsigned long msr)
  {
  #ifdef CONFIG_PPC_BOOK3E
Why are you building this for 32? I don't mind if it's just to keep
things similar and make it build for now, but you're not using it yet,
right?
The series using that will follow, I thought it would be worth doing this at once.
Yeah that's fine by me then.

Thanks,
Nick
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help