]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add PCD for 1G page table
authorjyao1 <jyao1@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 21 Sep 2011 03:45:35 +0000 (03:45 +0000)
committerjyao1 <jyao1@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 21 Sep 2011 03:45:35 +0000 (03:45 +0000)
signed off by: jyao1
reviewed by: jfan12

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12397 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3Save.c
IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3SaveDxe.inf
MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c
MdeModulePkg/MdeModulePkg.dec
MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
MdeModulePkg/Universal/CapsulePei/UefiCapsule.c
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf

index 1e83b7a8de87c173ee27238e8dd7739aa59dd6d3..4e36c8ae64b45ea9fcc857e20fe2c7a89296b074 100644 (file)
@@ -221,11 +221,13 @@ S3CreateIdentityMappingPageTables (
     PAGE_TABLE_1G_ENTRY                           *PageDirectory1GEntry;\r
 \r
     Page1GSupport = FALSE;\r
-    AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
-    if (RegEax >= 0x80000001) {\r
-      AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
-      if ((RegEdx & BIT26) != 0) {\r
-        Page1GSupport = TRUE;\r
+    if (PcdGetBool(PcdUse1GPageTable)) {\r
+      AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
+      if (RegEax >= 0x80000001) {\r
+        AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
+        if ((RegEdx & BIT26) != 0) {\r
+          Page1GSupport = TRUE;\r
+        }\r
       }\r
     }\r
 \r
index 24a526d9637cb3c9dbe0292d103a38880f387780..eb3ade991eb3ac7ef00a9be3771fd3e1a987145a 100644 (file)
@@ -73,6 +73,7 @@
 [Pcd]\r
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize    ## CONSUMES\r
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3BootScriptStackSize       ## CONSUMES\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable\r
 \r
 [Depex]\r
   #\r
index 784fdf18f662d507144289dee757cedf5ffc91fe..7717d0a8d5aa8acfc3dc187444f13acfb16630e7 100644 (file)
@@ -96,6 +96,9 @@
 [FeaturePcd]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress\r
 \r
+[Pcd.IA32,Pcd.X64]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable\r
+\r
 [Depex]\r
   gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiLoadFilePpiGuid AND gEfiPeiMasterBootModePpiGuid\r
 \r
index e3ed4b676229c4681f1c6b1c6c69ddd2c5e2744b..795ae7034c10fdcb18fe2fb859ee07ef28a9b45c 100644 (file)
@@ -66,11 +66,13 @@ CreateIdentityMappingPageTables (
   PAGE_TABLE_1G_ENTRY                           *PageDirectory1GEntry;\r
 \r
   Page1GSupport = FALSE;\r
-  AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
-  if (RegEax >= 0x80000001) {\r
-    AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
-    if ((RegEdx & BIT26) != 0) {\r
-      Page1GSupport = TRUE;\r
+  if (PcdGetBool(PcdUse1GPageTable)) {\r
+    AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
+    if (RegEax >= 0x80000001) {\r
+      AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
+      if ((RegEdx & BIT26) != 0) {\r
+        Page1GSupport = TRUE;\r
+      }\r
     }\r
   }\r
 \r
index f9a19f9fdc63d8d3295f02d8c4ffc45c6349a55d..2b05446947eef747c53b8f2d1c786ad63ead0a60 100644 (file)
   #  default value is set to Zero. And the PCD is assumed ONLY to be accessed in DxeS3BootScriptLib Library.\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0x0|UINT64|0x00030000\r
 \r
+[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx, PcdsDynamicHii]\r
+  ## This PCD specifies whether 1G page table is enabled.\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable|FALSE|BOOLEAN|0x30000047\r
+\r
index 72f1ba52f6a6316361079dbe5c8096e7ab8ca34d..8f9ebfb8ba4a8d25cff185828a63bcf0e77367ce 100644 (file)
@@ -68,6 +68,9 @@
 [Pcd.IA32]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleCoalesceFile\r
 \r
+[Pcd.IA32]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable\r
+\r
 [FeaturePcd.IA32]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode\r
 \r
index d34c3fdd8a56459c01044e90afc41346ab496d28..98b0d56457fdf6d2e50958df8bd64f8de5d669ee 100644 (file)
@@ -63,11 +63,13 @@ CalculatePageTableSize (
   BOOLEAN                                       Page1GSupport;\r
 \r
   Page1GSupport = FALSE;\r
-  AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
-  if (RegEax >= 0x80000001) {\r
-    AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
-    if ((RegEdx & BIT26) != 0) {\r
-      Page1GSupport = TRUE;\r
+  if (PcdGetBool(PcdUse1GPageTable)) {\r
+    AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
+    if (RegEax >= 0x80000001) {\r
+      AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
+      if ((RegEdx & BIT26) != 0) {\r
+        Page1GSupport = TRUE;\r
+      }\r
     }\r
   }\r
 \r
index 110b376d4501c60c62f3dee49acfc72089a20bab..3afd0ff0e395859679c22afae22fc51bd9fa368a 100644 (file)
@@ -518,11 +518,13 @@ RestoreS3PageTables (
     S3NvsPageTableAddress += SIZE_4KB;\r
     \r
     Page1GSupport = FALSE;\r
-    AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
-    if (RegEax >= 0x80000001) {\r
-      AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
-      if ((RegEdx & BIT26) != 0) {\r
-        Page1GSupport = TRUE;\r
+    if (PcdGetBool(PcdUse1GPageTable)) {\r
+      AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
+      if (RegEax >= 0x80000001) {\r
+        AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
+        if ((RegEdx & BIT26) != 0) {\r
+          Page1GSupport = TRUE;\r
+        }\r
       }\r
     }\r
     \r
index 58e239825a14b7e9f9d4a28459ed63b5542ef012..aaed9797180d704962e7d20e9bd549cd016ce614 100644 (file)
@@ -75,5 +75,8 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport\r
 \r
+[Pcd]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable\r
+\r
 [Depex]\r
   gEfiPeiReadOnlyVariable2PpiGuid\r