diff options
author | jhb <jhb@FreeBSD.org> | 2012-08-13 16:33:22 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2012-08-13 16:33:22 +0000 |
commit | 6c62ea1c5136b13bea147d023af84b777d4219b0 (patch) | |
tree | dffa4b3ba1514b706b11288a41a6c17e80249d99 /sys/i386 | |
parent | 7ecec8f444e379720362d09cb89c3660a74f13a1 (diff) | |
download | FreeBSD-src-6c62ea1c5136b13bea147d023af84b777d4219b0.zip FreeBSD-src-6c62ea1c5136b13bea147d023af84b777d4219b0.tar.gz |
Add a 10 millisecond delay after sending the initial INIT IPI. This
matches the algorithm in the MP specification (1.4). Previously we
were sending out the deassert INIT IPI immediately after the initial
INIT IPI was sent.
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/i386/mp_machdep.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c index 727c05d..ee488e6 100644 --- a/sys/i386/i386/mp_machdep.c +++ b/sys/i386/i386/mp_machdep.c @@ -1148,14 +1148,15 @@ ipi_startup(int apic_id, int vector) /* wait for pending status end */ lapic_ipi_wait(-1); + DELAY(10000); /* wait ~10mS */ /* do an INIT IPI: deassert RESET */ lapic_ipi_raw(APIC_DEST_ALLESELF | APIC_TRIGMOD_LEVEL | APIC_LEVEL_DEASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_INIT, 0); /* wait for pending status end */ - DELAY(10000); /* wait ~10mS */ lapic_ipi_wait(-1); + DELAY(10000); /* wait ~10mS */ /* * next we do a STARTUP IPI: the previous INIT IPI might still be |