Lines 367-373
Link Here
|
367 |
|
367 |
|
368 |
static struct unrhdr pcid_unr; |
368 |
static struct unrhdr pcid_unr; |
369 |
static struct mtx pcid_mtx; |
369 |
static struct mtx pcid_mtx; |
370 |
int pmap_pcid_enabled = 0; |
370 |
int pmap_pcid_enabled = 1; |
371 |
SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled, |
371 |
SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled, |
372 |
0, "Is TLB Context ID enabled ?"); |
372 |
0, "Is TLB Context ID enabled ?"); |
373 |
int invpcid_works = 0; |
373 |
int invpcid_works = 0; |
Lines 838-844
Link Here
|
838 |
kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); |
838 |
kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); |
839 |
kernel_pmap->pm_cr3 = KPML4phys; |
839 |
kernel_pmap->pm_cr3 = KPML4phys; |
840 |
CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ |
840 |
CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ |
841 |
CPU_ZERO(&kernel_pmap->pm_save); |
841 |
CPU_FILL(&kernel_pmap->pm_save); /* always superset of pm_active */ |
842 |
TAILQ_INIT(&kernel_pmap->pm_pvchunk); |
842 |
TAILQ_INIT(&kernel_pmap->pm_pvchunk); |
843 |
kernel_pmap->pm_flags = pmap_flags; |
843 |
kernel_pmap->pm_flags = pmap_flags; |
844 |
|
844 |
|
Lines 1492-1498
Link Here
|
1492 |
} else { |
1492 |
} else { |
1493 |
invltlb_globpcid(); |
1493 |
invltlb_globpcid(); |
1494 |
} |
1494 |
} |
1495 |
CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); |
1495 |
if (!CPU_ISSET(cpuid, &pmap->pm_active)) |
|
|
1496 |
CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); |
1496 |
smp_invltlb(pmap); |
1497 |
smp_invltlb(pmap); |
1497 |
} else { |
1498 |
} else { |
1498 |
other_cpus = all_cpus; |
1499 |
other_cpus = all_cpus; |
Lines 1526-1532
Link Here
|
1526 |
} |
1527 |
} |
1527 |
} else if (CPU_ISSET(cpuid, &pmap->pm_active)) |
1528 |
} else if (CPU_ISSET(cpuid, &pmap->pm_active)) |
1528 |
invltlb(); |
1529 |
invltlb(); |
1529 |
CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); |
1530 |
if (!CPU_ISSET(cpuid, &pmap->pm_active)) |
|
|
1531 |
CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); |
1530 |
if (pmap_pcid_enabled) |
1532 |
if (pmap_pcid_enabled) |
1531 |
CPU_AND(&other_cpus, &pmap->pm_save); |
1533 |
CPU_AND(&other_cpus, &pmap->pm_save); |
1532 |
else |
1534 |
else |