]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
OVMF: Add support for saving the NV variables to disk following each SetVariable...
[mirror_edk2.git] / OvmfPkg / Library / PlatformBdsLib / BdsPlatform.c
index e4d1d4acbd9df5d162beb46133f76cf8a0faa4c2..f3781b4b55b3af68f91c0f08ac73971ac9c55294 100644 (file)
@@ -21,6 +21,8 @@
 \r
 VOID          *mEfiDevPathNotifyReg;\r
 EFI_EVENT     mEfiDevPathEvent;\r
+VOID          *mEmuVariableEventReg;\r
+EFI_EVENT     mEmuVariableEvent;\r
 BOOLEAN       mDetectVgaOnly;\r
 \r
 \r
@@ -815,6 +817,26 @@ ConnectRecursivelyIfPciMassStorage (
 }\r
 \r
 \r
+/**\r
+  This notification function is invoked when the\r
+  EMU Variable FVB has been changed.\r
+\r
+  @param  Event                 The event that occured\r
+  @param  Context               For EFI compatiblity.  Not used.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+EmuVariablesUpdatedCallback (\r
+  IN  EFI_EVENT Event,\r
+  IN  VOID      *Context\r
+  )\r
+{\r
+  DEBUG ((EFI_D_INFO, "EmuVariablesUpdatedCallback\n"));\r
+  UpdateNvVarsOnFileSystem ();\r
+}\r
+\r
+\r
 EFI_STATUS\r
 EFIAPI\r
 VisitingFileSystemInstance (\r
@@ -836,6 +858,16 @@ VisitingFileSystemInstance (
   }\r
 \r
   ConnectedToFileSystem = TRUE;\r
+  mEmuVariableEvent =\r
+    EfiCreateProtocolNotifyEvent (\r
+      &gEfiDevicePathProtocolGuid,\r
+      TPL_CALLBACK,\r
+      EmuVariablesUpdatedCallback,\r
+      NULL,\r
+      &mEmuVariableEventReg\r
+      );\r
+  PcdSet64 (PcdEmuVariableEvent, (UINT64)(UINTN) mEmuVariableEvent);\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r