diff options
author | marcel <marcel@FreeBSD.org> | 2012-07-08 17:43:25 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2012-07-08 17:43:25 +0000 |
commit | bfa21239bc8d06798b0135e51be7bdad2368cad8 (patch) | |
tree | 5abdb610e87ab64d4a7906ef86ca71c91994d926 /sys/ia64 | |
parent | ff7c2d6b192439e0adc338f1e5704d05d4b7680a (diff) | |
download | FreeBSD-src-bfa21239bc8d06798b0135e51be7bdad2368cad8.zip FreeBSD-src-bfa21239bc8d06798b0135e51be7bdad2368cad8.tar.gz |
Unleash the APs at SI_SUB_KICK_SCHEDULER so that we have them all
up and running to service interrupts. This is especially important
when the firmware has bound interrupts to CPUs, like for the SGI
Altix 350. We wake up APs at SI_SUB_CPU time and they sit and spin
until we unleash them, so there's nothing fundamentally different
from a MD perspective.
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/mp_machdep.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/ia64/ia64/mp_machdep.c b/sys/ia64/ia64/mp_machdep.c index 0d8f241..77c12b7 100644 --- a/sys/ia64/ia64/mp_machdep.c +++ b/sys/ia64/ia64/mp_machdep.c @@ -466,6 +466,7 @@ cpu_mp_unleash(void *dummy) */ ia64_bind_intr(); } +SYSINIT(start_aps, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, cpu_mp_unleash, NULL); /* * send an IPI to a set of cpus. @@ -522,5 +523,3 @@ ipi_send(struct pcpu *cpu, int xiv) ia64_mf_a(); CTR3(KTR_SMP, "ipi_send(%p, %d): cpuid=%d", cpu, xiv, PCPU_GET(cpuid)); } - -SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL); |