From b7a97bfac52819d37310106e467623b0ed4a8f87 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 1 Mar 2024 08:43:56 +0100 Subject: OvmfPkg/ResetVector: split TDX BSP workflow Create a separate control flow for TDX BSP. TdxPostBuildPageTables will now only be called when running in TDX mode, so the TDX check in that function is not needed any more. No functional change. Signed-off-by: Gerd Hoffmann Reviewed-by: Laszlo Ersek Message-Id: <20240301074402.98625-5-kraxel@redhat.com> Cc: Jiewen Yao Cc: Oliver Steffen Cc: Michael Roth Cc: Erdem Aktas Cc: Min Xu Cc: Ard Biesheuvel Cc: Tom Lendacky [lersek@redhat.com: turn the "Cc:" message headers from Gerd's on-list posting into "Cc:" tags in the commit message, in order to pacify "PatchCheck.py"] --- OvmfPkg/ResetVector/Ia32/IntelTdx.asm | 4 ---- OvmfPkg/ResetVector/Ia32/PageTables64.asm | 15 ++++++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/OvmfPkg/ResetVector/Ia32/IntelTdx.asm b/OvmfPkg/ResetVector/Ia32/IntelTdx.asm index 06794baef8..c6b86019df 100644 --- a/OvmfPkg/ResetVector/Ia32/IntelTdx.asm +++ b/OvmfPkg/ResetVector/Ia32/IntelTdx.asm @@ -197,11 +197,7 @@ NotTdx: ; Set byte[TDX_WORK_AREA_PGTBL_READY] to 1 ; TdxPostBuildPageTables: - cmp byte[WORK_AREA_GUEST_TYPE], VM_GUEST_TDX - jne ExitTdxPostBuildPageTables mov byte[TDX_WORK_AREA_PGTBL_READY], 1 - -ExitTdxPostBuildPageTables: OneTimeCallRet TdxPostBuildPageTables ; diff --git a/OvmfPkg/ResetVector/Ia32/PageTables64.asm b/OvmfPkg/ResetVector/Ia32/PageTables64.asm index 14cc2c33aa..166e80293c 100644 --- a/OvmfPkg/ResetVector/Ia32/PageTables64.asm +++ b/OvmfPkg/ResetVector/Ia32/PageTables64.asm @@ -112,7 +112,7 @@ SetCr3ForPageTables64: ; is set. OneTimeCall CheckTdxFeaturesBeforeBuildPagetables cmp eax, TDX_BSP - je ClearOvmfPageTables + je TdxBspInit cmp eax, TDX_AP je SetCr3 @@ -124,16 +124,21 @@ SetCr3ForPageTables64: ; the page table build below. OneTimeCall GetSevCBitMaskAbove31 -ClearOvmfPageTables: ClearOvmfPageTables CreatePageTables4Level edx ; Clear the C-bit from the GHCB page if the SEV-ES is enabled. OneTimeCall SevClearPageEncMaskForGhcbPage + jmp SetCr3 - ; TDX will do some PostBuildPages task, such as setting - ; byte[TDX_WORK_AREA_PGTBL_READY]. - OneTimeCall TdxPostBuildPageTables +TdxBspInit: + ; + ; TDX BSP workflow + ; + ClearOvmfPageTables + CreatePageTables4Level 0 + OneTimeCall TdxPostBuildPageTables + jmp SetCr3 SetCr3: ; -- cgit