powerpc/mm/radix: Remove unnecessary ptesync
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Sat, 1 Apr 2017 14:41:48 +0000 (20:11 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 10 Apr 2017 21:46:02 +0000 (07:46 +1000)
For a tlbiel with pid, we need to issue tlbiel with set number encoded. We
don't need to do ptesync for each of those. Instead we need one for the entire
tlbiel pid operation.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Acked-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/tlb-radix.c

index f3e58bd60d1a2e6097432ee9467f30071b6524ea..b68b5219cf458ff4371fe45a7f0dc21baaea9f98 100644 (file)
@@ -34,10 +34,8 @@ static inline void __tlbiel_pid(unsigned long pid, int set,
        prs = 1; /* process scoped */
        r = 1;   /* raidx format */
 
-       asm volatile("ptesync": : :"memory");
        asm volatile(PPC_TLBIEL(%0, %4, %3, %2, %1)
                     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
-       asm volatile("ptesync": : :"memory");
 }
 
 /*
@@ -47,9 +45,11 @@ static inline void _tlbiel_pid(unsigned long pid, unsigned long ric)
 {
        int set;
 
+       asm volatile("ptesync": : :"memory");
        for (set = 0; set < POWER9_TLB_SETS_RADIX ; set++) {
                __tlbiel_pid(pid, set, ric);
        }
+       asm volatile("ptesync": : :"memory");
        asm volatile(PPC_INVALIDATE_ERAT "; isync" : : :"memory");
 }