Index: sys/i386/i386/pmap.c =================================================================== --- sys/i386/i386/pmap.c +++ sys/i386/i386/pmap.c @@ -644,7 +644,7 @@ pmap_set_pg(void) { pt_entry_t *pte; - vm_offset_t va, endva; + vm_offset_t va, vas, endva; if (pgeflag == 0) return; @@ -655,8 +655,10 @@ va = KERNBASE + KERNLOAD; while (va < endva) { pdir_pde(PTD, va) |= pgeflag; - invltlb_glob(); /* Play it safe, invltlb() every time */ + vas = va; va += NBPDR; + for (; vas < va; vas += PAGE_SIZE) + invlpg(vas); } } else { va = (vm_offset_t)btext; @@ -664,7 +666,7 @@ pte = vtopte(va); if (*pte) *pte |= pgeflag; - invltlb_glob(); /* Play it safe, invltlb() every time */ + invlpg(va); va += PAGE_SIZE; } }