svn commit: r265004 - head/sys/amd64/amd64

Konstantin Belousov kib at FreeBSD.org
Sun Apr 27 05:37:02 UTC 2014


Author: kib
Date: Sun Apr 27 05:37:01 2014
New Revision: 265004
URL: http://svnweb.freebsd.org/changeset/base/265004

Log:
  Same as it was done in r263878 for invlrng_handler(), fix order of
  checks for special pcid values in invlpg_pcid_handler().  Forst check
  for special values, and only then do PCID-specific page invalidation.
  
  Minor fix to the style compliance, declare local variable at the
  function start.
  
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/amd64/amd64/mp_machdep.c

Modified: head/sys/amd64/amd64/mp_machdep.c
==============================================================================
--- head/sys/amd64/amd64/mp_machdep.c	Sun Apr 27 05:28:14 2014	(r265003)
+++ head/sys/amd64/amd64/mp_machdep.c	Sun Apr 27 05:37:01 2014	(r265004)
@@ -1566,6 +1566,7 @@ invlpg_handler(void)
 void
 invlpg_pcid_handler(void)
 {
+	uint64_t cr3;
 #ifdef COUNT_XINVLTLB_HITS
 	xhits_pg[PCPU_GET(cpuid)]++;
 #endif /* COUNT_XINVLTLB_HITS */
@@ -1573,15 +1574,13 @@ invlpg_pcid_handler(void)
 	(*ipi_invlpg_counts[PCPU_GET(cpuid)])++;
 #endif /* COUNT_IPIS */
 
-	if (invpcid_works) {
-		invpcid(&smp_tlb_invpcid, INVPCID_ADDR);
+	if (smp_tlb_invpcid.pcid == (uint64_t)-1) {
+		invltlb_globpcid();
 	} else if (smp_tlb_invpcid.pcid == 0) {
 		invlpg(smp_tlb_invpcid.addr);
-	} else if (smp_tlb_invpcid.pcid == (uint64_t)-1) {
-		invltlb_globpcid();
+	} else if (invpcid_works) {
+		invpcid(&smp_tlb_invpcid, INVPCID_ADDR);
 	} else {
-		uint64_t cr3;
-
 		/*
 		 * PCID supported, but INVPCID is not.
 		 * Temporarily switch to the target address


More information about the svn-src-head mailing list