aboutsummaryrefslogtreecommitdiff
path: root/pc-bios/bios-pq/0003_smp-startup-poll.patch
blob: cd1a3ff03472fd0a60386a2cee2e7494059792d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
From: Avi Kivity <avi@qumranet.com>

instead of timing out, wait until all cpus are up

diff --git a/bios/rombios32.c b/bios/rombios32.c
index ef98a41..05ba40d 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -512,7 +512,12 @@ void smp_probe(void)
         sipi_vector = AP_BOOT_ADDR >> 12;
         writel(APIC_BASE + APIC_ICR_LOW, 0x000C4600 | sipi_vector);
 
+#ifndef BX_QEMU
         delay_ms(10);
+#else
+        while (cmos_readb(0x5f) + 1 != readw(&smp_cpus))
+            ;
+#endif
     }
     BX_INFO("Found %d cpu(s)\n", readw(&smp_cpus));
 }