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
This commit is contained in:
parent
a9e285b047
commit
dc74dde71e
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user