Author: andrew
Date: Wed Sep  7 15:37:39 2016
New Revision: 305540
URL: https://svnweb.freebsd.org/changeset/base/305540

Log:
  MFC 303585, 303587:
   - Relax the barriers around a TLB invalidation
   - Fix the comment above pmap_invalidate_page
  
  Obtained from:        ABT Systems Ltd
  Sponsored by: The FreeBSD Foundation

Modified:
  stable/11/sys/arm64/arm64/pmap.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/arm64/arm64/pmap.c
==============================================================================
--- stable/11/sys/arm64/arm64/pmap.c    Wed Sep  7 14:24:29 2016        
(r305539)
+++ stable/11/sys/arm64/arm64/pmap.c    Wed Sep  7 15:37:39 2016        
(r305540)
@@ -856,8 +856,7 @@ pmap_init(void)
 }
 
 /*
- * Normal, non-SMP, invalidation functions.
- * We inline these within pmap.c for speed.
+ * Invalidate a single TLB entry.
  */
 PMAP_INLINE void
 pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
@@ -865,9 +864,9 @@ pmap_invalidate_page(pmap_t pmap, vm_off
 
        sched_pin();
        __asm __volatile(
-           "dsb  sy            \n"
+           "dsb  ishst         \n"
            "tlbi vaae1is, %0   \n"
-           "dsb  sy            \n"
+           "dsb  ish           \n"
            "isb                \n"
            : : "r"(va >> PAGE_SHIFT));
        sched_unpin();
@@ -879,13 +878,13 @@ pmap_invalidate_range(pmap_t pmap, vm_of
        vm_offset_t addr;
 
        sched_pin();
-       __asm __volatile("dsb   sy");
+       dsb(ishst);
        for (addr = sva; addr < eva; addr += PAGE_SIZE) {
                __asm __volatile(
                    "tlbi vaae1is, %0" : : "r"(addr >> PAGE_SHIFT));
        }
        __asm __volatile(
-           "dsb  sy    \n"
+           "dsb  ish   \n"
            "isb        \n");
        sched_unpin();
 }
@@ -896,9 +895,9 @@ pmap_invalidate_all(pmap_t pmap)
 
        sched_pin();
        __asm __volatile(
-           "dsb  sy            \n"
+           "dsb  ishst         \n"
            "tlbi vmalle1is     \n"
-           "dsb  sy            \n"
+           "dsb  ish           \n"
            "isb                \n");
        sched_unpin();
 }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to