]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg Variable: Introduce PcdReclaimVariableSpaceAtEndOfDxe
authorStar Zeng <star.zeng@intel.com>
Mon, 2 Feb 2015 09:30:34 +0000 (09:30 +0000)
committerlzeng14 <lzeng14@Edk2>
Mon, 2 Feb 2015 09:30:34 +0000 (09:30 +0000)
for trying to reclaim variable space at EndOfDxe.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16687 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/MdeModulePkg.dec
MdeModulePkg/MdeModulePkg.uni
MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf

index a4cec63a8abb8344e81eb58f1623c63b45fa2372..dc795776887bface215cea9dc45dbdb70c837ce2 100644 (file)
   # @Prompt Boottime reserved NV variable space size.\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize|0x00|UINT32|0x30000007\r
 \r
+  ## Reclaim variable space at EndOfDxe.<BR><BR>\r
+  # The value is FALSE as default for compatibility that variable driver tries to reclaim variable space at ReadyToBoot event.<BR>\r
+  # If the value is set to TRUE, variable driver tries to reclaim variable space at EndOfDxe event.<BR>\r
+  # @Prompt Reclaim variable space at EndOfDxe.\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe|FALSE|BOOLEAN|0x30000008\r
+\r
   ## The size of volatile buffer. This buffer is used to store VOLATILE attribute variables.\r
   # @Prompt Variable storage size.\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x10000|UINT32|0x30000005\r
index b2ed93baaf766c48e3bb1d2d588ded413b8275e1..b851370a833b1d8917cfe0e72c0db5d5ab6fd6f1 100644 (file)
Binary files a/MdeModulePkg/MdeModulePkg.uni and b/MdeModulePkg/MdeModulePkg.uni differ
index 349128937b4fbc139d616c45b182dfa1198ae6b5..b3c36992e36a181af3c831d60dcea6f4907c8dee 100644 (file)
@@ -3124,6 +3124,15 @@ ReclaimForOS(
   EFI_STATUS                     Status;\r
   UINTN                          RemainingCommonRuntimeVariableSpace;\r
   UINTN                          RemainingHwErrVariableSpace;\r
+  STATIC BOOLEAN                 Reclaimed;\r
+\r
+  //\r
+  // This function will be called only once at EndOfDxe or ReadyToBoot event.\r
+  //\r
+  if (Reclaimed) {\r
+    return;\r
+  }\r
+  Reclaimed = TRUE;\r
 \r
   Status  = EFI_SUCCESS;\r
 \r
index c61064efde8efe2f505c9dc04c83cfaf5c200520..c5cef3194492ed73298e96e89cd66e0973f4c5b9 100644 (file)
@@ -313,6 +313,9 @@ OnEndOfDxe (
   // The initialization for variable quota.\r
   //\r
   InitializeVariableQuota ();\r
+  if (PcdGetBool (PcdReclaimVariableSpaceAtEndOfDxe)) {\r
+    ReclaimForOS ();\r
+  }\r
 }\r
 \r
 /**\r
index ed6d1b5cbb0777d07fd5ec86e1feb1379d03adb4..05d276590cbe5ff7a4a3c62269ce08b7d896ee54 100644 (file)
   gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                ## CONSUMES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize           ## CONSUMES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize  ## CONSUMES\r
-  \r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe  ## CONSUMES\r
+\r
 [FeaturePcd]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics  ## CONSUMES # statistic the information of variable.\r
   gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES\r
index 815ee2e81965dd96a6a5419712b0afab7b06c1df..3bf545a4e083609c37b2ad27ecb54b77946cfd61 100644 (file)
@@ -832,6 +832,9 @@ SmmEndOfDxeCallback (
   // The initialization for variable quota.\r
   //\r
   InitializeVariableQuota ();\r
+  if (PcdGetBool (PcdReclaimVariableSpaceAtEndOfDxe)) {\r
+    ReclaimForOS ();\r
+  }\r
   return EFI_SUCCESS;\r
 }\r
 \r
index e57a731d15eaa5cf59fe94eb359990a5cee430a5..b84ff87e43c8a2a5db8e7033fa09038924022e1b 100644 (file)
   gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                ## CONSUMES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize           ## CONSUMES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize  ## CONSUMES\r
-  \r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe  ## CONSUMES\r
+\r
 [FeaturePcd]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics   ## CONSUMES # statistic the information of variable.\r
   gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate  ## CONSUMES\r