From: "Kubacki, Michael A" <michael.a.kubacki@intel.com>
To: Laszlo Ersek <lersek@redhat.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Bi, Dandan" <dandan.bi@intel.com>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
"Dong, Eric" <eric.dong@intel.com>,
"Gao, Liming" <liming.gao@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Ni, Ray" <ray.ni@intel.com>,
"Wang, Jian J" <jian.j.wang@intel.com>,
"Wu, Hao A" <hao.a.wu@intel.com>,
"Yao, Jiewen" <jiewen.yao@intel.com>
Subject: Re: [PATCH V7 00/10] UEFI Variable SMI Reduction
Date: Fri, 1 Nov 2019 23:17:34 +0000 [thread overview]
Message-ID: <BYAPR11MB3831C1A29DACA310C8F64118B5620@BYAPR11MB3831.namprd11.prod.outlook.com> (raw)
In-Reply-To: <3fbfa373-2c35-a583-eb5d-ad084aea774b@redhat.com>
Hi Laszlo,
I did not make any changes to the OvmfPkg patch and I forgot to carry forward the R-b.
I'll keep that in mind in the future.
For V7, I request the MdeModulePkg maintainers please add the R-b for the patches
not changed. If this is not acceptable, I will be happy to send out a patch series
with all of the R-b present.
Thanks,
Michael
> -----Original Message-----
> From: Laszlo Ersek <lersek@redhat.com>
> Sent: Friday, November 1, 2019 3:19 PM
> To: Kubacki, Michael A <michael.a.kubacki@intel.com>;
> devel@edk2.groups.io
> Cc: Bi, Dandan <dandan.bi@intel.com>; Ard Biesheuvel
> <ard.biesheuvel@linaro.org>; Dong, Eric <eric.dong@intel.com>; Gao, Liming
> <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;
> Ni, Ray <ray.ni@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Wu, Hao
> A <hao.a.wu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> Subject: Re: [PATCH V7 00/10] UEFI Variable SMI Reduction
>
> Hello Michael,
>
> On 11/01/19 18:34, Michael Kubacki wrote:
> > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2220
> >
> > V7 Changes:
> > [PATCH V6 07/10] MdeModulePkg/Variable: Add RT GetVariable() cache
> > support
> > * Remove VariableRuntimeCache.c and VariableRuntimeCache.h from
> > VariableSmmRuntimeDxe.inf since they are not needed to build the
> module.
> >
> > V6 Changes:
> > [PATCH V5 07/10] MdeModulePkg/Variable: Add RT GetVariable() cache
> > support The most significant change is:
> > * Free mVariableRuntimeHobCacheBuffer in CheckForRuntimeCacheSync
> () in
> > VariableSmmRuntimeDxe.c with FreePages () instead of FreePool ().
> > This issue was not found in earlier testing because on the initial
> > set of platforms tested, the variable HOB flush was finished prior to
> > the variable HOB runtime cache buffer being allocated so the
> > FreePages () call was not executed.
> >
> > The remaining changes did not affect testing but are included for
> robustness:
> > * Pass EFI_OPTIONAL_PTR for the DebugDisposition type in the
> EfiConvertPointer ()
> > calls for mVariableRuntimeHobCacheBuffer,
> mVariableRuntimeNvCacheBuffer, and
> > mVariableRuntimeVolatileCacheBuffer in VariableAddressChangeEvent ()
> in
> > VariableSmmRuntimeDxe.c as these buffers will not be allocated if the
> runtime
> > cache is disabled.
> > * In the
> SMM_VARIABLE_FUNCTION_INIT_RUNTIME_VARIABLE_CACHE_CONTEXT
> case in
> > SmmVariableHandler () in VariableSmm.c, explicitly verify that
> > VariableRuntimeHobCache.Store is not NULL in addition to checking that
> > VariableGlobal.HobVariableBase is not set to zero (variable HOB is
> flushed)
> > before writing to VariableRuntimeHobCache.Store.
> >
> > V5 Changes:
> > [PATCH V4 07/10] MdeModulePkg/Variable: Add RT GetVariable() cache
> > support
> > * Increased validation of the runtime buffers passed in the SMM comm
> buffer
> >
> SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT
> structure to the
> >
> SMM_VARIABLE_FUNCTION_INIT_RUNTIME_VARIABLE_CACHE_CONTEXT
> function in
> > SmmVariableHandler () in VariableSmm.c.
> > * Most notably, each runtime buffer given is checked to ensure its
> memory
> > range does not overlap with SMRAM ranges via
> VariableSmmIsBufferOutsideSmmValid ().
> >
> > V4 Changes:
> > [PATCH V3 7/9] MdeModulePkg/Variable: Add RT GetVariable() cache
> > support
> > * Set
> gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache to
> FALSE
> > by default in MdeModulePkg.dec.
> >
> > * Added a new patch to set
> gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache
> > to TRUE at the end of the patch series. This allows someone to bisect an
> issue at
> > patch #7 or patch #8 in the series with no change in variable caching
> behavior. The
> > runtime cache variable logic would be applied explicitly in V4 patch #10.
>
> I gave my R-b for the OvmfPkg patch in the v4 posting:
>
> https://edk2.groups.io/g/devel/message/48979
>
> (alternative link:
>
> http://mid.mail-archive.com/b89583ed-06ef-ccd2-2e29-
> d054f581ea6a@redhat.com
> )
>
> In the v5 posting -- assuming you had not changed that specific OvmfPkg
> patch, relative to v4 -- you should have picked up my R-b, and carried it
> forward ever since (to the present v7). Basically, do a git-rebase, select the
> "reword" action for the patch, then cut&paste my R-b from my
> v4 review email to the bottom of the commit message. Then every further
> posting will contain it.
>
> If there *have* been changes to the patch, relative to v4, then it's indeed
> right to drop (or simply not pick up) my R-b. FWIW, the changelog above
> does not suggest the particular patch has seen any changes since v4.
>
> Thanks!
> Laszlo
>
> >
> > V3 Changes:
> > [PATCH V2 1/9] MdeModulePkg/Variable: Consolidate common parsing
> > functions
> > * Removed GUIDs added to VariableStandaloneMm.inf that are not
> required.
> > * Added more details to the commit message describing the criteria of
> > moving the chosen functions to VariableParsing.c.
> >
> > [PATCH V2 2/9] MdeModulePkg/Variable: Parameterize
> > GetNextVariableEx() store list
> > * RenamedGetNextVariableEx () to
> > VariableServiceGetNextVariableInternal ()
> > * Updated comments in VariableServiceGetNextVariableInternal () to
> refer to
> > "FindVariablEx ()" instead of "FindVariable ()" since FindVariableEx ()
> > is not used in the function.
> >
> > [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize
> > VARIABLE_INFO_ENTRY buffer
> > * Updated the commit message to clarify the message "structure can be
> updated
> > outside the fixed global variable".
> >
> > [edk2-devel] [PATCH V2 4/9] MdeModulePkg/Variable: Add local auth
> > status in VariableParsing
> > * Remove the function InitVariableParsing ()
> > * Remove the mAuthFormat global variable and instead add a BOOLEAN
> parameter
> > to all functions that require variable authentication information to
> > indicate if authenticated variables are used.
> > * This allows the authenticated variable status to be tracked in one place
> in
> > each variable driver in the SMM variable solution
> (VariableSmmRuntimeDxe
> > and VariableSmm).
> >
> > [edk2-devel] [PATCH V2 5/9] MdeModulePkg/Variable: Add a file for NV
> > variable functions
> > * Added the following non-volatile related functions to
> VariableNonVolatile.c
> > from Variable.c:
> > * InitRealNonVolatileVariableStore ()
> > * InitEmuNonVolatileVariableStore ()
> > * InitNonVolatileVariableStore ()
> >
> > [edk2-devel] [PATCH V2 7/9] MdeModulePkg/Variable: Add RT
> > GetVariable() cache support
> > * Added a FeaturePCD to control enabling the runtime variable cache -
> > gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache.
> > * Removed usage of the TimerLib and the wait to acquire
> > mVariableRuntimeCacheReadLock. Can rely on the UEFI specification
> > restrictions on Runtime Services callers.
> > * Removed the EFIAPI keyword from internal functions.
> > * Removed PCDs in VariableSmmRuntimeDxe.inf not required.
> > * Removed the HobVariableBackupBase variable no longer required.
> > * Renamed SynchronizeRuntimeVariableCacheEx () to better reflect
> usage.
> > * Renamed functions in VariableRuntimeCache.c to better reflect usage.
> > * Introduced a local variable in
> FlushPendingRuntimeVariableCacheUpdates ()
> > to reduce duplication of
> > mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.
> > * Corrected the macro used in SmmVariableHandler () to
> >
> SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT.
> > * Remove usage of the
> EDKII_PI_SMM_COMMUNICATION_REGION_TABLE to acquire a
> > CommBuffer from the EFI System Table and use the same runtime
> CommBuffer
> > allocated for variable SMM communicate calls.
> >
> > [PATCH V2 8/9] MdeModulePkg/Variable: Add RT GetNextVariableName()
> > cache support
> > * Removed usage of the TimerLib and the wait to acquire
> > mVariableRuntimeCacheReadLock. Can rely on the UEFI specification
> restrictions
> > on Runtime Services callers.
> >
> > * Added a new patch to disable
> gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache
> > for all OvmfPkg package builds as requested by maintainer Laszlo Ersek.
> >
> > V2 Changes:
> >
> > Patch #1 in V1 both moved functions to VariableParsing.c and modified
> > some functionality in those functions. In V2, the functions are first
> > moved and then functionality is modified in subsequent patches. This
> > resulted in the following new patches in the V2 patch series:
> >
> > 1. MdeModulePkg/Variable: Parameterize GetNextVariableEx() store list
> > 2. MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer
> 3.
> > MdeModulePkg/Variable: Add local auth status in VariableParsing 4.
> > MdeModulePkg/Variable: Add a file for NV variable functions
> >
> > Apart from this refactor in the patches, no functionally impacting
> > changes were made.
> >
> > Overview
> > ---------
> > This patch series reduces SMM usage when using
> VariableSmmRuntimeDxe
> > with VariableSmm. It does so by eliminating SMM usage for runtime
> > service GetVariable () and GetNextVariableName () invocations. Most
> > UEFI variable usage in typical systems after the variable store is
> > initialized (e.g. manufacturing boots) is due to GetVariable ( ) and
> > GetNextVariableName () not SetVariable (). GetVariable () calls can
> > regularly exceed 100 per boot while SetVariable () calls typically
> > remain less than 10 per boot. By focusing on the common case, the
> > majority of overhead associated with SMM can be avoided while still
> > using existing and proven code for operations such as variable
> > authentication that require an isolated execution environment.
> >
> > * Advantage: Reduces overall system SMM usage
> > * Disadvantage: Requires more Runtime data memory usage
> >
> > The runtime cache behavior described for this patch series is enabled
> > by default but can be disabled with a new FeaturePCD added to
> MdeModulePkg.dec:
> > gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache
> >
> > The reaminder of this blurb describes the changes and behavior when
> > the PCD is set to TRUE.
> >
> > Initial Performance Observations
> > ---------------------------------
> > * With these proposed changes, an Intel Atom based SoC saw GetVariable
> ( )
> > time for an existing variable reduce from ~220us to ~5us.
> >
> > Major Changes
> > --------------
> > 1. Two UEFI variable caches will be maintained.
> > a. "Runtime Cache" - Maintained in VariableSmmRuntimeDxe. Used to
> serve
> > runtime service GetVariable () and GetNextVariableName () callers.
> > b. "SMM cache" - Maintained in VariableSmm to service SMM
> GetVariable ()
> > and GetNextVariableName () callers.
> > i. A cache in SMRAM is retained so SMM modules do not operate on
> data
> > outside SMRAM.
> > 2. A new UEFI variable read and write flow will be used as described below.
> >
> > At any given time, the two caches would be coherent. On a variable
> > write, the runtime cache is only updated after validation in SMM and,
> > in the case of a non-volatile UEFI variable, the variable must also be
> > successfully written to non-volatile storage.
> >
> > Prior RFC Feedback Addressed
> > -----------------------------
> > RFC sent Sept. 5, 2019: https://edk2.groups.io/g/devel/message/46939
> >
> > 1. UEFI variable data retrieval from a ring 0 buffer
> >
> > A common concern with this proposed set of changes is the potential
> security
> > threat presented by serving runtime services callers from a ring 0 memory
> > buffer of EfiRuntimeServicesData type. The conclusion was that this
> change
> > does not fundamentally alter the attack surface. The UEFI variable
> Runtime
> > Services are invoked from ring 0 and the data already travels through ring
> > 0 buffers (such as the SMM communicate buffer) to reach the caller. Even
> > today if ring 0 is assumed to be malicious, the malicious code may keep
> one
> > AP in a loop to monitor the communication data, when the BSP gets an
> > (authenticated) variable. When the communication buffer is updated and
> the
> > status is set to EFI_SUCCESS, the AP may modify the communication
> buffer
> > contents such the tampered data is returned to the BSP caller. Or an
> > interrupt handler on the BSP may alter the communication buffer
> contents
> > before the data is returned to the caller. In summary, this was not found
> to
> > introduce any attack not possible today.
> >
> > 2. VarCheckLib impact
> >
> > VarCheckLib plays a role in SetVariable () calls. This patch series only
> > changes GetVariable () behavior. Therefore, VarCheckLib is expected to
> > have no impact due to these changes.
> >
> > Testing Performed
> > ------------------
> > This code was tested with the master branch of edk2 on an Intel Kaby
> > Lake U and Intel Whiskey Lake U reference validation platform. The set
> > of tests performed included:
> >
> > 1. Boot from S5 to Windows 10 OS with SMM variables enabled and
> > the variable runtime cache enabled.
> > 2. Boot from S5 to Ubuntu 18.04.1 LTS with SMM variable enabled
> > and the variable runtime cache enabled.
> > 3. Boot from S5 to Windows 10 OS with SMM variables enabled and
> > the variable runtime cache disabled.
> > 4. Boot from S5 to Ubuntu 18.04.1 LTS with SMM variable enabled
> > and the variable runtime cache disabled.
> > 5. Boot from S5 to EFI shell with DXE variables enabled.
> > (commit 2de1f611be broke OvmfPkgIa32X64 boot regardless of
> > this patch series; testing without this commit was successful) 6.
> > Dump UEFI variable store at shell with dmpstore to verify contents.
> > 7. Dump NvStorage FV from SPI flash after boot to verify contents written.
> > 8. Dump UEFI variable statistics with VariableInfo at shell.
> > 9. Boot with emulated variables enabled.
> > 10. Cycles of adding and deleting a UEFI variable to verify cache
> correctness.
> > 11. Set OsIndications to stop at FW UI to verify cache load of non-volatile
> > contents.
> >
> > Why Keep SMM on Variable Writes
> > --------------------------------
> > * SMM provides a ubiquitous isolated execution environment in x86 for
> > authenticated UEFI variables.
> > * BIOS region SPI flash write restrictions to SMM in platforms today can
> > be retained.
> >
> > Today's UEFI Variable Cache (for reference)
> > --------------------------------------------
> > * Maintained in SMRAM via VariableSmm.
> > * A "write-through" cache of variable data in the form of a UEFI variable
> > store.
> > * Non-volatile and volatile variables are maintained in separate buffers
> > (variable stores).
> >
> > Runtime & SMM Cache Coherency
> > ------------------------------
> > The non-volatile cache should always accurately reflect non-volatile
> > storage contents (done today) and the "SMM cache" and "Runtime cache"
> > should always be coherent on access. The runtime cache is updated by
> VariableSmm.
> >
> > Updating both caches from within a SMM SetVariable () operation is
> > fairly straightforward but a race condition can occur if an SMI occurs
> > during the execution of runtime code reading from the runtime cache.
> > To handle this case, a runtime cache read lock is introduced that
> > explicitly moves pending updates from SMM to the runtime cache if an
> > SMM update occurs while the runtime cache is locked. Note that it is
> > not expected a Runtime services call will interrupt SMM processing since all
> CPU cores rendezvous in SMM.
> >
> > New Key Elements for Coherence
> > -------------------------------
> > Runtime DXE (VariableSmmRuntimeDxe)
> > 1. RuntimeCacheReadLock - A global lock used to lock read access to the
> > runtime cache.
> > 2. RuntimeCachePendingUpdate - A global flag used to notify runtime code
> of a
> > pending cache update in SMM.
> >
> > SMM (VariableSmm)
> > 1. FlushRuntimeCachePendingUpdate SMI - A SW SMI handler that
> synchronizes
> > the runtime cache buffer with the SMM
> > cache buffer.
> >
> > Proposed Runtime DXE Read Flow
> > -------------------------------
> > 1. Acquire RuntimeCacheReadLock
> > 2. If RuntimeCachePendingUpdate flag (rare) is set then:
> > 2.a. Trigger FlushRuntimeCachePendingUpdate SMI
> > 2.b. Verify RuntimeCachePendingUpdate flag is cleared 3. Perform
> > read from RuntimeCache 4. Release RuntimeCacheReadLock
> >
> > Proposed FlushRuntimeCachePendingUpdate SMI
> > --------------------------------------------
> > 1. If RuntimeCachePendingUpdate flag is not set:
> > 1.a. Return
> > 2. Copy the data at RuntimeCachePendingOffset of
> RuntimeCachePendingLength to
> > RuntimeCache
> > 3. Clear the RuntimeCachePendingUpdate flag
> >
> > Proposed SMM Write Flow
> > ------------------------
> > 1. Perform variable authentication and non-volatile write. If either fail,
> > return an error to the caller.
> > 2. If RuntimeCacheReadLock is set then:
> > 2.a. Set RuntimeCachePendingUpdate flag
> > 2.b. Update RuntimeCachePendingOffset and
> RuntimeCachePendingLength to
> > cover the a superset of the pending chunk (for simplicity, the
> > entire variable store is currently synchronized).
> > 3. Else:
> > 3.a. Update RuntimeCache
> > 4. Update SmmCache
> > - Note: RT read cannot occur during SMI processing since all cores are
> > locked in SMM.
> >
> > Cc: Dandan Bi <dandan.bi@intel.com>
> > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Cc: Eric Dong <eric.dong@intel.com>
> > Cc: Laszlo Ersek <lersek@redhat.com>
> > Cc: Liming Gao <liming.gao@intel.com>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Ray Ni <ray.ni@intel.com>
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Cc: Hao A Wu <hao.a.wu@intel.com>
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
> >
> > Michael Kubacki (10):
> > MdeModulePkg/Variable: Consolidate common parsing functions
> > MdeModulePkg/Variable: Parameterize GetNextVariableInternal () stores
> > MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer
> > MdeModulePkg/Variable: Parameterize auth status in VariableParsing
> > MdeModulePkg/Variable: Add a file for NV variable functions
> > MdeModulePkg VariableInfo: Always consider RT DXE and SMM stats
> > MdeModulePkg/Variable: Add RT GetVariable() cache support
> > MdeModulePkg/Variable: Add RT GetNextVariableName() cache support
> > OvmfPkg: Disable variable runtime cache
> > MdeModulePkg: Enable variable runtime cache by default
> >
> > MdeModulePkg/MdeModulePkg.dec | 12 +
> > OvmfPkg/OvmfPkgIa32.dsc | 1 +
> > OvmfPkg/OvmfPkgIa32X64.dsc | 1 +
> > OvmfPkg/OvmfPkgX64.dsc | 1 +
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
> | 6 +
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf |
> 6 +
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
> nf | 18 +-
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
> | 6 +
> > MdeModulePkg/Include/Guid/SmmVariableCommon.h | 29
> +-
> > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h | 151
> +--
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.h
> | 67 +
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h |
> 347 +++++
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeCache.h
> | 51 +
> > MdeModulePkg/Application/VariableInfo/VariableInfo.c | 37 +-
> > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c | 1373
> ++++----------------
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c |
> 24 +-
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.c
> | 334 +++++
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c |
> 786 +++++++++++
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeCache.c
> | 153 +++
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c |
> 195 ++-
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
> c | 655 +++++++++-
> > 21 files changed, 2924 insertions(+), 1329 deletions(-) create mode
> > 100644
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.h
> > create mode 100644
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h
> > create mode 100644
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeCache.h
> > create mode 100644
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.c
> > create mode 100644
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
> > create mode 100644
> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeCache.c
> >
prev parent reply other threads:[~2019-11-01 23:17 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-01 17:34 [PATCH V7 00/10] UEFI Variable SMI Reduction Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 01/10] MdeModulePkg/Variable: Consolidate common parsing functions Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 02/10] MdeModulePkg/Variable: Parameterize GetNextVariableInternal () stores Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 03/10] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 04/10] MdeModulePkg/Variable: Parameterize auth status in VariableParsing Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 05/10] MdeModulePkg/Variable: Add a file for NV variable functions Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 06/10] MdeModulePkg VariableInfo: Always consider RT DXE and SMM stats Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 07/10] MdeModulePkg/Variable: Add RT GetVariable() cache support Kubacki, Michael A
2019-11-02 1:36 ` Wang, Jian J
2019-11-01 17:34 ` [PATCH V7 08/10] MdeModulePkg/Variable: Add RT GetNextVariableName() " Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 09/10] OvmfPkg: Disable variable runtime cache Kubacki, Michael A
2019-11-01 17:34 ` [PATCH V7 10/10] MdeModulePkg: Enable variable runtime cache by default Kubacki, Michael A
2019-11-01 22:19 ` [PATCH V7 00/10] UEFI Variable SMI Reduction Laszlo Ersek
2019-11-01 23:17 ` Kubacki, Michael A [this message]
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=BYAPR11MB3831C1A29DACA310C8F64118B5620@BYAPR11MB3831.namprd11.prod.outlook.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