summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/powerpc/powerpc/intr_machdep.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/sys/powerpc/powerpc/intr_machdep.c b/sys/powerpc/powerpc/intr_machdep.c
index b76ca41..f2bfa33 100644
--- a/sys/powerpc/powerpc/intr_machdep.c
+++ b/sys/powerpc/powerpc/intr_machdep.c
@@ -397,18 +397,22 @@ powerpc_enable_intr(void)
#ifdef SMP
/* Install an IPI handler. */
- for (n = 0; n < npics; n++) {
- if (piclist[n].dev != root_pic)
- continue;
-
- KASSERT(piclist[n].ipis != 0, ("%s", __func__));
- error = powerpc_setup_intr("IPI",
- MAP_IRQ(piclist[n].node, piclist[n].irqs),
- powerpc_ipi_handler, NULL, NULL,
- INTR_TYPE_MISC | INTR_EXCL, &ipi_cookie);
- if (error) {
- printf("unable to setup IPI handler\n");
- return (error);
+ if (mp_ncpus > 1) {
+ for (n = 0; n < npics; n++) {
+ if (piclist[n].dev != root_pic)
+ continue;
+
+ KASSERT(piclist[n].ipis != 0,
+ ("%s: SMP root PIC does not supply any IPIs",
+ __func__));
+ error = powerpc_setup_intr("IPI",
+ MAP_IRQ(piclist[n].node, piclist[n].irqs),
+ powerpc_ipi_handler, NULL, NULL,
+ INTR_TYPE_MISC | INTR_EXCL, &ipi_cookie);
+ if (error) {
+ printf("unable to setup IPI handler\n");
+ return (error);
+ }
}
}
#endif
OpenPOWER on IntegriCloud