diff options
author | marius <marius@FreeBSD.org> | 2012-04-13 22:58:23 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2012-04-13 22:58:23 +0000 |
commit | 7f51c048df993649074e098eda6a472ad4a134a2 (patch) | |
tree | 481d79dc0d0df5fd526ff12ec64f9ce4a1c93005 /sys/sparc64 | |
parent | 7e5a8c601f7c328808a7bd25d555a95c795edf62 (diff) | |
download | FreeBSD-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.c | 3 | ||||
-rw-r--r-- | sys/sparc64/sparc64/machdep.c | 7 |
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 |