#include <Guid/AcpiS3Context.h>\r
#include <IndustryStandard/Q35MchIch9.h>\r
#include <Library/DebugLib.h>\r
+#include <Library/PcdLib.h>\r
#include <Library/PciLib.h>\r
\r
#include "SmramInternal.h"\r
\r
+//\r
+// The value of PcdQ35TsegMbytes is saved into this variable at module startup.\r
+//\r
+UINT16 mQ35TsegMbytes;\r
+\r
+/**\r
+ Save PcdQ35TsegMbytes into mQ35TsegMbytes.\r
+**/\r
+VOID\r
+InitQ35TsegMbytes (\r
+ VOID\r
+ )\r
+{\r
+ mQ35TsegMbytes = PcdGet16 (PcdQ35TsegMbytes);\r
+}\r
+\r
/**\r
Read the MCH_SMRAM and ESMRAMC registers, and update the LockState and\r
OpenState fields in the PEI_SMM_ACCESS_PPI / EFI_SMM_ACCESS2_PROTOCOL object,\r
SmramMap[DescIdxMain].PhysicalSize =\r
(TsegSizeBits == MCH_ESMRAMC_TSEG_8MB ? SIZE_8MB :\r
TsegSizeBits == MCH_ESMRAMC_TSEG_2MB ? SIZE_2MB :\r
- SIZE_1MB) - SmramMap[DescIdxSmmS3ResumeState].PhysicalSize;\r
+ TsegSizeBits == MCH_ESMRAMC_TSEG_1MB ? SIZE_1MB :\r
+ mQ35TsegMbytes * SIZE_1MB) -\r
+ SmramMap[DescIdxSmmS3ResumeState].PhysicalSize;\r
SmramMap[DescIdxMain].RegionState = CommonRegionState;\r
\r
return EFI_SUCCESS;\r