This matches other architectures, when we know there will be no
further accesses to the address (e.g., for teardown), page table
entries can be cleared non-atomically.

The comments about NMMU are bogus: all MMU notifiers (including NMMU)
are released at this point, with their TLBs flushed. An NMMU access at
this point would be a bug.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/include/asm/book3s/64/radix.h | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/include/asm/book3s/64/radix.h 
b/arch/powerpc/include/asm/book3s/64/radix.h
index 62a73a7a78a4..01f6c2ca7ecd 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -180,14 +180,8 @@ static inline pte_t radix__ptep_get_and_clear_full(struct 
mm_struct *mm,
        unsigned long old_pte;
 
        if (full) {
-               /*
-                * If we are trying to clear the pte, we can skip
-                * the DD1 pte update sequence and batch the tlb flush. The
-                * tlb flush batching is done by mmu gather code. We
-                * still keep the cmp_xchg update to make sure we get
-                * correct R/C bit which might be updated via Nest MMU.
-                */
-               old_pte = __radix_pte_update(ptep, ~0ul, 0);
+               old_pte = pte_val(*ptep);
+               *ptep = __pte(0);
        } else
                old_pte = radix__pte_update(mm, addr, ptep, ~0ul, 0, 0);
 
-- 
2.17.0

Reply via email to