From 1ac627629b0da0e13712763412b5286ef34984d0 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 5 Dec 2015 08:46:41 +0000 Subject: [PATCH] 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 --- sys/i386/i386/pmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index dff9fc555df4..5ae41a316deb 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -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; } }