summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/x86/Kconfig4
-rw-r--r--src/cpu/x86/mp_init.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig
index 6a3bbd8c0b..a5c2a4df47 100644
--- a/src/cpu/x86/Kconfig
+++ b/src/cpu/x86/Kconfig
@@ -173,7 +173,9 @@ config X86_AMD_INIT_SIPI
help
This option limits the number of SIPI signals sent during during the
common AP setup. Intel documentation specifies an INIT SIPI SIPI
- sequence, however this doesn't work on some AMD platforms.
+ sequence, however this doesn't work on some AMD platforms. These
+ newer AMD platforms don't need the 10ms wait between INIT and SIPI,
+ so skip that too to save some time.
config SOC_SETS_MSRS
bool
diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c
index a3a6becad7..3eef355148 100644
--- a/src/cpu/x86/mp_init.c
+++ b/src/cpu/x86/mp_init.c
@@ -449,8 +449,11 @@ static int start_aps(struct bus *cpu_bus, int ap_count, atomic_t *num_aps)
/* Send INIT IPI to all but self. */
lapic_send_ipi(LAPIC_DEST_ALLBUT | LAPIC_INT_ASSERT | LAPIC_DM_INIT, 0);
- printk(BIOS_DEBUG, "Waiting for 10ms after sending INIT.\n");
- mdelay(10);
+
+ if (!CONFIG(X86_AMD_INIT_SIPI)) {
+ printk(BIOS_DEBUG, "Waiting for 10ms after sending INIT.\n");
+ mdelay(10);
+ }
/* Send 1st SIPI */
if (lapic_busy()) {