[edk2-devel] [PATCH 5/6] UefiCpuPkg/ResetVector: Add Main32 entry point in Main.asm

Min Xu min.m.xu at intel.com
Mon Jul 12 01:19:41 UTC 2021


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

In Tdx all CPUs "reset" to run on 32-bit protected mode with flat
descriptor (paging disabled). Main32 entry point is added in
UefiCpuPkg/ResetVector/Vtf0/Main.asm so that Main.asm can support
the 32-bit protected mode.

InitTdx.asm and ReloadFlat32.asm are added in Vtf0/Vtf0.nasmb as well.

Cc: Eric Dong <eric.dong at intel.com>
Cc: Ray Ni <ray.ni at intel.com>
Cc: Jiewen Yao <jiewen.yao at intel.com>
Cc: Laszlo Ersek <lersek at redhat.com>
Signed-off-by: Min Xu <min.m.xu at intel.com>
---
 UefiCpuPkg/ResetVector/Vtf0/Main.asm   | 45 ++++++++++++++++++++++++++
 UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb |  2 ++
 2 files changed, 47 insertions(+)

diff --git a/UefiCpuPkg/ResetVector/Vtf0/Main.asm b/UefiCpuPkg/ResetVector/Vtf0/Main.asm
index 19d08482f831..90e1dc678233 100644
--- a/UefiCpuPkg/ResetVector/Vtf0/Main.asm
+++ b/UefiCpuPkg/ResetVector/Vtf0/Main.asm
@@ -36,6 +36,51 @@ Main16:
 
 BITS    32
 
+%ifdef ARCH_X64
+
+    jmp SearchBfv
+
+;
+; Modified:  EBX, ECX, EDX, EBP, EDI, ESP
+;
+; @param[in,out]  RAX/EAX  0
+; @param[in]      RFLAGS   2
+; @param[in]      RCX      [31:0] TDINITVP - Untrusted Configuration
+;                          [63:32] 0
+; @param[in]      RDX      [31:0] VCPUID
+;                          [63:32] 0
+; @param[in]      RBX      [6:0] CPU supported GPA width
+;                          [7:7] 5 level page table support
+;                          [63:8] 0
+; @param[in]      RSI      [31:0] VCPU_Index
+;                          [63:32] 0
+; @param[in]      RDI/EDI  0
+; @param[in]      RBP/EBP  0
+; @param[in]      R8       Same as RCX
+; @param[out]     RBP/EBP  Address of Boot Firmware Volume (BFV)
+; @param[out]     DS       Selector allowing flat access to all addresses
+; @param[out]     ES       Selector allowing flat access to all addresses
+; @param[out]     FS       Selector allowing flat access to all addresses
+; @param[out]     GS       Selector allowing flat access to all addresses
+; @param[out]     SS       Selector allowing flat access to all addresses
+;
+; @return         None  This routine jumps to SEC and does not return
+Main32:
+    ;
+    ; Save EBX in EBP because EBX will be changed in ReloadFlat32
+    ;
+    mov     ebp, ebx
+
+    OneTimeCall ReloadFlat32
+
+    ;
+    ; Init Tdx
+    ;
+    OneTimeCall  InitTdx
+
+%endif
+
+SearchBfv:
     ;
     ; Search for the Boot Firmware Volume (BFV)
     ;
diff --git a/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb b/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb
index 493738c79c1c..663d6ddc4d24 100644
--- a/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb
+++ b/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb
@@ -51,6 +51,8 @@
 %include "Ia32/SearchForSecEntry.asm"
 
 %ifdef ARCH_X64
+%include "Ia32/InitTdx.asm"
+%include "Ia32/ReloadFlat32.asm"
 %include "Ia32/Flat32ToFlat64.asm"
 %include "Ia32/PageTables64.asm"
 %endif
-- 
2.29.2.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#77680): https://edk2.groups.io/g/devel/message/77680
Mute This Topic: https://groups.io/mt/84144143/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list