When building OVMF with -D SMM_REQUIRE -D SECURE_BOOT_ENABLE, using gcc-4.8, for the DEBUG build target, and with DEBUG_VERBOSE enabled in PcdDebugPrintErrorLevel, the build report files report the following binary sizes for the SMM_CORE and SMM modules, in kilobytes:
Driver Ia32 X64 ------------------------ ------ ------- PiSmmCore 56.75 98.22 CpuIo2Smm 13.47 22.72 SmmLockBox 24.62 39.69 PiSmmCpuDxeSmm 66.06 123.03 FvbServicesSmm 22.22 37.06 SmmFaultTolerantWriteDxe 35.19 60.06 VariableSmm 356.88 640.28 ------------------------ ------ ------- Total 575.19 1021.06 The 1 MB default for PcdQ35TsegMbytes, from OvmfPkg.dec, is insufficient for loading the privileged half of the variable driver (VariableSmm) on X64. This results in many warnings about the dependent drivers being impossible to dispatch, and ultimately a DXE core assertion failure. PcdQ35TsegMbytes can assume the values 1, 2 or 8; set it to 2 for the DSC files with 64-bit DXE phases. For consistency between the DSC files, spell out 1 in OvmfPkgIa32.dsc too. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <[email protected]> --- Notes: v3: - new in v3 OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + 3 files changed, 3 insertions(+) diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 9040bdc..660a645 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -401,6 +401,7 @@ [PcdsFixedAtBuild] !if $(SMM_REQUIRE) == TRUE gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01 + gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|1 !endif !if $(SECURE_BOOT_ENABLE) == TRUE diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index 4aa7ba5..16dd785 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -407,6 +407,7 @@ [PcdsFixedAtBuild] [PcdsFixedAtBuild.X64] !if $(SMM_REQUIRE) == TRUE gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01 + gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|2 !endif !if $(SECURE_BOOT_ENABLE) == TRUE diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index 6ea135d..fe4889a 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -406,6 +406,7 @@ [PcdsFixedAtBuild] !if $(SMM_REQUIRE) == TRUE gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01 + gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|2 !endif !if $(SECURE_BOOT_ENABLE) == TRUE -- 1.8.3.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

