summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/include/smp.h
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2011-05-11 21:15:12 +0000
committermarius <marius@FreeBSD.org>2011-05-11 21:15:12 +0000
commitb6efe673b328a0f60e1f62ccd905b4b26fbc996f (patch)
tree98a42435dbfa88ef7f93b3dd6c793bf6e04d4a66 /sys/sparc64/include/smp.h
parent0bddc6598ec0e5296369283d3869b75e140109dd (diff)
downloadFreeBSD-src-b6efe673b328a0f60e1f62ccd905b4b26fbc996f.zip
FreeBSD-src-b6efe673b328a0f60e1f62ccd905b4b26fbc996f.tar.gz
The ita_mask should include curcpu but the cpuset passed to cpu_ipi_selected()
must not, otherwise we tell the CPU to IPI itself, which the sun4u CPUs don't support. For reasons unknown so far MD and MI IPI use actually still triggers that assertion though.
Diffstat (limited to 'sys/sparc64/include/smp.h')
-rw-r--r--sys/sparc64/include/smp.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/sparc64/include/smp.h b/sys/sparc64/include/smp.h
index f8f7d1c..1ba0d9e 100644
--- a/sys/sparc64/include/smp.h
+++ b/sys/sparc64/include/smp.h
@@ -222,8 +222,8 @@ ipi_tlb_context_demap(struct pmap *pm)
}
ita = &ipi_tlb_args;
mtx_lock_spin(&ipi_mtx);
- CPU_OR(&cpus, PCPU_PTR(cpumask));
ita->ita_mask = cpus;
+ CPU_OR(&ita->ita_mask, PCPU_PTR(cpumask));
ita->ita_pmap = pm;
cpu_ipi_selected(cpus, 0, (u_long)tl_ipi_tlb_context_demap,
(u_long)ita);
@@ -247,8 +247,8 @@ ipi_tlb_page_demap(struct pmap *pm, vm_offset_t va)
}
ita = &ipi_tlb_args;
mtx_lock_spin(&ipi_mtx);
- CPU_OR(&cpus, PCPU_PTR(cpumask));
ita->ita_mask = cpus;
+ CPU_OR(&ita->ita_mask, PCPU_PTR(cpumask));
ita->ita_pmap = pm;
ita->ita_va = va;
cpu_ipi_selected(cpus, 0, (u_long)tl_ipi_tlb_page_demap, (u_long)ita);
@@ -272,8 +272,8 @@ ipi_tlb_range_demap(struct pmap *pm, vm_offset_t start, vm_offset_t end)
}
ita = &ipi_tlb_args;
mtx_lock_spin(&ipi_mtx);
- CPU_OR(&cpus, PCPU_PTR(cpumask));
ita->ita_mask = cpus;
+ CPU_OR(&ita->ita_mask, PCPU_PTR(cpumask));
ita->ita_pmap = pm;
ita->ita_start = start;
ita->ita_end = end;
OpenPOWER on IntegriCloud