]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/SmmAccess/SmramInternal.c
MdeModulePkg/UDF: Fix creation of UDF logical partition
[mirror_edk2.git] / OvmfPkg / SmmAccess / SmramInternal.c
index c3267ca940315cf6e7607610783458a0d8518d66..18c42d29042d415841fe43dc55b36f07238ca8aa 100644 (file)
 #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
@@ -181,7 +198,9 @@ SmramAccessGetCapabilities (
   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