Skip to content

Commit 92c714f

Browse files
suncepinglgao4
authored andcommitted
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 <[email protected]> Cc: Min Xu <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Kirill A. Shutemov <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
1 parent 406f42c commit 92c714f

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

OvmfPkg/TdxDxe/TdxDxe.inf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,4 @@
7575
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize
7676
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase
7777
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
78+
gEfiMdeModulePkgTokenSpaceGuid.PcdUse5LevelPageTable

OvmfPkg/TdxDxe/X64/ApRunLoop.nasm

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,13 @@ STACK_TOP:
2525
SECTION .text
2626

2727
%define TDX_WORK_AREA_MAILBOX_GDTR (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 128)
28+
%define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))
29+
%define TDX_WORK_AREA_PGTBL_READY (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 4)
30+
%define PG_5_LEVEL (FixedPcdGetBool (PcdUse5LevelPageTable))
2831

29-
%define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))
32+
%define TDX_BSP 1
33+
%define TDX_AP 2
34+
%define TDX_AP_5_LEVEL 3
3035

3136
BITS 64
3237

@@ -174,6 +179,19 @@ RestoreCr0:
174179
RestoreCr4:
175180
mov eax, 0x40
176181
mov cr4, eax
182+
183+
%if PG_5_LEVEL
184+
mov al, byte[TDX_WORK_AREA_PGTBL_READY]
185+
inc eax
186+
cmp eax, TDX_AP_5_LEVEL
187+
jne SetCr3
188+
SetCr4La57:
189+
; set la57 bit in cr4
190+
mov eax, cr4
191+
bts eax, 12
192+
mov cr4, eax
193+
%endif
194+
177195
SetCr3:
178196
;
179197
; Can use the boot page tables since it's reserved

0 commit comments

Comments
 (0)