[PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE2700d REVIEWED: 4 (4M)

1 review trailer.

6 messages, 4 authors, 2019-03-18 · open the first message on its own page

[PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

From: Christophe Leroy <hidden>
Date: 2019-03-08 07:05:27

Not only the 603 but all 6xx need SPRN_PGDIR to be initialised at
startup. This patch move it from __setup_cpu_603() to start_here()
and __secondary_start(), close to the initialisation of SPRN_THREAD.

Previously, virt addr of PGDIR was retrieved from thread struct.
Now that it is the phys addr which is stored in SPRN_PGDIR,
hash_page() shall not convert it to phys anymore.
This patch removes the conversion.

Fixes: 93c4a162b014("powerpc/6xx: Store PGDIR physical address in a SPRG")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Christophe Leroy <redacted>
---
 arch/powerpc/kernel/cpu_setup_6xx.S | 3 ---
 arch/powerpc/kernel/head_32.S       | 6 ++++++
 arch/powerpc/mm/hash_low_32.S       | 8 ++++----
 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/kernel/cpu_setup_6xx.S b/arch/powerpc/kernel/cpu_setup_6xx.S
index 6f1c11e0691f..7534ecff5e92 100644
--- a/arch/powerpc/kernel/cpu_setup_6xx.S
+++ b/arch/powerpc/kernel/cpu_setup_6xx.S
@@ -24,9 +24,6 @@ BEGIN_MMU_FTR_SECTION
 	li	r10,0
 	mtspr	SPRN_SPRG_603_LRU,r10		/* init SW LRU tracking */
 END_MMU_FTR_SECTION_IFSET(MMU_FTR_NEED_DTLB_SW_LRU)
-	lis	r10, (swapper_pg_dir - PAGE_OFFSET)@h
-	ori	r10, r10, (swapper_pg_dir - PAGE_OFFSET)@l
-	mtspr	SPRN_SPRG_PGDIR, r10
 
 BEGIN_FTR_SECTION
 	bl	__init_fpu_registers
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index ce6a972f2584..48051c8977c5 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -855,6 +855,9 @@ __secondary_start:
 	li	r3,0
 	stw	r3, RTAS_SP(r4)		/* 0 => not in RTAS */
 #endif
+	lis	r4, (swapper_pg_dir - PAGE_OFFSET)@h
+	ori	r4, r4, (swapper_pg_dir - PAGE_OFFSET)@l
+	mtspr	SPRN_SPRG_PGDIR, r4
 
 	/* enable MMU and jump to start_secondary */
 	li	r4,MSR_KERNEL
@@ -942,6 +945,9 @@ start_here:
 	li	r3,0
 	stw	r3, RTAS_SP(r4)		/* 0 => not in RTAS */
 #endif
+	lis	r4, (swapper_pg_dir - PAGE_OFFSET)@h
+	ori	r4, r4, (swapper_pg_dir - PAGE_OFFSET)@l
+	mtspr	SPRN_SPRG_PGDIR, r4
 
 	/* stack */
 	lis	r1,init_thread_union@ha
diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S
index 1f13494efb2b..a6c491f18a04 100644
--- a/arch/powerpc/mm/hash_low_32.S
+++ b/arch/powerpc/mm/hash_low_32.S
@@ -70,12 +70,12 @@ _GLOBAL(hash_page)
 	lis	r0,KERNELBASE@h		/* check if kernel address */
 	cmplw	0,r4,r0
 	ori	r3,r3,_PAGE_USER|_PAGE_PRESENT /* test low addresses as user */
-	mfspr	r5, SPRN_SPRG_PGDIR	/* virt page-table root */
+	mfspr	r5, SPRN_SPRG_PGDIR	/* phys page-table root */
 	blt+	112f			/* assume user more likely */
-	lis	r5,swapper_pg_dir@ha	/* if kernel address, use */
-	addi	r5,r5,swapper_pg_dir@l	/* kernel page table */
+	lis	r5, (swapper_pg_dir - PAGE_OFFSET)@ha	/* if kernel address, use */
+	addi	r5 ,r5 ,(swapper_pg_dir - PAGE_OFFSET)@l	/* kernel page table */
 	rlwimi	r3,r9,32-12,29,29	/* MSR_PR -> _PAGE_USER */
-112:	tophys(r5, r5)
+112:
 #ifndef CONFIG_PTE_64BIT
 	rlwimi	r5,r4,12,20,29		/* insert top 10 bits of address */
 	lwz	r8,0(r5)		/* get pmd entry */
-- 
2.13.3

Re: [PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

From: Segher Boessenkool <hidden>
Date: 2019-03-08 16:04:48

On Fri, Mar 08, 2019 at 07:05:22AM +0000, Christophe Leroy wrote:
Not only the 603 but all 6xx need SPRN_PGDIR to be initialised at
startup. This patch move it from __setup_cpu_603() to start_here()
and __secondary_start(), close to the initialisation of SPRN_THREAD.
I thought you meant an SPR I did not know about.  But you just misspelled
SPRN_SPRG_PGDIR :-)


Segher

Re: [PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

From: Christophe Leroy <hidden>
Date: 2019-03-08 16:06:25


Le 08/03/2019 à 17:03, Segher Boessenkool a écrit :
On Fri, Mar 08, 2019 at 07:05:22AM +0000, Christophe Leroy wrote:
quoted
Not only the 603 but all 6xx need SPRN_PGDIR to be initialised at
startup. This patch move it from __setup_cpu_603() to start_here()
and __secondary_start(), close to the initialisation of SPRN_THREAD.
I thought you meant an SPR I did not know about.  But you just misspelled
SPRN_SPRG_PGDIR :-)
Oops.

Michael, can you fix the commit text (and subject) when applying ?

Thanks
Christophe

Re: [PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

From: Christophe Leroy <hidden>
Date: 2019-03-15 13:20:14

Michael,

Are you able to get this merged before 5.1-rc1 comes out ?

Thanks
Christophe

Le 08/03/2019 à 17:06, Christophe Leroy a écrit :

Le 08/03/2019 à 17:03, Segher Boessenkool a écrit :
quoted
On Fri, Mar 08, 2019 at 07:05:22AM +0000, Christophe Leroy wrote:
quoted
Not only the 603 but all 6xx need SPRN_PGDIR to be initialised at
startup. This patch move it from __setup_cpu_603() to start_here()
and __secondary_start(), close to the initialisation of SPRN_THREAD.
I thought you meant an SPR I did not know about.  But you just misspelled
SPRN_SPRG_PGDIR :-)
Oops.

Michael, can you fix the commit text (and subject) when applying ?

Re: [PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

From: Guenter Roeck <linux@roeck-us.net>
Date: 2019-03-16 22:47:27

On 3/15/19 6:20 AM, Christophe Leroy wrote:
Michael,

Are you able to get this merged before 5.1-rc1 comes out ?
Looks like this patch got lost. I don't see it in Michael's most recent
pull request, the one that got merged today.

Guenter
Thanks
Christophe

Le 08/03/2019 à 17:06, Christophe Leroy a écrit :
quoted

Le 08/03/2019 à 17:03, Segher Boessenkool a écrit :
quoted
On Fri, Mar 08, 2019 at 07:05:22AM +0000, Christophe Leroy wrote:
quoted
Not only the 603 but all 6xx need SPRN_PGDIR to be initialised at
startup. This patch move it from __setup_cpu_603() to start_here()
and __secondary_start(), close to the initialisation of SPRN_THREAD.
I thought you meant an SPR I did not know about.  But you just misspelled
SPRN_SPRG_PGDIR :-)
Oops.

Michael, can you fix the commit text (and subject) when applying ?

Re: [PATCH] powerpc/6xx: fix setup and use of SPRN_PGDIR for hash32

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2019-03-18 09:55:06

Guenter Roeck [off-list ref] writes:
On 3/15/19 6:20 AM, Christophe Leroy wrote:
quoted
Michael,

Are you able to get this merged before 5.1-rc1 comes out ?
Looks like this patch got lost. I don't see it in Michael's most recent
pull request, the one that got merged today.
Sorry, will pick it up for fixes now.

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