- Remove MD usage of pc_cpumask and pc_other_cpus. [1]
- Remove CTASSERTs which no longer need to hold since r222813. Submitted by: attilio [1]
This commit is contained in:
parent
7bbae305a1
commit
207f858338
@ -140,8 +140,6 @@ static cpu_ipi_single_t spitfire_ipi_single;
|
||||
SYSINIT(cpu_mp_unleash, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL);
|
||||
|
||||
CTASSERT(MAXCPU <= IDR_CHEETAH_MAX_BN_PAIRS);
|
||||
CTASSERT(MAXCPU <= sizeof(u_int) * NBBY);
|
||||
CTASSERT(MAXCPU <= sizeof(int) * NBBY);
|
||||
|
||||
void
|
||||
mp_init(u_int cpu_impl)
|
||||
@ -491,13 +489,14 @@ cpu_mp_shutdown(void)
|
||||
int i;
|
||||
|
||||
critical_enter();
|
||||
shutdown_cpus = PCPU_GET(other_cpus);
|
||||
shutdown_cpus = all_cpus;
|
||||
CPU_CLR(PCPU_GET(cpuid), &shutdown_cpus);
|
||||
cpus = shutdown_cpus;
|
||||
|
||||
/* XXX: Stop all the CPUs which aren't already. */
|
||||
if (CPU_CMP(&stopped_cpus, &cpus)) {
|
||||
|
||||
/* pc_other_cpus is just a flat "on" mask without curcpu. */
|
||||
/* cpus is just a flat "on" mask without curcpu. */
|
||||
CPU_NAND(&cpus, &stopped_cpus);
|
||||
stop_cpus(cpus);
|
||||
}
|
||||
@ -520,23 +519,23 @@ cpu_ipi_ast(struct trapframe *tf)
|
||||
static void
|
||||
cpu_ipi_stop(struct trapframe *tf)
|
||||
{
|
||||
cpuset_t tcmask;
|
||||
u_int cpuid;
|
||||
|
||||
CTR2(KTR_SMP, "%s: stopped %d", __func__, curcpu);
|
||||
sched_pin();
|
||||
savectx(&stoppcbs[curcpu]);
|
||||
tcmask = PCPU_GET(cpumask);
|
||||
CPU_OR_ATOMIC(&stopped_cpus, &tcmask);
|
||||
while (!CPU_OVERLAP(&started_cpus, &tcmask)) {
|
||||
if (CPU_OVERLAP(&shutdown_cpus, &tcmask)) {
|
||||
CPU_NAND_ATOMIC(&shutdown_cpus, &tcmask);
|
||||
cpuid = PCPU_GET(cpuid);
|
||||
CPU_SET_ATOMIC(cpuid, &stopped_cpus);
|
||||
while (!CPU_ISSET(cpuid, &started_cpus)) {
|
||||
if (CPU_ISSET(cpuid, &shutdown_cpus)) {
|
||||
CPU_CLR_ATOMIC(cpuid, &shutdown_cpus);
|
||||
(void)intr_disable();
|
||||
for (;;)
|
||||
;
|
||||
}
|
||||
}
|
||||
CPU_NAND_ATOMIC(&started_cpus, &tcmask);
|
||||
CPU_NAND_ATOMIC(&stopped_cpus, &tcmask);
|
||||
CPU_CLR_ATOMIC(cpuid, &started_cpus);
|
||||
CPU_CLR_ATOMIC(cpuid, &stopped_cpus);
|
||||
sched_unpin();
|
||||
CTR2(KTR_SMP, "%s: restarted %d", __func__, curcpu);
|
||||
}
|
||||
|
@ -2230,7 +2230,7 @@ pmap_activate(struct thread *td)
|
||||
PCPU_SET(tlb_ctx, context + 1);
|
||||
|
||||
pm->pm_context[curcpu] = context;
|
||||
CPU_OR(&pm->pm_active, PCPU_PTR(cpumask));
|
||||
CPU_SET(PCPU_GET(cpuid), &pm->pm_active);
|
||||
PCPU_SET(pmap, pm);
|
||||
|
||||
stxa(AA_DMMU_TSB, ASI_DMMU, pm->pm_tsb);
|
||||
|
@ -80,7 +80,7 @@ tlb_context_demap(struct pmap *pm)
|
||||
PMAP_STATS_INC(tlb_ncontext_demap);
|
||||
cookie = ipi_tlb_context_demap(pm);
|
||||
s = intr_disable();
|
||||
if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) {
|
||||
if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) {
|
||||
KASSERT(pm->pm_context[curcpu] != -1,
|
||||
("tlb_context_demap: inactive pmap?"));
|
||||
stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_DMMU_DEMAP, 0);
|
||||
@ -101,7 +101,7 @@ tlb_page_demap(struct pmap *pm, vm_offset_t va)
|
||||
PMAP_STATS_INC(tlb_npage_demap);
|
||||
cookie = ipi_tlb_page_demap(pm, va);
|
||||
s = intr_disable();
|
||||
if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) {
|
||||
if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) {
|
||||
KASSERT(pm->pm_context[curcpu] != -1,
|
||||
("tlb_page_demap: inactive pmap?"));
|
||||
if (pm == kernel_pmap)
|
||||
@ -128,7 +128,7 @@ tlb_range_demap(struct pmap *pm, vm_offset_t start, vm_offset_t end)
|
||||
PMAP_STATS_INC(tlb_nrange_demap);
|
||||
cookie = ipi_tlb_range_demap(pm, start, end);
|
||||
s = intr_disable();
|
||||
if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) {
|
||||
if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) {
|
||||
KASSERT(pm->pm_context[curcpu] != -1,
|
||||
("tlb_range_demap: inactive pmap?"));
|
||||
if (pm == kernel_pmap)
|
||||
|
Loading…
Reference in New Issue
Block a user