From 00ab76e0fed1884e978750e406e7b9a51842dfd8 Mon Sep 17 00:00:00 2001 From: Star Zeng Date: Mon, 2 Feb 2015 03:17:27 +0000 Subject: MdeModulePkg Variable: Before EndOfDxe, just record the current boot VarErrorFlag to local variable. 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 Reviewed-by: Jiewen Yao 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 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c index 0cf367404f..349128937b 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c @@ -55,6 +55,10 @@ BOOLEAN mEndOfDxe = FALSE; /// BOOLEAN mEnableLocking = TRUE; +// +// It will record the current boot error flag before EndOfDxe. +// +VAR_ERROR_FLAG mCurrentBootVarErrFlag = VAR_ERROR_FLAG_NO_ERROR; /** Routine used to track statistical information about variable usage. @@ -561,6 +565,17 @@ RecordVarErrorFlag ( } ); + if (!mEndOfDxe) { + // + // Before EndOfDxe, just record the current boot variable error flag to local variable, + // 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. + // + mCurrentBootVarErrFlag &= Flag; + return; + } + // // Record error flag (it should have be initialized). // @@ -619,7 +634,7 @@ InitializeVarErrorFlag ( return; } - Flag = VAR_ERROR_FLAG_NO_ERROR; + Flag = mCurrentBootVarErrFlag; DEBUG ((EFI_D_INFO, "Initialize variable error flag (%02x)\n", Flag)); Status = FindVariable ( -- cgit v1.2.3