In the pmap_set_pg() function, which enables the global bit on the
ptes mapping the kernel on CPUs where global TLB entries are supported, revert to flushing only non-global entries, i.e. to the pre-r291688 state. There is no need to flush global TLB entries, since only global entries created during the previous iterations of the loop could exist at this moment. Submitted by: alc Differential revision: https://reviews.freebsd.org/D4368
This commit is contained in:
parent
4d982a2562
commit
1ac627629b
@ -655,7 +655,7 @@ pmap_set_pg(void)
|
||||
va = KERNBASE + KERNLOAD;
|
||||
while (va < endva) {
|
||||
pdir_pde(PTD, va) |= pgeflag;
|
||||
invltlb_glob(); /* Play it safe, invltlb() every time */
|
||||
invltlb(); /* Flush non-PG_G entries. */
|
||||
va += NBPDR;
|
||||
}
|
||||
} else {
|
||||
@ -664,7 +664,7 @@ pmap_set_pg(void)
|
||||
pte = vtopte(va);
|
||||
if (*pte)
|
||||
*pte |= pgeflag;
|
||||
invltlb_glob(); /* Play it safe, invltlb() every time */
|
||||
invltlb(); /* Flush non-PG_G entries. */
|
||||
va += PAGE_SIZE;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user