OvmfPkg/TdxDxe: Support 5-level paging for ResetVector
Since OVMF already supports 5-level paging, the ResetVector needs to handle the case. Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Min Xu <min.m.xu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Ceping Sun <cepingx.sun@intel.com>
This commit is contained in:
@@ -75,3 +75,4 @@
|
|||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
|
||||||
|
gEfiMdeModulePkgTokenSpaceGuid.PcdUse5LevelPageTable
|
||||||
|
|||||||
@@ -25,8 +25,13 @@ STACK_TOP:
|
|||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
%define TDX_WORK_AREA_MAILBOX_GDTR (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 128)
|
%define TDX_WORK_AREA_MAILBOX_GDTR (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 128)
|
||||||
|
%define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))
|
||||||
|
%define TDX_WORK_AREA_PGTBL_READY (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 4)
|
||||||
|
%define PG_5_LEVEL (FixedPcdGetBool (PcdUse5LevelPageTable))
|
||||||
|
|
||||||
%define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))
|
%define TDX_BSP 1
|
||||||
|
%define TDX_AP 2
|
||||||
|
%define TDX_AP_5_LEVEL 3
|
||||||
|
|
||||||
BITS 64
|
BITS 64
|
||||||
|
|
||||||
@@ -174,6 +179,19 @@ RestoreCr0:
|
|||||||
RestoreCr4:
|
RestoreCr4:
|
||||||
mov eax, 0x40
|
mov eax, 0x40
|
||||||
mov cr4, eax
|
mov cr4, eax
|
||||||
|
|
||||||
|
%if PG_5_LEVEL
|
||||||
|
mov al, byte[TDX_WORK_AREA_PGTBL_READY]
|
||||||
|
inc eax
|
||||||
|
cmp eax, TDX_AP_5_LEVEL
|
||||||
|
jne SetCr3
|
||||||
|
SetCr4La57:
|
||||||
|
; set la57 bit in cr4
|
||||||
|
mov eax, cr4
|
||||||
|
bts eax, 12
|
||||||
|
mov cr4, eax
|
||||||
|
%endif
|
||||||
|
|
||||||
SetCr3:
|
SetCr3:
|
||||||
;
|
;
|
||||||
; Can use the boot page tables since it's reserved
|
; Can use the boot page tables since it's reserved
|
||||||
|
|||||||
Reference in New Issue
Block a user