aboutsummaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2023-02-04 10:15:36 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-02-13 01:31:16 +0100
commitcb8c0839c2f308aa938eb7f19621e0d0d8d50b9e (patch)
tree2934f67aeb76f8af4881a028712f4eaacf68d2b9 /i386
parent0782d34d8caaf5d751fb456eb6fceb1aed3d0f67 (diff)
downloadgnumach-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.c5
-rw-r--r--i386/i386/mp_desc.h2
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.
*/