@@ -107,6 +107,8 @@ smp_setup(void)
| (((u32)entry_smp - BUILD_BIOS_ADDR) << 8));
*(u64*)BUILD_AP_BOOT_ADDR = new;
+ u8 cmos_smp_count = rtc_read(CMOS_BIOS_SMP_COUNT) + 1;
+
// enable local APIC
u32 val = readl(APIC_SVR);
writel(APIC_SVR, val | APIC_ENABLED);
@@ -127,7 +129,7 @@ smp_setup(void)
writel(APIC_ICR_LOW, 0x000C4600 | sipi_vector);
// Wait for other CPUs to process the SIPI.
- u8 cmos_smp_count = rtc_read(CMOS_BIOS_SMP_COUNT) + 1;
+ dprintf(1, "cmos_smp_count=%d\n", cmos_smp_count);
while (cmos_smp_count != CountCPUs)
asm volatile(
// Release lock and allow other processors to use the stack.
@@ -140,6 +142,8 @@ smp_setup(void)
: "+m" (SMPLock), "+m" (SMPStack)
: : "cc", "memory");
yield();
+ dprintf(1, "cmos_smp_count2=%d/%d\n", cmos_smp_count
+ , rtc_read(CMOS_BIOS_SMP_COUNT) + 1);
// Restore memory.
*(u64*)BUILD_AP_BOOT_ADDR = old;
@@ -170,6 +170,7 @@ platform_hardware_setup(void)
clock_setup();
// Platform specific setup
+ dprintf(1, "cmos_smp_count0=%d\n", rtc_read(CMOS_BIOS_SMP_COUNT) + 1);
qemu_platform_setup();
coreboot_platform_setup();
}