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

Reply via email to