summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-02-15 10:20:45 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-02-15 10:20:48 +0100
commitd3ef1ba20f7b6e1af5387c48d58da38cc55d3b79 (patch)
treed09eb2f04e0bb13b431e5129100bbdb506c247ff
parent2fa00abdeb16e50dd3e98674784c9bd37a173926 (diff)
pmap: Do not TLB shootdown IPI for mapwindow updates
These are used only temporarily by the current processor only, so we don't need to notify other processors about them. We however then should flush TLB at allocation, to make sure we don't have some remnant.
-rw-r--r--i386/intel/pmap.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c
index 0387fa8d..3b52deb3 100644
--- a/i386/intel/pmap.c
+++ b/i386/intel/pmap.c
@@ -1022,6 +1022,7 @@ pmap_mapwindow_t *pmap_get_mapwindow(pt_entry_t entry)
WRITE_PTE(map->entry, entry);
#endif /* MACH_PV_PAGETABLES */
simple_unlock(&pmapwindows_lock);
+ INVALIDATE_TLB(kernel_pmap, map->vaddr, map->vaddr + PAGE_SIZE);
return map;
}
@@ -1038,7 +1039,7 @@ void pmap_put_mapwindow(pmap_mapwindow_t *map)
WRITE_PTE(map->entry, 0);
#endif /* MACH_PV_PAGETABLES */
simple_unlock(&pmapwindows_lock);
- PMAP_UPDATE_TLBS(kernel_pmap, map->vaddr, map->vaddr + PAGE_SIZE);
+ INVALIDATE_TLB(kernel_pmap, map->vaddr, map->vaddr + PAGE_SIZE);
}
void pmap_virtual_space(