From 9c733f0b90b31a7e3711f60da314f2a5cfe5fe8a Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Tue, 24 May 2022 15:53:46 +0800 Subject: OvmfPkg: TdxDxe: Fix AsmRelocateApMailBoxLoop In TDX, Application Processor busy-loops on Mailbox for OS to issue MpProtectedModeWakeupCommandWakeup command to UEFI. As the AP acking to it, it clears the command member according to ACPI spec 6.4, 5.2.12.19 Multiprocessor Wakeup Structure: "The application processor need clear the command to Noop(0) as the acknowledgement that the command is received." However, AsmRelocateApMailBoxLoop wrongly clears WakeupVector. Correctly clear command instead of WakeupVector. Without this patch, TD guest kernel fails to boot APs. Fixes: fae5c1464d ("OvmfPkg: Add TdxDxe driver") Cc: Min Xu Signed-off-by: Isaku Yamahata Reviewed-by: Jiewen Yao Reviewed-by: Min Xu --- OvmfPkg/TdxDxe/X64/ApRunLoop.nasm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OvmfPkg/TdxDxe/X64') diff --git a/OvmfPkg/TdxDxe/X64/ApRunLoop.nasm b/OvmfPkg/TdxDxe/X64/ApRunLoop.nasm index 49bd04415c..a859375fb8 100644 --- a/OvmfPkg/TdxDxe/X64/ApRunLoop.nasm +++ b/OvmfPkg/TdxDxe/X64/ApRunLoop.nasm @@ -69,7 +69,7 @@ MailBoxWakeUp: mov rax, [rbx + WakeupVectorOffset] ; OS sends a wakeup command for a given APIC ID, firmware is supposed to reset ; the command field back to zero as acknowledgement. - mov qword [rbx + WakeupVectorOffset], 0 + mov qword [rbx + CommandOffset], 0 jmp rax MailBoxSleep: jmp $ -- cgit v1.2.3