Revision: 16772
          http://sourceforge.net/p/edk2/code/16772
Author:   vanjeff
Date:     2015-02-05 07:23:28 +0000 (Thu, 05 Feb 2015)
Log Message:
-----------
MdeModulePkg Variable: Introduce PcdReclaimVariableSpaceAtEndOfDxe

For trying to reclaim variable space at EndOfDxe.

(Sync patch r16687 from main trunk.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <[email protected]>
Reviewed-by: Liming Gao <[email protected]>

Revision Links:
--------------
    http://sourceforge.net/p/edk2/code/16687

Modified Paths:
--------------
    branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.dec
    branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.uni
    branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
    
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
    
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
    
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
    
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf

Modified: branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.dec
===================================================================
--- branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.dec  2015-02-05 07:00:35 UTC 
(rev 16771)
+++ branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.dec  2015-02-05 07:23:28 UTC 
(rev 16772)
@@ -701,6 +701,12 @@
   # @Prompt HwErr variable storage size.
   gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize|0x0000|UINT32|0x30000006
 
+  ## Reclaim variable space at EndOfDxe.<BR><BR>
+  # The value is FALSE as default for compatibility that variable driver tries 
to reclaim variable space at ReadyToBoot event.<BR>
+  # If the value is set to TRUE, variable driver tries to reclaim variable 
space at EndOfDxe event.<BR>
+  # @Prompt Reclaim variable space at EndOfDxe.
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe|FALSE|BOOLEAN|0x30000008
+
   ## The size of volatile buffer. This buffer is used to store VOLATILE 
attribute variables.
   # @Prompt Variable storage size.
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x10000|UINT32|0x30000005

Modified: branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.uni
===================================================================
--- branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.uni  2015-02-05 07:00:35 UTC 
(rev 16771)
+++ branches/UDK2014.SP1/MdeModulePkg/MdeModulePkg.uni  2015-02-05 07:23:28 UTC 
(rev 16772)
@@ -200,6 +200,18 @@
  ++++++  Modified: 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
===================================================================
--- branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c  
2015-02-05 07:00:35 UTC (rev 16771)
+++ branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c  
2015-02-05 07:23:28 UTC (rev 16772)
@@ -2952,7 +2952,16 @@
   UINTN                          CommonVariableSpace;
   UINTN                          RemainingCommonVariableSpace;
   UINTN                          RemainingHwErrVariableSpace;
+  STATIC BOOLEAN                 Reclaimed;
 
+  //
+  // This function will be called only once at EndOfDxe or ReadyToBoot event.
+  //
+  if (Reclaimed) {
+    return;
+  }
+  Reclaimed = TRUE;
+
   Status  = EFI_SUCCESS; 
 
   CommonVariableSpace = ((VARIABLE_STORE_HEADER *) ((UINTN) 
(mVariableModuleGlobal->VariableGlobal.NonVolatileVariableBase)))->Size - 
sizeof (VARIABLE_STORE_HEADER) - PcdGet32(PcdHwErrStorageSize); //Allowable max 
size of common variable storage space

Modified: 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
===================================================================
--- 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c   
    2015-02-05 07:00:35 UTC (rev 16771)
+++ 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c   
    2015-02-05 07:23:28 UTC (rev 16772)
@@ -307,6 +307,9 @@
   )
 {
   mEndOfDxe = TRUE;
+  if (PcdGetBool (PcdReclaimVariableSpaceAtEndOfDxe)) {
+    ReclaimForOS ();
+  }
 }
 
 /**

Modified: 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
===================================================================
--- 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
      2015-02-05 07:00:35 UTC (rev 16771)
+++ 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
      2015-02-05 07:23:28 UTC (rev 16772)
@@ -97,7 +97,8 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize    ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize               ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                ## CONSUMES
-  
+  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe  ## CONSUMES
+
 [FeaturePcd]
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics  ## CONSUMES # 
statistic the information of variable.
   gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES

Modified: 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
===================================================================
--- 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c   
    2015-02-05 07:00:35 UTC (rev 16771)
+++ 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c   
    2015-02-05 07:23:28 UTC (rev 16772)
@@ -763,6 +763,9 @@
 {
   DEBUG ((EFI_D_INFO, "[Variable]END_OF_DXE is signaled\n"));
   mEndOfDxe = TRUE;
+  if (PcdGetBool (PcdReclaimVariableSpaceAtEndOfDxe)) {
+    ReclaimForOS ();
+  }
   return EFI_SUCCESS;
 }
 

Modified: 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
===================================================================
--- 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf 
    2015-02-05 07:00:35 UTC (rev 16771)
+++ 
branches/UDK2014.SP1/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf 
    2015-02-05 07:23:28 UTC (rev 16772)
@@ -99,7 +99,8 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize    ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize               ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                ## CONSUMES
-  
+  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe  ## CONSUMES
+
 [FeaturePcd]
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics   ## CONSUMES # 
statistic the information of variable.
   gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate  ## CONSUMES


------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to