[SeaBIOS] [PATCH v2] Halt if number of started cpus are more then expected
Igor Mammedov
imammedo at redhat.com
Fri Mar 16 10:33:15 CET 2012
Reduce amount of consumed cpu time (i.e. don't spin forever) if
number of started cpus are more then expected. And print a bug
message into debug port.
And it is not safe to continue to boot if CountCPUs is more than
cmos_smp_count and might be still racing, due to mp/acpi could be
build with still changing CountCPUs. It is safer to stop and allow
user to notice and restart system rather than debug possible
inxplicable bugs later.
v2:
extendend commit message with explanation why not continue to boot
Signed-off-by: Igor Mammedov <imammedo at redhat.com>
---
src/smp.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/smp.c b/src/smp.c
index 8c077a1..9933ac6 100644
--- a/src/smp.c
+++ b/src/smp.c
@@ -115,8 +115,14 @@ smp_probe(void)
msleep(10);
} else {
u8 cmos_smp_count = inb_cmos(CMOS_BIOS_SMP_COUNT);
- while (cmos_smp_count + 1 != readl(&CountCPUs))
+ while (cmos_smp_count + 1 != readl(&CountCPUs)) {
+ if (cmos_smp_count + 1 < readl(&CountCPUs)) {
+ dprintf(1, "BUG: Expected %d cpu(s) but %d cpus started\n",
+ cmos_smp_count + 1, readl(&CountCPUs));
+ hlt();
+ }
yield();
+ }
}
// Restore memory.
--
1.7.7.6
More information about the SeaBIOS
mailing list