qemu/seabios-drop-yield-in-smp_setup.patch

40 lines
1.4 KiB
Diff
Raw Normal View History

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