OvmfPkg/CpuHotplugSmm: delay SMM exit

Let APs wait until the BSP has completed the register updates to remove
the CPU.  This makes sure all APs stay in SMM mode until the CPU
hot-unplug operation is complete, which in turn makes sure the ACPI lock
is released only after the CPU hot-unplug operation is complete.

Some background:  The CPU hotplug SMI is triggered from an ACPI function
which is protected by an ACPI lock.  The ACPI function is in the ACPI
tables generated by qemu.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2024-08-29 09:20:29 +02:00 committed by mergify[bot]
parent ec18fa81d3
commit 121af960e2

View File

@ -355,6 +355,11 @@ EjectCpu (
//
QemuSelector = mCpuHotEjectData->QemuSelectorMap[ProcessorNum];
if (QemuSelector == CPU_EJECT_QEMU_SELECTOR_INVALID) {
/* wait until BSP is done */
while (mCpuHotEjectData->Handler != NULL) {
CpuPause ();
}
return;
}