Laszlo,

The PCD setting for TSEG size needs to be set for both IA32 and X64 modules in 
OvmfPkg/OvmfPkgIa32X64.dsc.
The this current patch, TSEG PCD is set to DEC default value for PEIMs of 1MB 
and 2MB for DXE/SMM phase.  
This causes SMM Core to only see 1MB SMRAM area.

I found this when trying to verify large number of VCPUs with 
OvmfPkg/OvmfPkgIa32X64.dsc build.

In order to test large VCPU numbers, we may also want to increase SMRAM size to 
more than 2 MB.

Thanks,

Mike

>-----Original Message-----
>From: edk2-devel [mailto:[email protected]] On Behalf Of
>Laszlo Ersek
>Sent: Wednesday, October 14, 2015 3:27 PM
>To: [email protected]
>Subject: [edk2] [PATCH v3 51/52] OvmfPkg: double the SMRAM (TSEG) size for
>the 64-bit DXE phase builds
>
>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

Move PcdQ35TsegMbytes setting above [PcdsFixedAtBuild.X64] 

!if $(SMM_REQUIRE) == TRUE
  gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes |2
!endif

[PcdsFixedAtBuild.X64]
!if $(SMM_REQUIRE) == TRUE
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01
!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
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to