diff --git a/ArmVirtPkg/ArmVirtCloudHv.dsc b/ArmVirtPkg/ArmVirtCloudHv.dsc
index 3ccf82d61c..bf1e554720 100644
--- a/ArmVirtPkg/ArmVirtCloudHv.dsc
+++ b/ArmVirtPkg/ArmVirtCloudHv.dsc
@@ -155,6 +155,11 @@
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|3
gEfiShellPkgTokenSpaceGuid.PcdShellFileOperationSize|0x20000
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsFixedAtBuild.AARCH64]
# Clearing BIT0 in this PCD prevents installing a 32-bit SMBIOS entry point,
# if the entry point version is >= 3.0. AARCH64 OSes cannot assume the
diff --git a/ArmVirtPkg/ArmVirtKvmTool.dsc b/ArmVirtPkg/ArmVirtKvmTool.dsc
index 845dda9eec..175420787d 100644
--- a/ArmVirtPkg/ArmVirtKvmTool.dsc
+++ b/ArmVirtPkg/ArmVirtKvmTool.dsc
@@ -167,6 +167,11 @@
#
gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|16
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsPatchableInModule.common]
#
# This will be overridden in the code
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 867f835e49..b579348e4f 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -233,6 +233,11 @@
# System Memory Size -- 128 MB initially, actual size will be fetched from DT
gArmTokenSpaceGuid.PcdSystemMemorySize|0x8000000
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsFixedAtBuild.AARCH64]
# Clearing BIT0 in this PCD prevents installing a 32-bit SMBIOS entry point,
# if the entry point version is >= 3.0. AARCH64 OSes cannot assume the
diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKernel.dsc
index 3288398d4a..6003836415 100644
--- a/ArmVirtPkg/ArmVirtQemuKernel.dsc
+++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc
@@ -181,6 +181,11 @@
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|3
gEfiShellPkgTokenSpaceGuid.PcdShellFileOperationSize|0x20000
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsPatchableInModule.common]
# we need to provide a resolution for this PCD that supports PcdSet64()
# being called from ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.c,
diff --git a/ArmVirtPkg/ArmVirtXen.dsc b/ArmVirtPkg/ArmVirtXen.dsc
index a7d7ab7fa0..77f52be0c3 100644
--- a/ArmVirtPkg/ArmVirtXen.dsc
+++ b/ArmVirtPkg/ArmVirtXen.dsc
@@ -103,6 +103,11 @@
#
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable|TRUE
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsPatchableInModule.common]
# we need to provide a resolution for this PCD that supports PcdSet64()
# being called from ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.c,
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
index 100bfa0a60..a57ab435b2 100644
--- a/MdePkg/MdePkg.dec
+++ b/MdePkg/MdePkg.dec
@@ -2305,17 +2305,23 @@
# @Prompt Remove X permission from WX sections.
gEfiMdePkgTokenSpaceGuid.PcdImageLoaderRemoveXForWX|FALSE|BOOLEAN|0x40001021
- ## Indicates the UEFI image file formats supported outside FVs.
+ ## Indicates the UEFI image file formats supported outside FVs.
+ # UE is experimental and not enabled by default.
+ # For correct usage in a platform which opts in to UE support, this should
+ # be overridden globally, not within individual modules.
# BIT0 - PE.
# BIT1 - UE.
# @Prompt Supported UEFI image file formats outside FVs.
- gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportNonFv|0x02|UINT8|0x40002000
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportNonFv|0x01|UINT8|0x40002000
- ## Indicates the UEFI image file formats supported inside FVs.
+ ## Indicates the UEFI image file formats supported inside FVs.
+ # UE is experimental and not enabled by default.
+ # For correct usage in a platform which opts in to UE support, this should
+ # be overridden globally, not within individual modules.
# BIT0 - PE.
# BIT1 - UE.
# @Prompt Supported UEFI image file formats inside FVs.
- gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03|UINT8|0x40002001
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x01|UINT8|0x40002001
## Set image protection policy. The policy is applied for each source individually.
# If a bit is set, aligned images from this source will be protected and
diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX64.dsc
index 0116043217..2d12d6770e 100644
--- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc
+++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc
@@ -491,6 +491,11 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0xFFFFFFFFFFFFFF45
!endif
+ #
+ # Firmware volume is PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x01
+
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index b65a1ba9f3..70da076c40 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -599,6 +599,11 @@
gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x70000000
!endif
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 888977b6cb..2a3a1f6284 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -566,6 +566,11 @@
gEfiMdePkgTokenSpaceGuid.PcdControlFlowEnforcementPropertyMask|0x1
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsFixedAtBuild.IA32]
#
# The NumberOfPages values below are ad-hoc. They are updated sporadically at
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 259d90af5c..b490bc3e7d 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -626,6 +626,11 @@
gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000003
!endif
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index a08aa0249c..e1f658b948 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -484,6 +484,11 @@
gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsGet.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
!endif
+ #
+ # Firmware volume supports UE, and may require PE.
+ #
+ gEfiMdePkgTokenSpaceGuid.PcdUefiImageFormatSupportFv|0x03
+
[PcdsPatchableInModule.X64]
!if $(NETWORK_DRIVER_ENABLE) == TRUE
gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections|TRUE