Subject: Re: [PATCH v3 03/19] powerpc: bad_page_fault, do_break get registers from regs

From: Nicholas Piggin <[email-masked]>
Date: Sat, 26 Dec 2020 18:19:04 +1000

Excerpts from Christophe Leroy's message of December 23, 2020 12:42 am:
> 
> 
> Le 28/11/2020 à 15:40, Nicholas Piggin a écrit :
>> Similar to the previous patch this makes interrupt handler function
>> types more regular so they can be wrapped with the next patch.
>> 
>> bad_page_fault and do_break are not performance critical.
> 
> I partly took your changes into one of my series, in different order though.
> 
> Please have a look at https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=221656 patches 
> 4 to 7

Thanks, I had a look. Seems like the result is basically the same as my 
series, so that's good if you like the end result now :)

> I think some of the changes are missing in your series, especially the changes in entry_32.S from 
> patch 7.

Okay I could take them in. In your patch 7/15, why do you leave this 
load of DSISR?

diff --git a/arch/powerpc/kernel/head_book3s_32.S b/arch/powerpc/kernel/head_book3s_32.S
index 15e6003fd3b8..0133a02d1d47 100644
--- a/arch/powerpc/kernel/head_book3s_32.S
+++ b/arch/powerpc/kernel/head_book3s_32.S
@@ -369,9 +369,9 @@  BEGIN_MMU_FTR_SECTION
 END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE)
 #endif
 #endif	/* CONFIG_VMAP_STACK */
-1:	mr	r4,r12
 	andis.	r5,r9,DSISR_SRR1_MATCH_32S@h /* Filter relevant SRR1 bits */
-	stw	r4, _DAR(r11)
+	stw	r12, _DAR(r11)
+	stw	r5, _DSISR(r11)
 	EXC_XFER_LITE(0x400, handle_page_fault)
 
 /* External interrupt */
@@ -693,7 +693,6 @@  handle_page_fault_tramp_1:
 #ifdef CONFIG_VMAP_STACK
 	EXCEPTION_PROLOG_2 handle_dar_dsisr=1
 #endif
-	lwz	r4, _DAR(r11)
 	lwz	r5, _DSISR(r11)
	^^^^^^^^^^^^^^^^^^^^^^
 	/* fall through */
 handle_page_fault_tramp_2:

?

> Will see how our two series make their way into mainline, yours needs rebase anyway.

I have it rebased, just waiting for a bit after merge window to repost.
Would be good if mine can go first so I don't have to redo the 64s page 
fault to C conversion again. AFAIKS after that you can just drop 4-7, no 
conflicts? (after bugs are fixed)

Thanks,
Nick