powerpc/32s: In add_hash_page(), calculate VSID later
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 24 Nov 2020 19:51:56 +0000 (19:51 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 9 Dec 2020 12:48:14 +0000 (23:48 +1100)
VSID is only for create_hpte(). When _PAGE_HASHPTE is
already set, add_hash_page() bails out without calling
create_hpte() and doesn't need the value of VSID.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/3907199974c89b85a3441cf3f528751173b7649c.1606247495.git.christophe.leroy@csgroup.eu
arch/powerpc/mm/book3s32/hash_low.S

index 6c350c5e369eb9a586d6177a6068e76958e04fd7..b0bb9d19340084541753ff05204b92d28a69b717 100644 (file)
@@ -182,12 +182,6 @@ _GLOBAL(add_hash_page)
        mflr    r0
        stw     r0,4(r1)
 
-       /* Convert context and va to VSID */
-       mulli   r3,r3,897*16            /* multiply context by context skew */
-       rlwinm  r0,r4,4,28,31           /* get ESID (top 4 bits of va) */
-       mulli   r0,r0,0x111             /* multiply by ESID skew */
-       add     r3,r3,r0                /* note create_hpte trims to 24 bits */
-
 #ifdef CONFIG_SMP
        lwz     r8,TASK_CPU(r2)         /* to go in mmu_hash_lock */
        oris    r8,r8,12
@@ -251,6 +245,12 @@ _GLOBAL(add_hash_page)
        stwcx.  r5,0,r8
        bne-    1b
 
+       /* Convert context and va to VSID */
+       mulli   r3,r3,897*16            /* multiply context by context skew */
+       rlwinm  r0,r4,4,28,31           /* get ESID (top 4 bits of va) */
+       mulli   r0,r0,0x111             /* multiply by ESID skew */
+       add     r3,r3,r0                /* note create_hpte trims to 24 bits */
+
        bl      create_hpte
 
 9: