summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2012-04-13 22:58:23 +0000
committermarius <marius@FreeBSD.org>2012-04-13 22:58:23 +0000
commit7f51c048df993649074e098eda6a472ad4a134a2 (patch)
tree481d79dc0d0df5fd526ff12ec64f9ce4a1c93005 /sys/sparc64
parent7e5a8c601f7c328808a7bd25d555a95c795edf62 (diff)
downloadFreeBSD-src-7f51c048df993649074e098eda6a472ad4a134a2.zip
FreeBSD-src-7f51c048df993649074e098eda6a472ad4a134a2.tar.gz
Merge from x86:
r233961: Fix interrupt load balancing regression, introduced in revision 222813, that left all un-pinned interrupts assigned to CPU 0. In intr_shuffle_irqs(), remove CPU_SETOF() call that initialized the "intr_cpus" cpuset to only contain CPU0. This initialization is too late and nullifies the results of calls to the intr_add_cpu() that occur much earlier in the boot process. r234074 (partial): The BSP is not added to the mask of valid target CPUs for interrupts. Fix this by adding the BSP as an interrupt target directly in r234105: Fix !SMP build after r234074. MFC after: 3 days
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/intr_machdep.c3
-rw-r--r--sys/sparc64/sparc64/machdep.c7
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/sparc64/sparc64/intr_machdep.c b/sys/sparc64/sparc64/intr_machdep.c
index 9a7e92f..ed644fc 100644
--- a/sys/sparc64/sparc64/intr_machdep.c
+++ b/sys/sparc64/sparc64/intr_machdep.c
@@ -528,9 +528,6 @@ intr_shuffle_irqs(void *arg __unused)
struct intr_vector *iv;
int i;
- /* The BSP is always a valid target. */
- CPU_SETOF(0, &intr_cpus);
-
/* Don't bother on UP. */
if (mp_ncpus == 1)
return;
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index 7c7c234..fd5d338 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -196,6 +196,13 @@ cpu_startup(void *arg)
printf("machine: %s\n", sparc64_model);
cpu_identify(rdpr(ver), PCPU_GET(clock), curcpu);
+
+#ifdef SMP
+ /*
+ * Add BSP as an interrupt target.
+ */
+ intr_add_cpu(0);
+#endif
}
void
OpenPOWER on IntegriCloud