OvmfPkg: Clear WORK_AREA_GUEST_TYPE in Main.asm

RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429

Previously WORK_AREA_GUEST_TYPE was cleared in SetCr3ForPageTables64.
This is workable for Legacy guest and SEV guest. But it doesn't work
after Intel TDX is introduced. It is because all TDX CPUs (BSP and APs)
start to run from 0xfffffff0, thus WORK_AREA_GUEST_TYPE will be cleared
multi-times if it is TDX guest. So the clearance of WORK_AREA_GUEST_TYPE
is moved to Main16 entry point in Main.asm.
Note: WORK_AREA_GUEST_TYPE is only defined for ARCH_X64.

For Intel TDX, its corresponding entry point is Main32 (which will be
introduced in next commit in this patch-set). WORK_AREA_GUEST_TYPE will
be cleared there.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Erdem Aktas <erdemaktas@google.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
Min Xu 2021-09-27 08:29:01 +08:00 committed by mergify[bot]
parent f079e9b450
commit 5a2411784b
2 changed files with 4 additions and 4 deletions

View File

@ -42,10 +42,6 @@ BITS 32
;
SetCr3ForPageTables64:
; Clear the WorkArea header. The SEV probe routines will populate the
; work area when detected.
mov byte[WORK_AREA_GUEST_TYPE], 0
; Check whether the SEV is active and populate the SevEsWorkArea
OneTimeCall CheckSevFeatures

View File

@ -36,6 +36,10 @@ Main16:
BITS 32
; Clear the WorkArea header. The SEV probe routines will populate the
; work area when detected.
mov byte[WORK_AREA_GUEST_TYPE], 0
;
; Search for the Boot Firmware Volume (BFV)
;