Index: sys/amd64/amd64/pmap.c =================================================================== --- sys/amd64/amd64/pmap.c +++ sys/amd64/amd64/pmap.c @@ -1434,6 +1434,12 @@ sched_unpin(); } +/* + * Roughly PMAP_CLFLUSH_THRESHOLD * (PAGE_SIZE / CACHE_LINE_SIZE), or 32k + * potential TLB entries to invalidate. + */ +#define PMAP_INVLPG_THRESHOLD (128 * 1024 * 1024) + void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { @@ -1441,6 +1447,11 @@ vm_offset_t addr; u_int cpuid, i; + if (eva - sva >= PMAP_INVLPG_THRESHOLD) { + pmap_invalidate_all(pmap); + return; + } + if (pmap_type_guest(pmap)) { pmap_invalidate_ept(pmap); return;