diff options
author | Damien Zammit <damien@zamaudio.com> | 2023-02-04 10:15:36 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-02-13 01:31:16 +0100 |
commit | cb8c0839c2f308aa938eb7f19621e0d0d8d50b9e (patch) | |
tree | 2934f67aeb76f8af4881a028712f4eaacf68d2b9 /i386 | |
parent | 0782d34d8caaf5d751fb456eb6fceb1aed3d0f67 (diff) | |
download | gnumach-cb8c0839c2f308aa938eb7f19621e0d0d8d50b9e.tar.gz gnumach-cb8c0839c2f308aa938eb7f19621e0d0d8d50b9e.tar.bz2 gnumach-cb8c0839c2f308aa938eb7f19621e0d0d8d50b9e.zip |
cpu_number: Short circuit if smp init not done
This depends on serialised AP init patch.
Fixes warnings spewing at boot with APIC and SMP
Message-Id: <20230204101529.877846-1-damien@zamaudio.com>
Diffstat (limited to 'i386')
-rw-r--r-- | i386/i386/cpu_number.c | 5 | ||||
-rw-r--r-- | i386/i386/mp_desc.h | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/i386/i386/cpu_number.c b/i386/i386/cpu_number.c index 42aa6ea1..1d2fab3a 100644 --- a/i386/i386/cpu_number.c +++ b/i386/i386/cpu_number.c @@ -19,12 +19,17 @@ #include <i386/apic.h> #include <i386/smp.h> #include <i386/cpu.h> +#include <i386/mp_desc.h> #include <kern/printf.h> #if NCPUS > 1 int cpu_number(void) { int kernel_id, apic_id; + + if (bspdone == 0) + return 0; + apic_id = apic_get_current_cpu(); if (apic_id < 0) { printf("apic_get_current_cpu() failed, assuming BSP\n"); diff --git a/i386/i386/mp_desc.h b/i386/i386/mp_desc.h index 59d50e77..fea42cd3 100644 --- a/i386/i386/mp_desc.h +++ b/i386/i386/mp_desc.h @@ -76,6 +76,8 @@ extern struct real_descriptor *mp_gdt[NCPUS]; extern uint8_t solid_intstack[]; +extern int bspdone; + /* * Each CPU calls this routine to set up its descriptor tables. */ |