aboutsummaryrefslogtreecommitdiff
path: root/i386/intel
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 /i386/intel
parent2fa00abdeb16e50dd3e98674784c9bd37a173926 (diff)
downloadgnumach-d3ef1ba20f7b6e1af5387c48d58da38cc55d3b79.tar.gz
gnumach-d3ef1ba20f7b6e1af5387c48d58da38cc55d3b79.tar.bz2
gnumach-d3ef1ba20f7b6e1af5387c48d58da38cc55d3b79.zip
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.
Diffstat (limited to 'i386/intel')
-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(