diff --git a/paw/stos/arch/amd64/cpu/mp.c b/paw/stos/arch/amd64/cpu/mp.c index 7394830..d4e7141 100644 --- a/paw/stos/arch/amd64/cpu/mp.c +++ b/paw/stos/arch/amd64/cpu/mp.c @@ -19,6 +19,9 @@ #define MP_LOG_CAP 4 #define MP_DEBUG 1 +/* Local APIC flags */ +#define LAPIC_ONLINE_CAPABLE BIT(1) + #define DTRACE(Fmt, ...) \ TRACE("[ MP ]: " Fmt, ##__VA_ARGS__) @@ -54,6 +57,14 @@ ApKick(ACPI_LOCAL_APIC *Lapic) return; } + /* + * Some processor entries may not be "online capable", if we + * encounter such entries, ignore it. + */ + if (!ISSET(Lapic->Flags, LAPIC_ONLINE_CAPABLE)) { + return; + } + /* Send an INIT IPI to the processor */ MdLapicSendIpi( 0,