Author: alc
Date: Fri Jun 14 22:06:43 2019
New Revision: 349042
URL: https://svnweb.freebsd.org/changeset/base/349042

Log:
  Batch the TLB invalidations that are performed by pmap_protect() rather
  than performing them one at a time.
  
  MFC after:    10 days

Modified:
  head/sys/arm64/arm64/pmap.c

Modified: head/sys/arm64/arm64/pmap.c
==============================================================================
--- head/sys/arm64/arm64/pmap.c Fri Jun 14 20:35:37 2019        (r349041)
+++ head/sys/arm64/arm64/pmap.c Fri Jun 14 22:06:43 2019        (r349042)
@@ -2791,8 +2791,15 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t
                for (l3p = pmap_l2_to_l3(l2, sva); sva != va_next; l3p++,
                    sva += L3_SIZE) {
                        l3 = pmap_load(l3p);
-                       if (!pmap_l3_valid(l3))
+                       if (!pmap_l3_valid(l3)) {
+                               if (va != va_next) {
+                                       pmap_invalidate_range(pmap, va, sva);
+                                       va = va_next;
+                               }
                                continue;
+                       }
+                       if (va == va_next)
+                               va = sva;
 
                        nbits = 0;
                        if ((prot & VM_PROT_WRITE) == 0) {
@@ -2807,9 +2814,9 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t
                                nbits |= ATTR_XN;
 
                        pmap_set(l3p, nbits);
-                       /* XXX: Use pmap_invalidate_range */
-                       pmap_invalidate_page(pmap, sva);
                }
+               if (va != va_next)
+                       pmap_invalidate_range(pmap, va, sva);
        }
        PMAP_UNLOCK(pmap);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to