MdeModulePkg Variable: Add emulated variable NV mode support
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1323 Merge EmuVariable and Real variable driver. Add emulated variable NV mode support in real variable driver. Platform can configure PcdEmuVariableNvModeEnable statically (build time) or dynamically (boot time) to support emulated variable NV mode. If PcdEmuVariableNvModeEnable is configured to dynamic, its value should be set before Variable driver starts to work, otherwise default value will take effect. Then EmuVariableRuntimeDxe could be removed, the removal of EmuVariableRuntimeDxe will be done after platforms are migrated to use the merged variable driver. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao Wu <hao.a.wu@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng <star.zeng@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Tested-by: Julien Grall <julien.grall@arm.com> Acked-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
@@ -1012,17 +1012,24 @@ MmVariableServiceInitialize (
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Register FtwNotificationEvent () notify function.
|
||||
//
|
||||
Status = gMmst->MmRegisterProtocolNotify (
|
||||
&gEfiSmmFaultTolerantWriteProtocolGuid,
|
||||
SmmFtwNotificationEvent,
|
||||
&SmmFtwRegistration
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
if (!PcdGetBool (PcdEmuVariableNvModeEnable)) {
|
||||
//
|
||||
// Register FtwNotificationEvent () notify function.
|
||||
//
|
||||
Status = gMmst->MmRegisterProtocolNotify (
|
||||
&gEfiSmmFaultTolerantWriteProtocolGuid,
|
||||
SmmFtwNotificationEvent,
|
||||
&SmmFtwRegistration
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
SmmFtwNotificationEvent (NULL, NULL, NULL);
|
||||
SmmFtwNotificationEvent (NULL, NULL, NULL);
|
||||
} else {
|
||||
//
|
||||
// Emulated non-volatile variable mode does not depend on FVB and FTW.
|
||||
//
|
||||
VariableWriteServiceInitializeSmm ();
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user