40 lines
1.4 KiB
Diff
40 lines
1.4 KiB
Diff
|
|
From 1a8defda890d6fe3efe2238cff1ef2ae6ca8928c Mon Sep 17 00:00:00 2001
|
||
|
|
From: jiangdongxu <jiangdongxu1@huawei.com>
|
||
|
|
Date: Fri, 11 Feb 2022 16:31:25 +0800
|
||
|
|
Subject: [PATCH 4/6] seabios: drop yield() in smp_setup()
|
||
|
|
|
||
|
|
Fix SeaBIOS stuck problem becuase SeaBIOS open hardware interrupt
|
||
|
|
by invoking yield(). That's dangerous and unnecessary. Let's drop
|
||
|
|
it, and make the processing of setup smp more security in SeaBIOS.
|
||
|
|
|
||
|
|
Signed-off-by: liuxiangdong <liuxiangdong5@huawei.com>
|
||
|
|
Signed-off-by: jiangdongxu <jiangdongxu1@huawei.com>
|
||
|
|
---
|
||
|
|
roms/seabios/src/fw/smp.c | 3 ++-
|
||
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/roms/seabios/src/fw/smp.c b/roms/seabios/src/fw/smp.c
|
||
|
|
index 46d1da1784..e5e407be0c 100644
|
||
|
|
--- a/roms/seabios/src/fw/smp.c
|
||
|
|
+++ b/roms/seabios/src/fw/smp.c
|
||
|
|
@@ -149,6 +149,7 @@ smp_scan(void)
|
||
|
|
|
||
|
|
// Wait for other CPUs to process the SIPI.
|
||
|
|
u16 expected_cpus_count = qemu_get_present_cpus_count();
|
||
|
|
+ dprintf(1,"expected_cpus_count=%d\n", expected_cpus_count);
|
||
|
|
while (expected_cpus_count != CountCPUs)
|
||
|
|
asm volatile(
|
||
|
|
// Release lock and allow other processors to use the stack.
|
||
|
|
@@ -160,7 +161,7 @@ smp_scan(void)
|
||
|
|
" jc 1b\n"
|
||
|
|
: "+m" (SMPLock), "+m" (SMPStack)
|
||
|
|
: : "cc", "memory");
|
||
|
|
- yield();
|
||
|
|
+ dprintf(1, "finish smp\n");
|
||
|
|
|
||
|
|
// Restore memory.
|
||
|
|
*(u64*)BUILD_AP_BOOT_ADDR = old;
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|