svn commit: r305540 - stable/11/sys/arm64/arm64
Andrew Turner
andrew at FreeBSD.org
Wed Sep 7 15:37:41 UTC 2016
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();
}
More information about the svn-src-stable-11
mailing list