From 13f99fa7cbde0829ba98e1e4f2a03891a0791ac6 Mon Sep 17 00:00:00 2001 From: Mike Beaton Date: Wed, 13 Mar 2024 17:02:59 +0000 Subject: [PATCH] OvmfPkg: Update LINUX_LOADER to allow unaligned user images Required in some distros, e.g. SliTaz. In that example bootx64.efi is the kernel plus an extra loader which fetches its params from a text file. That image has section alignment 0x20, whereas the default (0x7) PcdImageProtectionPolicy enforces section alignment of EFI_PAGE_SIZE=0x1000 for all images. In OpenDuet and OpenCore native loader the Pcd is already set to 0x03, to not enforce this for user images (to allow legacy Apple images) - so this distro I believe would already load via Duet; but this change is required for it to load in AUDK OVMF. --- OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + 4 files changed, 4 insertions(+) diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX64.dsc index 45362d05af..0116043217 100644 --- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc +++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc @@ -485,6 +485,7 @@ # Allow execution of EfiReservedMemoryType, EfiConventionalMemory, EfiBootServicesData and EfiLoaderData memory regions. gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF40 gEfiMdePkgTokenSpaceGuid.PcdImageLoaderAllowMisalignedOffset|TRUE + gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000003 !else # Allow execution of EfiConventionalMemory and EfiBootServicesData memory regions. gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF45 diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 95084b0612..b65a1ba9f3 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -592,6 +592,7 @@ # Allow execution of EfiReservedMemoryType, EfiConventionalMemory, EfiBootServicesData and EfiLoaderData memory regions. gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF40 gEfiMdePkgTokenSpaceGuid.PcdImageLoaderAllowMisalignedOffset|TRUE + gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000003 !elseif $(WINDOWS_10_IA32) == TRUE # Allow execution of EfiReservedMemoryType, EfiConventionalMemory, EfiBootServicesData and EfiRuntimeServicesData memory regions. gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF04 diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index 3bf3f6f7fb..888977b6cb 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -607,6 +607,7 @@ # Allow execution of EfiReservedMemoryType, EfiConventionalMemory, EfiBootServicesData and EfiLoaderData memory regions. gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF40 gEfiMdePkgTokenSpaceGuid.PcdImageLoaderAllowMisalignedOffset|TRUE + gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000003 !endif ################################################################################ diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index cdcdda588f..259d90af5c 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -623,6 +623,7 @@ # Allow execution of EfiReservedMemoryType, EfiConventionalMemory, EfiBootServicesData and EfiLoaderData memory regions. gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF40 gEfiMdePkgTokenSpaceGuid.PcdImageLoaderAllowMisalignedOffset|TRUE + gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000003 !endif ################################################################################