]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg Variable: Before EndOfDxe, just record the current boot VarErrorFlag...
authorStar Zeng <star.zeng@intel.com>
Mon, 2 Feb 2015 03:17:27 +0000 (03:17 +0000)
committerlzeng14 <lzeng14@Edk2>
Mon, 2 Feb 2015 03:17:27 +0000 (03:17 +0000)
And leave the variable error flag in NV flash as the last boot variable error flag.
After EndOfDxe in InitializeVarErrorFlag (), the variable error flag in NV flash
will be initialized to this local current boot variable error flag.

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

MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c

index 0cf367404f92646949cd9fad2a3436313b662052..349128937b4fbc139d616c45b182dfa1198ae6b5 100644 (file)
@@ -55,6 +55,10 @@ BOOLEAN                mEndOfDxe              = FALSE;
 ///\r
 BOOLEAN                mEnableLocking         = TRUE;\r
 \r
+//\r
+// It will record the current boot error flag before EndOfDxe.\r
+//\r
+VAR_ERROR_FLAG         mCurrentBootVarErrFlag = VAR_ERROR_FLAG_NO_ERROR;\r
 \r
 /**\r
   Routine used to track statistical information about variable usage. \r
@@ -561,6 +565,17 @@ RecordVarErrorFlag (
     }\r
   );\r
 \r
+  if (!mEndOfDxe) {\r
+    //\r
+    // Before EndOfDxe, just record the current boot variable error flag to local variable,\r
+    // and leave the variable error flag in NV flash as the last boot variable error flag.\r
+    // After EndOfDxe in InitializeVarErrorFlag (), the variable error flag in NV flash\r
+    // will be initialized to this local current boot variable error flag.\r
+    //\r
+    mCurrentBootVarErrFlag &= Flag;\r
+    return;\r
+  }\r
+\r
   //\r
   // Record error flag (it should have be initialized).\r
   //\r
@@ -619,7 +634,7 @@ InitializeVarErrorFlag (
     return;\r
   }\r
 \r
-  Flag = VAR_ERROR_FLAG_NO_ERROR;\r
+  Flag = mCurrentBootVarErrFlag;\r
   DEBUG ((EFI_D_INFO, "Initialize variable error flag (%02x)\n", Flag));\r
 \r
   Status = FindVariable (\r