mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-30 19:05:33 +00:00
In current hv implementation, we assume all AP have no context before jumping into guest mode. But this is not true in all UEFI bios. BIOS could have enabled all (or some of) APs at first. These APs could stay in a run loop or wait for a semaphore. But after hv takes over control from efi-stub, all of these AP environments will be simply dropped because we don't support AP context save/restore for now. As a result, BSP's ExitBootService will hang forver because it's waiting for AP in its way (by waiting for a semaphore for example), unfortunately APs are now in the context that hv provides in which they usually stay in idle loop. To fix the issue above, we could have two solutions: 1. Save AP's runtime context before entering hv and restore context after hv jumps back. 2. After hv jumps back, reset all the APs in the UEFI way, so the previous context will be thrown away and a fresh new starts. Moreover this new one is under virtualization. Currently, we adopt the second one by disabling all the APs before virtualization and then enabling them after hv jumps back. A reset will be triggered. And this is guaranteed by UEFI MP Service protocol. Tracked-On: #2435 Signed-off-by: Tw <wei.tan@intel.com> Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com> |
||
---|---|---|
.. | ||
clearlinux | ||
boot.c | ||
boot.h | ||
efilinux.h | ||
Makefile | ||
malloc.c | ||
MpService.h | ||
multiboot.h | ||
pe.c | ||
stdlib.h |