svn commit: r215414 - in head/sys: amd64/amd64 i386/i386

Jung-uk Kim jkim at FreeBSD.org
Tue Nov 16 22:44:58 UTC 2010


Author: jkim
Date: Tue Nov 16 22:44:58 2010
New Revision: 215414
URL: http://svn.freebsd.org/changeset/base/215414

Log:
  Invalidate TLBs explicitly.  r1.4 of sys/i386/i386/i686_mem.c removed this
  code but probably it only worked by chance because modifying CR4.PGE bit
  causes invlidation of entire TLBs.  Since these are very rare events, this
  micro-optimization seems useless.
  
  Reviewed by:	jhb

Modified:
  head/sys/amd64/amd64/amd64_mem.c
  head/sys/i386/i386/i686_mem.c

Modified: head/sys/amd64/amd64/amd64_mem.c
==============================================================================
--- head/sys/amd64/amd64/amd64_mem.c	Tue Nov 16 22:23:20 2010	(r215413)
+++ head/sys/amd64/amd64/amd64_mem.c	Tue Nov 16 22:44:58 2010	(r215414)
@@ -321,6 +321,7 @@ amd64_mrstoreone(void *arg)
 
 	/* Flushes caches and TLBs. */
 	wbinvd();
+	invltlb();
 
 	/* Disable MTRRs (E = 0). */
 	wrmsr(MSR_MTRRdefType, rdmsr(MSR_MTRRdefType) & ~MTRR_DEF_ENABLE);
@@ -388,8 +389,9 @@ amd64_mrstoreone(void *arg)
 		wrmsr(msr + 1, msrv);
 	}
 
-	/* Flush caches, TLBs. */
+	/* Flush caches and TLBs. */
 	wbinvd();
+	invltlb();
 
 	/* Enable MTRRs. */
 	wrmsr(MSR_MTRRdefType, rdmsr(MSR_MTRRdefType) | MTRR_DEF_ENABLE);

Modified: head/sys/i386/i386/i686_mem.c
==============================================================================
--- head/sys/i386/i386/i686_mem.c	Tue Nov 16 22:23:20 2010	(r215413)
+++ head/sys/i386/i386/i686_mem.c	Tue Nov 16 22:44:58 2010	(r215414)
@@ -315,6 +315,7 @@ i686_mrstoreone(void *arg)
 
 	/* Flushes caches and TLBs. */
 	wbinvd();
+	invltlb();
 
 	/* Disable MTRRs (E = 0). */
 	wrmsr(MSR_MTRRdefType, rdmsr(MSR_MTRRdefType) & ~MTRR_DEF_ENABLE);
@@ -382,8 +383,9 @@ i686_mrstoreone(void *arg)
 		wrmsr(msr + 1, msrv);
 	}
 
-	/* Flush caches, TLBs. */
+	/* Flush caches and TLBs. */
 	wbinvd();
+	invltlb();
 
 	/* Enable MTRRs. */
 	wrmsr(MSR_MTRRdefType, rdmsr(MSR_MTRRdefType) | MTRR_DEF_ENABLE);


More information about the svn-src-head mailing list