From: Star Zeng <star.zeng@intel.com>
To: edk2-devel@lists.01.org
Cc: Star Zeng <star.zeng@intel.com>,
Jian J Wang <jian.j.wang@intel.com>, Hao Wu <hao.a.wu@intel.com>
Subject: [PATCH V3 05/17] MdeModulePkg Variable: Abstract VariableWriteServiceInitializeDxe/Smm
Date: Tue, 15 Jan 2019 18:29:27 +0800 [thread overview]
Message-ID: <1547548179-42552-6-git-send-email-star.zeng@intel.com> (raw)
In-Reply-To: <1547548179-42552-1-git-send-email-star.zeng@intel.com>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1323
Merge EmuVariable and Real variable driver.
Abstract VariableWriteServiceInitializeDxe/Smm from
FtwNotificationEvent/SmmFtwNotificationEvent, then
VariableWriteServiceInitializeDxe/Smm could be not aware
the NV storage is real or emulated.
This patch prepares for adding emulated variable NV mode
support in VariableRuntimeDxe.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
---
.../Universal/Variable/RuntimeDxe/VariableDxe.c | 55 ++++++++++++++--------
.../Universal/Variable/RuntimeDxe/VariableSmm.c | 43 ++++++++++++-----
2 files changed, 66 insertions(+), 32 deletions(-)
diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
index 30165ce4dc95..521cb4ed2490 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
@@ -342,6 +342,40 @@ OnEndOfDxe (
}
/**
+ Initializes variable write service for DXE.
+
+**/
+VOID
+VariableWriteServiceInitializeDxe (
+ VOID
+ )
+{
+ EFI_STATUS Status;
+
+ Status = VariableWriteServiceInitialize ();
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "Variable write service initialization failed. Status = %r\n", Status));
+ }
+
+ //
+ // Some Secure Boot Policy Var (SecureBoot, etc) updates following other
+ // Secure Boot Policy Variable change. Record their initial value.
+ //
+ RecordSecureBootPolicyVarData();
+
+ //
+ // Install the Variable Write Architectural protocol.
+ //
+ Status = gBS->InstallProtocolInterface (
+ &mHandle,
+ &gEfiVariableWriteArchProtocolGuid,
+ EFI_NATIVE_INTERFACE,
+ NULL
+ );
+ ASSERT_EFI_ERROR (Status);
+}
+
+/**
Fault Tolerant Write protocol notification event handler.
Non-Volatile variable write may needs FTW protocol to reclaim when
@@ -423,27 +457,10 @@ FtwNotificationEvent (
}
}
- Status = VariableWriteServiceInitialize ();
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Variable write service initialization failed. Status = %r\n", Status));
- }
-
//
- // Some Secure Boot Policy Var (SecureBoot, etc) updates following other
- // Secure Boot Policy Variable change. Record their initial value.
+ // Initializes variable write service after FTW was ready.
//
- RecordSecureBootPolicyVarData();
-
- //
- // Install the Variable Write Architectural protocol.
- //
- Status = gBS->InstallProtocolInterface (
- &mHandle,
- &gEfiVariableWriteArchProtocolGuid,
- EFI_NATIVE_INTERFACE,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
+ VariableWriteServiceInitializeDxe ();
//
// Close the notify event to avoid install gEfiVariableWriteArchProtocolGuid again.
diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
index 2401ad912ef1..17b7090f0dcd 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
@@ -842,6 +842,34 @@ SmmEndOfDxeCallback (
}
/**
+ Initializes variable write service for SMM.
+
+**/
+VOID
+VariableWriteServiceInitializeSmm (
+ VOID
+ )
+{
+ EFI_STATUS Status;
+
+ Status = VariableWriteServiceInitialize ();
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "Variable write service initialization failed. Status = %r\n", Status));
+ }
+
+ //
+ // Notify the variable wrapper driver the variable write service is ready
+ //
+ Status = gBS->InstallProtocolInterface (
+ &mSmmVariableHandle,
+ &gSmmVariableWriteGuid,
+ EFI_NATIVE_INTERFACE,
+ NULL
+ );
+ ASSERT_EFI_ERROR (Status);
+}
+
+/**
SMM Fault Tolerant Write protocol notification event handler.
Non-Volatile variable write may needs FTW protocol to reclaim when
@@ -905,21 +933,10 @@ SmmFtwNotificationEvent (
mVariableModuleGlobal->FvbInstance = FvbProtocol;
- Status = VariableWriteServiceInitialize ();
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Variable write service initialization failed. Status = %r\n", Status));
- }
-
//
- // Notify the variable wrapper driver the variable write service is ready
+ // Initializes variable write service after FTW was ready.
//
- Status = gBS->InstallProtocolInterface (
- &mSmmVariableHandle,
- &gSmmVariableWriteGuid,
- EFI_NATIVE_INTERFACE,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
+ VariableWriteServiceInitializeSmm ();
return EFI_SUCCESS;
}
--
2.7.0.windows.1
next prev parent reply other threads:[~2019-01-15 10:29 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-15 10:29 [PATCH V3 00/17] Merge EmuVariable and Real variable driver Star Zeng
2019-01-15 10:29 ` [PATCH V3 01/17] MdeModulePkg Variable: Add some missing changes for 9b18845 Star Zeng
2019-01-15 10:29 ` [PATCH V3 02/17] MdeModulePkg Variable: Abstract InitRealNonVolatileVariableStore Star Zeng
2019-01-15 10:29 ` [PATCH V3 03/17] MdeModulePkg Variable: Move "extern XXX" to Variable.h Star Zeng
2019-01-16 7:28 ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 04/17] MdeModulePkg Variable: Not get NV PCD in VariableWriteServiceInitialize Star Zeng
2019-01-16 7:28 ` Wu, Hao A
2019-01-15 10:29 ` Star Zeng [this message]
2019-01-15 10:29 ` [PATCH V3 06/17] MdeModulePkg Variable: Remove CacheOffset in UpdateVariable() Star Zeng
2019-01-15 10:29 ` [PATCH V3 07/17] MdeModulePkg Variable: type case VolatileBase to UINTN directly Star Zeng
2019-01-15 10:29 ` [PATCH V3 08/17] MdeModulePkg: Add PcdEmuVariableNvModeEnable in dec Star Zeng
2019-01-15 10:29 ` [PATCH V3 09/17] MdeModulePkg: Refine description a little for PcdEmuVariableNvStoreReserved Star Zeng
2019-01-16 7:28 ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 10/17] MdeModulePkg Variable: Add emulated variable NV mode support Star Zeng
2019-01-16 7:28 ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 11/17] MdeModulePkg VariablePei: Don't check BOOT_IN_RECOVERY_MODE Star Zeng
2019-01-16 7:28 ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 12/17] ArmVirtXen: Use merged variable driver for emulated NV mode Star Zeng
2019-01-16 12:58 ` Ard Biesheuvel
2019-01-15 10:29 ` [PATCH V3 13/17] ArmVirtXen: Link VarCheckUefiLib NULL class library instance Star Zeng
2019-01-16 12:58 ` Ard Biesheuvel
2019-01-15 10:29 ` [PATCH V3 14/17] BeagleBoardPkg: Use merged variable driver for emulated NV mode Star Zeng
2019-01-15 11:35 ` Leif Lindholm
2019-01-15 10:29 ` [PATCH V3 15/17] QuarkMin: " Star Zeng
2019-01-16 17:46 ` Kinney, Michael D
2019-01-16 17:55 ` Steele, Kelly
2019-01-15 10:29 ` [PATCH V3 16/17] CorebootPayloadPkg: " Star Zeng
2019-01-16 5:22 ` You, Benjamin
2019-01-15 10:29 ` [PATCH V3 17/17] MdeModulePkg: Remove EmuVariableRuntimeDxe Star Zeng
2019-01-16 7:29 ` Wu, Hao A
2019-01-16 3:01 ` [PATCH V3 00/17] Merge EmuVariable and Real variable driver Wang, Jian J
2019-01-16 7:40 ` Wu, Hao A
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1547548179-42552-6-git-send-email-star.zeng@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox