From 24a208db039be0f0b08dced78929eded0f485df5 Mon Sep 17 00:00:00 2001 From: Mikhail Krichanov Date: Tue, 3 Oct 2023 20:02:22 +0300 Subject: [PATCH] OvmfPkg: Switched SEC to UE format. --- MdePkg/Library/BaseUefiImageLib/UeSupport.c | 8 ++++++++ OvmfPkg/OvmfPkgIa32.fdf | 2 +- OvmfPkg/OvmfPkgIa32X64.fdf | 2 +- OvmfPkg/OvmfPkgX64.fdf | 2 +- .../ResetVector/Vtf0/Ia32/SearchForSecEntry.asm | 13 +++++++++++-- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/MdePkg/Library/BaseUefiImageLib/UeSupport.c b/MdePkg/Library/BaseUefiImageLib/UeSupport.c index 3eb0519cf1..3e7c35d1ce 100644 --- a/MdePkg/Library/BaseUefiImageLib/UeSupport.c +++ b/MdePkg/Library/BaseUefiImageLib/UeSupport.c @@ -89,6 +89,14 @@ UefiImageLoadImageInplaceUe ( IN OUT UEFI_IMAGE_LOADER_IMAGE_CONTEXT *Context ) { + ASSERT (Context != NULL); + + if (Context->Ctx.Ue.XIP) { + Context->Ctx.Ue.ImageBuffer = (UINT8 *) Context->Ctx.Ue.FileBuffer; + + return RETURN_SUCCESS; + } + return RETURN_UNSUPPORTED; } diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf index 204a43fb16..746fed2a79 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -416,7 +416,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { [Rule.Common.SEC] FILE SEC = $(NAMED_GUID) { - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi + UE UE $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING ="$(MODULE_NAME)" Optional VERSION STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf index 19edf3d8b9..1916ea2b81 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -419,7 +419,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { [Rule.Common.SEC] FILE SEC = $(NAMED_GUID) { - PE32 PE32 Align=Auto $(INF_OUTPUT)/$(MODULE_NAME).efi + UE UE $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING ="$(MODULE_NAME)" Optional VERSION STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index c17cf9eb24..781b2a6216 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -451,7 +451,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { [Rule.Common.SEC] FILE SEC = $(NAMED_GUID) { - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi + UE UE $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING ="$(MODULE_NAME)" Optional VERSION STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } diff --git a/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm b/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm index c65f5497e6..c1ab35e968 100644 --- a/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm +++ b/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm @@ -150,10 +150,20 @@ getEntryPointOfFfsFileLoopForSections: jmp getEntryPointOfFfsFileLoopForSections getEntryPointOfFfsFileFoundPe32Section: - add eax, 4 ; EAX = Start of PE32 image + add eax, 4 ; EAX = Start of PE or UE image cmp word [eax], 'MZ' + je getEntryPointOfFfsFileFoundPeFile + + cmp word [eax], 'UE' jne getEntryPointOfFfsFileErrorReturn + + ; *EntryPoint = (VOID *)((UINTN)UeData + UeHdr.EntryPointAddress) + mov ebx, dword [eax + 0x4] + add eax, ebx + jmp getEntryPointOfFfsFileReturn + +getEntryPointOfFfsFileFoundPeFile: movzx ebx, word [eax + 0x3c] add ebx, eax @@ -171,4 +181,3 @@ getEntryPointOfFfsFileErrorReturn: getEntryPointOfFfsFileReturn: OneTimeCallRet GetEntryPointOfFfsFile -