From 2454ea8dfbd6c864f6694cdcccbce711d2ff6e03 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sat, 13 Sep 2025 18:22:27 -0300 Subject: [PATCH] apic: wait for completion before sending ipi --- kernel-src/arch/x86-64/apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel-src/arch/x86-64/apic.c b/kernel-src/arch/x86-64/apic.c index ef8f47c0..90d96171 100644 --- a/kernel-src/arch/x86-64/apic.c +++ b/kernel-src/arch/x86-64/apic.c @@ -245,9 +245,9 @@ INIT_ROUTINE_DEFINE(arch_timer, INIT_ROUTINE_FLAGS_NONE, arch_apic_timerinit, ti void arch_apic_sendipi(uint8_t cpu, uint8_t vec, uint8_t dest, uint8_t mode, uint8_t level) { bool status = interrupt_set(false); + while (readlapic(APIC_REG_ICR_LO) & APIC_REG_ICR_LO_STATUS) CPU_PAUSE(); writelapic(APIC_REG_ICR_HI, (uint32_t)cpu << 24); writelapic(APIC_REG_ICR_LO, vec | (level << 8) | (mode << 11) | (dest << 18) | (1 << 14)); - while (readlapic(APIC_REG_ICR_LO) & APIC_REG_ICR_LO_STATUS) CPU_PAUSE(); interrupt_set(status); }