When OVMF tried to restore the variables from the file-based NvVars, it
failed to set the read-only variable and aborted the restoration with
this message:

Variable Check ReadOnly variable fail Write Protected - 
04B37FE8-F6AE-480B-BDD5-37D98C5E89AA:VarErrorFlag

Since it's a read-only variable maintained by the firmware, it's
pointless to restore the previous value, so the check can be
relaxed to allow EFI_WRITE_PROTECTED returned from SetVariable.

Cc: Laszlo Ersek <[email protected]>
Cc: Jordan Justen <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gary Lin <[email protected]>
---
 OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.c 
b/OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.c
index 6822c5c..bf8ad31 100644
--- a/OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.c
+++ b/OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.c
@@ -302,6 +302,11 @@ IterateVariablesCallbackSetSystemVariable (
             "failed with EFI_SECURITY_VIOLATION, ignoring\n", __FUNCTION__,
             VariableName));
     Status = EFI_SUCCESS;
+  } else if (Status == EFI_WRITE_PROTECTED) {
+    DEBUG ((DEBUG_WARN, "%a: setting ReadOnly variable \"%s\" "
+            "failed with EFI_WRITE_PROTECTED, ignoring\n", __FUNCTION__,
+            VariableName));
+    Status = EFI_SUCCESS;
   }
   return Status;
 }
-- 
2.8.3

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to