diff options
author | Damien Zammit <damien@zamaudio.com> | 2023-01-31 09:36:12 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-01-31 20:41:00 +0100 |
commit | 6297dd6ed5c291d497d16090a0421a28d2fc19dd (patch) | |
tree | 2db044adbf0216c78a1ca49a38eca10156adcb55 | |
parent | fc842a857524dad5209d01e7f6fec7387e4daf18 (diff) | |
download | gnumach-6297dd6ed5c291d497d16090a0421a28d2fc19dd.tar.gz gnumach-6297dd6ed5c291d497d16090a0421a28d2fc19dd.tar.bz2 gnumach-6297dd6ed5c291d497d16090a0421a28d2fc19dd.zip |
Print warning on bad cpu numbering and assume BSP
Message-Id: <20230131093428.756906-4-damien@zamaudio.com>
-rw-r--r-- | i386/i386/apic.c | 5 | ||||
-rw-r--r-- | i386/i386/cpu_number.c | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/i386/i386/apic.c b/i386/i386/apic.c index e53d4749..891ce288 100644 --- a/i386/i386/apic.c +++ b/i386/i386/apic.c @@ -278,6 +278,11 @@ lapic_enable(void) cpu_intr_save(&flags); apic_id = apic_get_current_cpu(); + if (apic_id < 0) + { + printf("apic_get_current_cpu() failed, assuming BSP\n"); + apic_id = 0; + } dummy = lapic->dest_format.r; lapic->dest_format.r = 0xffffffff; /* flat model */ diff --git a/i386/i386/cpu_number.c b/i386/i386/cpu_number.c index 20bf2399..ad4c4b01 100644 --- a/i386/i386/cpu_number.c +++ b/i386/i386/cpu_number.c @@ -19,10 +19,22 @@ #include <i386/apic.h> #include <i386/smp.h> #include <i386/cpu.h> +#include <kern/printf.h> #if NCPUS > 1 int cpu_number(void) { - return apic_get_cpu_kernel_id(apic_get_current_cpu()); + int kernel_id, apic_id; + apic_id = apic_get_current_cpu(); + if (apic_id < 0) { + printf("apic_get_current_cpu() failed, assuming BSP\n"); + apic_id = 0; + } + + kernel_id = apic_get_cpu_kernel_id(apic_id); + if (kernel_id < 0) { + printf("apic_get_cpu_kernel_id() failed, assuming BSP\n"); + kernel_id = 0; + } } #endif |