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