diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-02-15 10:20:45 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-02-15 10:20:48 +0100 |
commit | d3ef1ba20f7b6e1af5387c48d58da38cc55d3b79 (patch) | |
tree | d09eb2f04e0bb13b431e5129100bbdb506c247ff /i386/intel | |
parent | 2fa00abdeb16e50dd3e98674784c9bd37a173926 (diff) | |
download | gnumach-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.c | 3 |
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( |