Page MenuHomeFreeBSD

D13955.id.diff
No OneTemporary

D13955.id.diff

Index: head/sys/arm64/arm64/pmap.c
===================================================================
--- head/sys/arm64/arm64/pmap.c
+++ head/sys/arm64/arm64/pmap.c
@@ -908,11 +908,10 @@
}
static __inline void
-pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
+pmap_invalidate_range_nopin(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
vm_offset_t addr;
- sched_pin();
dsb(ishst);
for (addr = sva; addr < eva; addr += PAGE_SIZE) {
__asm __volatile(
@@ -921,6 +920,14 @@
__asm __volatile(
"dsb ish \n"
"isb \n");
+}
+
+static __inline void
+pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
+{
+
+ sched_pin();
+ pmap_invalidate_range_nopin(pmap, sva, eva);
sched_unpin();
}
@@ -2667,7 +2674,7 @@
/* Clear the old mapping */
pmap_load_clear(pte);
- pmap_invalidate_range(pmap, va, va + size);
+ pmap_invalidate_range_nopin(pmap, va, va + size);
/* Create the new mapping */
pmap_load_store(pte, newpte);

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 21, 9:48 PM (3 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25809594
Default Alt Text
D13955.id.diff (994 B)

Event Timeline