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.
This commit is contained in:
parent
1221cc675d
commit
a4284ef768
@ -1048,14 +1048,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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user