From: "Wu, Hao A" <hao.a.wu@intel.com>
To: "Kubacki, Michael A" <michael.a.kubacki@intel.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>,
Laszlo Ersek <lersek@redhat.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>,
"Yao, Jiewen" <jiewen.yao@intel.com>
Subject: Re: [PATCH V4 04/10] MdeModulePkg/Variable: Parameterize auth status in VariableParsing
Date: Thu, 17 Oct 2019 01:01:14 +0000 [thread overview]
Message-ID: <B80AF82E9BFB8E4FBD8C89DA810C6A093C948514@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20191014233001.33024-5-michael.a.kubacki@intel.com>
> -----Original Message-----
> From: Kubacki, Michael A
> Sent: Tuesday, October 15, 2019 7:30 AM
> To: devel@edk2.groups.io
> Cc: Bi, Dandan; Ard Biesheuvel; Dong, Eric; Laszlo Ersek; Gao, Liming; Kinney,
> Michael D; Ni, Ray; Wang, Jian J; Wu, Hao A; Yao, Jiewen
> Subject: [PATCH V4 04/10] MdeModulePkg/Variable: Parameterize auth
> status in VariableParsing
>
> The file VariableParsing.c provides generic functionality related
> to parsing variable related structures and information. In order to
> calculate offsets for certain operations, the functions must know if
> authenticated variables are enabled as this increases the size of
> variable headers.
>
> This change removes linking against a global variable in an external file
> in favor of passing the authenticated variable status as a parameter to
> the variable parsing functions.
One general level comment:
In this patch some of the functions have introduced a local variable 'AuthFormat'
to reduce the repetitive occurrence of:
mVariableModuleGlobal->VariableGlobal.AuthFormat
I would suggest to adopt this approach for all the functions that have 3 or more
of such repetitive occurrences.
Other than this, the patch looks good to me,
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Best Regards,
Hao Wu
>
> 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>
> ---
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h | 82
> +++++--
> MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c | 258
> ++++++++++++++------
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c | 15 +-
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c | 146
> +++++++----
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 5 +-
> 5 files changed, 339 insertions(+), 167 deletions(-)
>
> diff --git
> a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h
> b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h
> index 1777ce0e69..92a729d140 100644
> --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h
> +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h
> @@ -49,53 +49,65 @@ GetVariableStoreStatus (
> /**
> This code gets the size of variable header.
>
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
> +
> @return Size of variable header in bytes in type UINTN.
>
> **/
> UINTN
> GetVariableHeaderSize (
> - VOID
> + IN BOOLEAN AuthFormat
> );
>
> /**
>
> This code gets the size of name of variable.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the variable header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return UINTN Size of variable in bytes.
>
> **/
> UINTN
> NameSizeOfVariable (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> This code sets the size of name of variable.
>
> - @param[in] Variable Pointer to the Variable Header.
> - @param[in] NameSize Name size to set.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] NameSize Name size to set.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> **/
> VOID
> SetNameSizeOfVariable (
> IN VARIABLE_HEADER *Variable,
> - IN UINTN NameSize
> + IN UINTN NameSize,
> + IN BOOLEAN AuthFormat
> );
>
> /**
>
> This code gets the size of variable data.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Size of variable in bytes.
>
> **/
> UINTN
> DataSizeOfVariable (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> @@ -103,80 +115,98 @@ DataSizeOfVariable (
>
> @param[in] Variable Pointer to the Variable Header.
> @param[in] DataSize Data size to set.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> **/
> VOID
> SetDataSizeOfVariable (
> - IN VARIABLE_HEADER *Variable,
> - IN UINTN DataSize
> + IN VARIABLE_HEADER *Variable,
> + IN UINTN DataSize,
> + IN BOOLEAN AuthFormat
> );
>
> /**
>
> This code gets the pointer to the variable name.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Pointer to Variable Name which is Unicode encoding.
>
> **/
> CHAR16 *
> GetVariableNamePtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> This code gets the pointer to the variable guid.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return A EFI_GUID* pointer to Vendor Guid.
>
> **/
> EFI_GUID *
> GetVendorGuidPtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
>
> This code gets the pointer to the variable data.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Pointer to Variable Data.
>
> **/
> UINT8 *
> GetVariableDataPtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> This code gets the variable data offset related to variable header.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Variable Data offset.
>
> **/
> UINTN
> GetVariableDataOffset (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
>
> This code gets the pointer to the next variable header.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Pointer to next variable header.
>
> **/
> VARIABLE_HEADER *
> GetNextVariablePtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> @@ -235,6 +265,8 @@ VariableCompareTimeStampInternal (
> @param[in] IgnoreRtCheck Ignore EFI_VARIABLE_RUNTIME_ACCESS
> attribute
> check at runtime when searching variable.
> @param[in, out] PtrTrack Variable Track Pointer structure that
> contains Variable Information.
> + @param[in] AuthFormat TRUE indicates authenticated variables are
> used.
> + FALSE indicates authenticated variables are not used.
>
> @retval EFI_SUCCESS Variable found successfully
> @retval EFI_NOT_FOUND Variable not found
> @@ -244,7 +276,8 @@ FindVariableEx (
> IN CHAR16 *VariableName,
> IN EFI_GUID *VendorGuid,
> IN BOOLEAN IgnoreRtCheck,
> - IN OUT VARIABLE_POINTER_TRACK *PtrTrack
> + IN OUT VARIABLE_POINTER_TRACK *PtrTrack,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> @@ -258,10 +291,12 @@ FindVariableEx (
> @param[in] VariableStoreList A list of variable stores that should be used
> to get the next variable.
> The maximum number of entries is the max value of
> VARIABLE_STORE_TYPE.
> @param[out] VariablePtr Pointer to variable header address.
> + @param[in] AuthFormat TRUE indicates authenticated variables are
> used.
> + FALSE indicates authenticated variables are not used.
>
> @retval EFI_SUCCESS The function completed successfully.
> @retval EFI_NOT_FOUND The next variable was not found.
> - @retval EFI_INVALID_PARAMETER If VariableName is nt an empty string,
> while VendorGuid is NULL.
> + @retval EFI_INVALID_PARAMETER If VariableName is not an empty string,
> while VendorGuid is NULL.
> @retval EFI_INVALID_PARAMETER The input values of VariableName and
> VendorGuid are not a name and
> GUID of an existing variable.
>
> @@ -272,7 +307,8 @@ VariableServiceGetNextVariableInternal (
> IN CHAR16 *VariableName,
> IN EFI_GUID *VendorGuid,
> IN VARIABLE_STORE_HEADER **VariableStoreList,
> - OUT VARIABLE_HEADER **VariablePtr
> + OUT VARIABLE_HEADER **VariablePtr,
> + IN BOOLEAN AuthFormat
> );
>
> /**
> diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
> b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
> index 5cc12c2ae0..2e32905dfe 100644
> --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
> +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
> @@ -311,7 +311,7 @@ RecordVarErrorFlag (
> FALSE
> );
> if (!EFI_ERROR (Status)) {
> - VarErrFlag = (VAR_ERROR_FLAG *) GetVariableDataPtr (Variable.CurrPtr);
> + VarErrFlag = (VAR_ERROR_FLAG *) GetVariableDataPtr (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> TempFlag = *VarErrFlag;
> TempFlag &= Flag;
> if (TempFlag == *VarErrFlag) {
> @@ -369,7 +369,7 @@ InitializeVarErrorFlag (
> FALSE
> );
> if (!EFI_ERROR (Status)) {
> - VarErrFlag = *((VAR_ERROR_FLAG *) GetVariableDataPtr
> (Variable.CurrPtr));
> + VarErrFlag = *((VAR_ERROR_FLAG *) GetVariableDataPtr
> (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat));
> if (VarErrFlag == Flag) {
> return;
> }
> @@ -410,7 +410,11 @@ IsUserVariable (
> // then no need to check if the variable is user variable or not specially.
> //
> if (mEndOfDxe && (mVariableModuleGlobal-
> >CommonMaxUserVariableSpace != mVariableModuleGlobal-
> >CommonVariableSpace)) {
> - if (VarCheckLibVariablePropertyGet (GetVariableNamePtr (Variable),
> GetVendorGuidPtr (Variable), &Property) == EFI_NOT_FOUND) {
> + if (VarCheckLibVariablePropertyGet (
> + GetVariableNamePtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> + GetVendorGuidPtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> + &Property
> + ) == EFI_NOT_FOUND) {
> return TRUE;
> }
> }
> @@ -439,10 +443,14 @@ CalculateCommonUserVariableTotalSize (
> if (mEndOfDxe && (mVariableModuleGlobal-
> >CommonMaxUserVariableSpace != mVariableModuleGlobal-
> >CommonVariableSpace)) {
> Variable = GetStartPointer (mNvVariableCache);
> while (IsValidVariableHeader (Variable, GetEndPointer
> (mNvVariableCache))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> VariableSize = (UINTN) NextVariable - (UINTN) Variable;
> if ((Variable->Attributes &
> EFI_VARIABLE_HARDWARE_ERROR_RECORD) !=
> EFI_VARIABLE_HARDWARE_ERROR_RECORD) {
> - if (VarCheckLibVariablePropertyGet (GetVariableNamePtr (Variable),
> GetVendorGuidPtr (Variable), &Property) == EFI_NOT_FOUND) {
> + if (VarCheckLibVariablePropertyGet (
> + GetVariableNamePtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> + GetVendorGuidPtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> + &Property
> + ) == EFI_NOT_FOUND) {
> //
> // No property, it is user variable.
> //
> @@ -518,7 +526,9 @@ Reclaim (
> UINTN HwErrVariableTotalSize;
> VARIABLE_HEADER *UpdatingVariable;
> VARIABLE_HEADER *UpdatingInDeletedTransition;
> + BOOLEAN AuthFormat;
>
> + AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;
> UpdatingVariable = NULL;
> UpdatingInDeletedTransition = NULL;
> if (UpdatingPtrTrack != NULL) {
> @@ -540,7 +550,7 @@ Reclaim (
> MaximumBufferSize = sizeof (VARIABLE_STORE_HEADER);
>
> while (IsValidVariableHeader (Variable, GetEndPointer
> (VariableStoreHeader))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, AuthFormat);
> if ((Variable->State == VAR_ADDED || Variable->State ==
> (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) &&
> Variable != UpdatingVariable &&
> Variable != UpdatingInDeletedTransition
> @@ -590,7 +600,7 @@ Reclaim (
> //
> Variable = GetStartPointer (VariableStoreHeader);
> while (IsValidVariableHeader (Variable, GetEndPointer
> (VariableStoreHeader))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, AuthFormat);
> if (Variable != UpdatingVariable && Variable->State == VAR_ADDED) {
> VariableSize = (UINTN) NextVariable - (UINTN) Variable;
> CopyMem (CurrPtr, (UINT8 *) Variable, VariableSize);
> @@ -612,7 +622,7 @@ Reclaim (
> //
> Variable = GetStartPointer (VariableStoreHeader);
> while (IsValidVariableHeader (Variable, GetEndPointer
> (VariableStoreHeader))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, AuthFormat);
> if (Variable != UpdatingVariable && Variable !=
> UpdatingInDeletedTransition && Variable->State ==
> (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) {
>
> //
> @@ -624,13 +634,14 @@ Reclaim (
> FoundAdded = FALSE;
> AddedVariable = GetStartPointer ((VARIABLE_STORE_HEADER *)
> ValidBuffer);
> while (IsValidVariableHeader (AddedVariable, GetEndPointer
> ((VARIABLE_STORE_HEADER *) ValidBuffer))) {
> - NextAddedVariable = GetNextVariablePtr (AddedVariable);
> - NameSize = NameSizeOfVariable (AddedVariable);
> - if (CompareGuid (GetVendorGuidPtr (AddedVariable),
> GetVendorGuidPtr (Variable)) &&
> - NameSize == NameSizeOfVariable (Variable)
> - ) {
> - Point0 = (VOID *) GetVariableNamePtr (AddedVariable);
> - Point1 = (VOID *) GetVariableNamePtr (Variable);
> + NextAddedVariable = GetNextVariablePtr (AddedVariable,
> AuthFormat);
> + NameSize = NameSizeOfVariable (AddedVariable, AuthFormat);
> + if (CompareGuid (
> + GetVendorGuidPtr (AddedVariable, AuthFormat),
> + GetVendorGuidPtr (Variable, AuthFormat)
> + ) && NameSize == NameSizeOfVariable (Variable, AuthFormat)) {
> + Point0 = (VOID *) GetVariableNamePtr (AddedVariable, AuthFormat);
> + Point1 = (VOID *) GetVariableNamePtr (Variable, AuthFormat);
> if (CompareMem (Point0, Point1, NameSize) == 0) {
> FoundAdded = TRUE;
> break;
> @@ -735,7 +746,7 @@ Reclaim (
> mVariableModuleGlobal->CommonUserVariableTotalSize = 0;
> Variable = GetStartPointer ((VARIABLE_STORE_HEADER
> *)(UINTN)VariableBase);
> while (IsValidVariableHeader (Variable, GetEndPointer
> ((VARIABLE_STORE_HEADER *)(UINTN)VariableBase))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, AuthFormat);
> VariableSize = (UINTN) NextVariable - (UINTN) Variable;
> if ((Variable->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD)
> == EFI_VARIABLE_HARDWARE_ERROR_RECORD) {
> mVariableModuleGlobal->HwErrVariableTotalSize += VariableSize;
> @@ -829,7 +840,13 @@ FindVariable (
> PtrTrack->EndPtr = GetEndPointer (VariableStoreHeader[Type]);
> PtrTrack->Volatile = (BOOLEAN) (Type == VariableStoreTypeVolatile);
>
> - Status = FindVariableEx (VariableName, VendorGuid, IgnoreRtCheck,
> PtrTrack);
> + Status = FindVariableEx (
> + VariableName,
> + VendorGuid,
> + IgnoreRtCheck,
> + PtrTrack,
> + mVariableModuleGlobal->VariableGlobal.AuthFormat
> + );
> if (!EFI_ERROR (Status)) {
> return Status;
> }
> @@ -1199,7 +1216,11 @@ CheckRemainingSpaceForConsistencyInternal (
> VarNameSize += GET_PAD_SIZE (VarNameSize);
> VarDataSize = VariableEntry->VariableSize;
> VarDataSize += GET_PAD_SIZE (VarDataSize);
> - VariableEntry->VariableSize = HEADER_ALIGN (GetVariableHeaderSize () +
> VarNameSize + VarDataSize);
> + VariableEntry->VariableSize = HEADER_ALIGN (
> + GetVariableHeaderSize (
> + mVariableModuleGlobal->VariableGlobal.AuthFormat
> + ) + VarNameSize + VarDataSize
> + );
>
> TotalNeededSize += VariableEntry->VariableSize;
> VariableEntry = VA_ARG (Args, VARIABLE_ENTRY_CONSISTENCY *);
> @@ -1232,13 +1253,14 @@ CheckRemainingSpaceForConsistencyInternal (
> VariableEntry->Name,
> VariableEntry->Guid,
> FALSE,
> - &VariablePtrTrack
> + &VariablePtrTrack,
> + mVariableModuleGlobal->VariableGlobal.AuthFormat
> );
> if (!EFI_ERROR (Status)) {
> //
> // Get size of Variable[Index].
> //
> - NextVariable = GetNextVariablePtr (VariablePtrTrack.CurrPtr);
> + NextVariable = GetNextVariablePtr (VariablePtrTrack.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> OriginalVarSize = (UINTN) NextVariable - (UINTN)
> VariablePtrTrack.CurrPtr;
> //
> // Add the original size of Variable[Index] to remaining variable storage
> size.
> @@ -1410,8 +1432,8 @@ AutoUpdateLangVariable (
> // Update Lang
> //
> VariableName = EFI_PLATFORM_LANG_VARIABLE_NAME;
> - Data = GetVariableDataPtr (Variable.CurrPtr);
> - DataSize = DataSizeOfVariable (Variable.CurrPtr);
> + Data = GetVariableDataPtr (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> + DataSize = DataSizeOfVariable (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> } else {
> Status = FindVariable (EFI_LANG_VARIABLE_NAME,
> &gEfiGlobalVariableGuid, &Variable, &mVariableModuleGlobal-
> >VariableGlobal, FALSE);
> if (!EFI_ERROR (Status)) {
> @@ -1419,8 +1441,8 @@ AutoUpdateLangVariable (
> // Update PlatformLang
> //
> VariableName = EFI_LANG_VARIABLE_NAME;
> - Data = GetVariableDataPtr (Variable.CurrPtr);
> - DataSize = DataSizeOfVariable (Variable.CurrPtr);
> + Data = GetVariableDataPtr (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> + DataSize = DataSizeOfVariable (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> } else {
> //
> // Neither PlatformLang nor Lang is set, directly return
> @@ -1598,6 +1620,7 @@ UpdateVariable (
> BOOLEAN IsCommonVariable;
> BOOLEAN IsCommonUserVariable;
> AUTHENTICATED_VARIABLE_HEADER *AuthVariable;
> + BOOLEAN AuthFormat;
>
> if (mVariableModuleGlobal->FvbInstance == NULL
> && !mVariableModuleGlobal->VariableGlobal.EmuNvMode) {
> //
> @@ -1619,6 +1642,8 @@ UpdateVariable (
> }
> }
>
> + AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;
> +
> //
> // Check if CacheVariable points to the variable in variable HOB.
> // If yes, let CacheVariable points to the variable in NV variable cache.
> @@ -1630,7 +1655,7 @@ UpdateVariable (
> CacheVariable->StartPtr = GetStartPointer (mNvVariableCache);
> CacheVariable->EndPtr = GetEndPointer (mNvVariableCache);
> CacheVariable->Volatile = FALSE;
> - Status = FindVariableEx (VariableName, VendorGuid, FALSE,
> CacheVariable);
> + Status = FindVariableEx (VariableName, VendorGuid, FALSE,
> CacheVariable, AuthFormat);
> if (CacheVariable->CurrPtr == NULL || EFI_ERROR (Status)) {
> //
> // There is no matched variable in NV variable cache.
> @@ -1770,8 +1795,8 @@ UpdateVariable (
> // If the variable is marked valid, and the same data has been passed in,
> // then return to the caller immediately.
> //
> - if (DataSizeOfVariable (CacheVariable->CurrPtr) == DataSize &&
> - (CompareMem (Data, GetVariableDataPtr (CacheVariable->CurrPtr),
> DataSize) == 0) &&
> + if (DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat) == DataSize
> &&
> + (CompareMem (Data, GetVariableDataPtr (CacheVariable->CurrPtr,
> AuthFormat), DataSize) == 0) &&
> ((Attributes & EFI_VARIABLE_APPEND_WRITE) == 0) &&
> (TimeStamp == NULL)) {
> //
> @@ -1791,9 +1816,13 @@ UpdateVariable (
> // NOTE: From 0 to DataOffset of NextVariable is reserved for Variable
> Header and Name.
> // From DataOffset of NextVariable is to save the existing variable data.
> //
> - DataOffset = GetVariableDataOffset (CacheVariable->CurrPtr);
> + DataOffset = GetVariableDataOffset (CacheVariable->CurrPtr,
> AuthFormat);
> BufferForMerge = (UINT8 *) ((UINTN) NextVariable + DataOffset);
> - CopyMem (BufferForMerge, (UINT8 *) ((UINTN) CacheVariable-
> >CurrPtr + DataOffset), DataSizeOfVariable (CacheVariable->CurrPtr));
> + CopyMem (
> + BufferForMerge,
> + (UINT8 *) ((UINTN) CacheVariable->CurrPtr + DataOffset),
> + DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat)
> + );
>
> //
> // Set Max Auth/Non-Volatile/Volatile Variable Data Size as default
> MaxDataSize.
> @@ -1814,15 +1843,22 @@ UpdateVariable (
> MaxDataSize = PcdGet32 (PcdMaxHardwareErrorVariableSize) -
> DataOffset;
> }
>
> - if (DataSizeOfVariable (CacheVariable->CurrPtr) + DataSize >
> MaxDataSize) {
> + if (DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat) +
> DataSize > MaxDataSize) {
> //
> // Existing data size + new data size exceed maximum variable size
> limitation.
> //
> Status = EFI_INVALID_PARAMETER;
> goto Done;
> }
> - CopyMem ((UINT8*) ((UINTN) BufferForMerge + DataSizeOfVariable
> (CacheVariable->CurrPtr)), Data, DataSize);
> - MergedBufSize = DataSizeOfVariable (CacheVariable->CurrPtr) +
> DataSize;
> + CopyMem (
> + (UINT8*) (
> + (UINTN) BufferForMerge + DataSizeOfVariable (CacheVariable-
> >CurrPtr, AuthFormat)
> + ),
> + Data,
> + DataSize
> + );
> + MergedBufSize = DataSizeOfVariable (CacheVariable->CurrPtr,
> AuthFormat) +
> + DataSize;
>
> //
> // BufferForMerge(from DataOffset of NextVariable) has included the
> merged existing and new data.
> @@ -1925,7 +1961,7 @@ UpdateVariable (
> //
> NextVariable->Attributes = Attributes & (~EFI_VARIABLE_APPEND_WRITE);
>
> - VarNameOffset = GetVariableHeaderSize ();
> + VarNameOffset = GetVariableHeaderSize (AuthFormat);
> VarNameSize = StrSize (VariableName);
> CopyMem (
> (UINT8 *) ((UINTN) NextVariable + VarNameOffset),
> @@ -1946,14 +1982,18 @@ UpdateVariable (
> );
> }
>
> - CopyMem (GetVendorGuidPtr (NextVariable), VendorGuid, sizeof
> (EFI_GUID));
> + CopyMem (
> + GetVendorGuidPtr (NextVariable, AuthFormat),
> + VendorGuid,
> + sizeof (EFI_GUID)
> + );
> //
> // There will be pad bytes after Data, the NextVariable->NameSize and
> // NextVariable->DataSize should not include pad size so that variable
> // service can get actual size in GetVariable.
> //
> - SetNameSizeOfVariable (NextVariable, VarNameSize);
> - SetDataSizeOfVariable (NextVariable, DataSize);
> + SetNameSizeOfVariable (NextVariable, VarNameSize, AuthFormat);
> + SetDataSizeOfVariable (NextVariable, DataSize, AuthFormat);
>
> //
> // The actual size of the variable that stores in storage should
> @@ -2036,7 +2076,7 @@ UpdateVariable (
> TRUE,
> Fvb,
> mVariableModuleGlobal->NonVolatileLastVariableOffset,
> - (UINT32) GetVariableHeaderSize (),
> + (UINT32) GetVariableHeaderSize (AuthFormat),
> (UINT8 *) NextVariable
> );
>
> @@ -2069,9 +2109,9 @@ UpdateVariable (
> FALSE,
> TRUE,
> Fvb,
> - mVariableModuleGlobal->NonVolatileLastVariableOffset +
> GetVariableHeaderSize (),
> - (UINT32) (VarSize - GetVariableHeaderSize ()),
> - (UINT8 *) NextVariable + GetVariableHeaderSize ()
> + mVariableModuleGlobal->NonVolatileLastVariableOffset +
> GetVariableHeaderSize (AuthFormat),
> + (UINT32) (VarSize - GetVariableHeaderSize (AuthFormat)),
> + (UINT8 *) NextVariable + GetVariableHeaderSize (AuthFormat)
> );
>
> if (EFI_ERROR (Status)) {
> @@ -2291,7 +2331,7 @@ VariableServiceGetVariable (
> //
> // Get data size
> //
> - VarDataSize = DataSizeOfVariable (Variable.CurrPtr);
> + VarDataSize = DataSizeOfVariable (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> ASSERT (VarDataSize != 0);
>
> if (*DataSize >= VarDataSize) {
> @@ -2300,7 +2340,7 @@ VariableServiceGetVariable (
> goto Done;
> }
>
> - CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr), VarDataSize);
> + CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat), VarDataSize);
> if (Attributes != NULL) {
> *Attributes = Variable.CurrPtr->Attributes;
> }
> @@ -2357,6 +2397,7 @@ VariableServiceGetNextVariableName (
> EFI_STATUS Status;
> UINTN MaxLen;
> UINTN VarNameSize;
> + BOOLEAN AuthFormat;
> VARIABLE_HEADER *VariablePtr;
> VARIABLE_STORE_HEADER *VariableStoreHeader[VariableStoreTypeMax];
>
> @@ -2364,6 +2405,8 @@ VariableServiceGetNextVariableName (
> return EFI_INVALID_PARAMETER;
> }
>
> + AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;
> +
> //
> // Calculate the possible maximum length of name string, including the Null
> terminator.
> //
> @@ -2387,13 +2430,27 @@ VariableServiceGetNextVariableName (
> VariableStoreHeader[VariableStoreTypeHob] =
> (VARIABLE_STORE_HEADER *) (UINTN) mVariableModuleGlobal-
> >VariableGlobal.HobVariableBase;
> VariableStoreHeader[VariableStoreTypeNv] = mNvVariableCache;
>
> - Status = VariableServiceGetNextVariableInternal (VariableName,
> VendorGuid, VariableStoreHeader, &VariablePtr);
> + Status = VariableServiceGetNextVariableInternal (
> + VariableName,
> + VendorGuid,
> + VariableStoreHeader,
> + &VariablePtr,
> + AuthFormat
> + );
> if (!EFI_ERROR (Status)) {
> - VarNameSize = NameSizeOfVariable (VariablePtr);
> + VarNameSize = NameSizeOfVariable (VariablePtr, AuthFormat);
> ASSERT (VarNameSize != 0);
> if (VarNameSize <= *VariableNameSize) {
> - CopyMem (VariableName, GetVariableNamePtr (VariablePtr),
> VarNameSize);
> - CopyMem (VendorGuid, GetVendorGuidPtr (VariablePtr), sizeof
> (EFI_GUID));
> + CopyMem (
> + VariableName,
> + GetVariableNamePtr (VariablePtr, AuthFormat),
> + VarNameSize
> + );
> + CopyMem (
> + VendorGuid,
> + GetVendorGuidPtr (VariablePtr, AuthFormat),
> + sizeof (EFI_GUID)
> + );
> Status = EFI_SUCCESS;
> } else {
> Status = EFI_BUFFER_TOO_SMALL;
> @@ -2446,6 +2503,9 @@ VariableServiceSetVariable (
> VARIABLE_HEADER *NextVariable;
> EFI_PHYSICAL_ADDRESS Point;
> UINTN PayloadSize;
> + BOOLEAN AuthFormat;
> +
> + AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;
>
> //
> // Check input parameters.
> @@ -2544,7 +2604,8 @@ VariableServiceSetVariable (
> // bytes for HwErrRec#### variable.
> //
> if ((Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) ==
> EFI_VARIABLE_HARDWARE_ERROR_RECORD) {
> - if (StrSize (VariableName) + PayloadSize > PcdGet32
> (PcdMaxHardwareErrorVariableSize) - GetVariableHeaderSize ()) {
> + if (StrSize (VariableName) + PayloadSize >
> + PcdGet32 (PcdMaxHardwareErrorVariableSize) - GetVariableHeaderSize
> (AuthFormat)) {
> return EFI_INVALID_PARAMETER;
> }
> } else {
> @@ -2553,7 +2614,9 @@ VariableServiceSetVariable (
> // the DataSize is limited to maximum size of
> Max(Auth|Volatile)VariableSize bytes.
> //
> if ((Attributes & VARIABLE_ATTRIBUTE_AT_AW) != 0) {
> - if (StrSize (VariableName) + PayloadSize > mVariableModuleGlobal-
> >MaxAuthVariableSize - GetVariableHeaderSize ()) {
> + if (StrSize (VariableName) + PayloadSize >
> + mVariableModuleGlobal->MaxAuthVariableSize -
> + GetVariableHeaderSize (AuthFormat)) {
> DEBUG ((DEBUG_ERROR,
> "%a: Failed to set variable '%s' with Guid %g\n",
> __FUNCTION__, VariableName, VendorGuid));
> @@ -2562,12 +2625,13 @@ VariableServiceSetVariable (
> "MaxAuthVariableSize(0x%x) - HeaderSize(0x%x)\n",
> StrSize (VariableName), PayloadSize,
> mVariableModuleGlobal->MaxAuthVariableSize,
> - GetVariableHeaderSize ()
> + GetVariableHeaderSize (AuthFormat)
> ));
> return EFI_INVALID_PARAMETER;
> }
> } else if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {
> - if (StrSize (VariableName) + PayloadSize > mVariableModuleGlobal-
> >MaxVariableSize - GetVariableHeaderSize ()) {
> + if (StrSize (VariableName) + PayloadSize >
> + mVariableModuleGlobal->MaxVariableSize - GetVariableHeaderSize
> (AuthFormat)) {
> DEBUG ((DEBUG_ERROR,
> "%a: Failed to set variable '%s' with Guid %g\n",
> __FUNCTION__, VariableName, VendorGuid));
> @@ -2576,12 +2640,13 @@ VariableServiceSetVariable (
> "MaxVariableSize(0x%x) - HeaderSize(0x%x)\n",
> StrSize (VariableName), PayloadSize,
> mVariableModuleGlobal->MaxVariableSize,
> - GetVariableHeaderSize ()
> + GetVariableHeaderSize (AuthFormat)
> ));
> return EFI_INVALID_PARAMETER;
> }
> } else {
> - if (StrSize (VariableName) + PayloadSize > mVariableModuleGlobal-
> >MaxVolatileVariableSize - GetVariableHeaderSize ()) {
> + if (StrSize (VariableName) + PayloadSize >
> + mVariableModuleGlobal->MaxVolatileVariableSize -
> GetVariableHeaderSize (AuthFormat)) {
> DEBUG ((DEBUG_ERROR,
> "%a: Failed to set variable '%s' with Guid %g\n",
> __FUNCTION__, VariableName, VendorGuid));
> @@ -2590,7 +2655,7 @@ VariableServiceSetVariable (
> "MaxVolatileVariableSize(0x%x) - HeaderSize(0x%x)\n",
> StrSize (VariableName), PayloadSize,
> mVariableModuleGlobal->MaxVolatileVariableSize,
> - GetVariableHeaderSize ()
> + GetVariableHeaderSize (AuthFormat)
> ));
> return EFI_INVALID_PARAMETER;
> }
> @@ -2629,7 +2694,7 @@ VariableServiceSetVariable (
> //
> NextVariable = GetStartPointer ((VARIABLE_STORE_HEADER *) (UINTN)
> Point);
> while (IsValidVariableHeader (NextVariable, GetEndPointer
> ((VARIABLE_STORE_HEADER *) (UINTN) Point))) {
> - NextVariable = GetNextVariablePtr (NextVariable);
> + NextVariable = GetNextVariablePtr (NextVariable, AuthFormat);
> }
> mVariableModuleGlobal->NonVolatileLastVariableOffset = (UINTN)
> NextVariable - (UINTN) Point;
> }
> @@ -2754,7 +2819,8 @@ VariableServiceQueryVariableInfoInternal (
> //
> if ((Attributes & (EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_HARDWARE_ERROR_RECORD)) ==
> (EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_HARDWARE_ERROR_RECORD)) {
> *MaximumVariableStorageSize = PcdGet32 (PcdHwErrStorageSize);
> - *MaximumVariableSize = PcdGet32 (PcdMaxHardwareErrorVariableSize) -
> GetVariableHeaderSize ();
> + *MaximumVariableSize = PcdGet32 (PcdMaxHardwareErrorVariableSize)
> -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> } else {
> if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {
> if (AtRuntime ()) {
> @@ -2768,11 +2834,14 @@ VariableServiceQueryVariableInfoInternal (
> // Let *MaximumVariableSize be Max(Auth|Volatile)VariableSize with the
> exception of the variable header size.
> //
> if ((Attributes & VARIABLE_ATTRIBUTE_AT_AW) != 0) {
> - *MaximumVariableSize = mVariableModuleGlobal-
> >MaxAuthVariableSize - GetVariableHeaderSize ();
> + *MaximumVariableSize = mVariableModuleGlobal-
> >MaxAuthVariableSize -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> } else if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {
> - *MaximumVariableSize = mVariableModuleGlobal->MaxVariableSize -
> GetVariableHeaderSize ();
> + *MaximumVariableSize = mVariableModuleGlobal->MaxVariableSize -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> } else {
> - *MaximumVariableSize = mVariableModuleGlobal-
> >MaxVolatileVariableSize - GetVariableHeaderSize ();
> + *MaximumVariableSize = mVariableModuleGlobal-
> >MaxVolatileVariableSize -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> }
> }
>
> @@ -2785,7 +2854,7 @@ VariableServiceQueryVariableInfoInternal (
> // Now walk through the related variable store.
> //
> while (IsValidVariableHeader (Variable, GetEndPointer
> (VariableStoreHeader))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> VariableSize = (UINT64) (UINTN) NextVariable - (UINT64) (UINTN) Variable;
>
> if (AtRuntime ()) {
> @@ -2820,10 +2889,11 @@ VariableServiceQueryVariableInfoInternal (
> VariablePtrTrack.StartPtr = GetStartPointer (VariableStoreHeader);
> VariablePtrTrack.EndPtr = GetEndPointer (VariableStoreHeader);
> Status = FindVariableEx (
> - GetVariableNamePtr (Variable),
> - GetVendorGuidPtr (Variable),
> + GetVariableNamePtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> + GetVendorGuidPtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> FALSE,
> - &VariablePtrTrack
> + &VariablePtrTrack,
> + mVariableModuleGlobal->VariableGlobal.AuthFormat
> );
> if (!EFI_ERROR (Status) && VariablePtrTrack.CurrPtr->State !=
> VAR_ADDED) {
> if ((Variable->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD)
> == EFI_VARIABLE_HARDWARE_ERROR_RECORD) {
> @@ -2851,10 +2921,13 @@ VariableServiceQueryVariableInfoInternal (
> }
> }
>
> - if (*RemainingVariableStorageSize < GetVariableHeaderSize ()) {
> + if (*RemainingVariableStorageSize < GetVariableHeaderSize
> (mVariableModuleGlobal->VariableGlobal.AuthFormat)) {
> *MaximumVariableSize = 0;
> - } else if ((*RemainingVariableStorageSize - GetVariableHeaderSize ()) <
> *MaximumVariableSize) {
> - *MaximumVariableSize = *RemainingVariableStorageSize -
> GetVariableHeaderSize ();
> + } else if ((*RemainingVariableStorageSize - GetVariableHeaderSize
> (mVariableModuleGlobal->VariableGlobal.AuthFormat)) <
> + *MaximumVariableSize
> + ) {
> + *MaximumVariableSize = *RemainingVariableStorageSize -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> }
>
> return EFI_SUCCESS;
> @@ -3331,7 +3404,7 @@ InitNonVolatileVariableStore (
> //
> Variable = GetStartPointer (mNvVariableCache);
> while (IsValidVariableHeader (Variable, GetEndPointer
> (mNvVariableCache))) {
> - NextVariable = GetNextVariablePtr (Variable);
> + NextVariable = GetNextVariablePtr (Variable, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> VariableSize = (UINTN) NextVariable - (UINTN) Variable;
> if ((Variable->Attributes & (EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_HARDWARE_ERROR_RECORD)) ==
> (EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_HARDWARE_ERROR_RECORD)) {
> mVariableModuleGlobal->HwErrVariableTotalSize += VariableSize;
> @@ -3365,8 +3438,10 @@ FlushHobVariableToFlash (
> VOID *VariableData;
> VARIABLE_POINTER_TRACK VariablePtrTrack;
> BOOLEAN ErrorFlag;
> + BOOLEAN AuthFormat;
>
> ErrorFlag = FALSE;
> + AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;
>
> //
> // Flush the HOB variable to flash.
> @@ -3379,7 +3454,7 @@ FlushHobVariableToFlash (
> mVariableModuleGlobal->VariableGlobal.HobVariableBase = 0;
> for ( Variable = GetStartPointer (VariableStoreHeader)
> ; IsValidVariableHeader (Variable, GetEndPointer (VariableStoreHeader))
> - ; Variable = GetNextVariablePtr (Variable)
> + ; Variable = GetNextVariablePtr (Variable, AuthFormat)
> ) {
> if (Variable->State != VAR_ADDED) {
> //
> @@ -3389,22 +3464,33 @@ FlushHobVariableToFlash (
> }
> ASSERT ((Variable->Attributes & EFI_VARIABLE_NON_VOLATILE) != 0);
> if (VendorGuid == NULL || VariableName == NULL ||
> - !CompareGuid (VendorGuid, GetVendorGuidPtr (Variable)) ||
> - StrCmp (VariableName, GetVariableNamePtr (Variable)) != 0) {
> - VariableData = GetVariableDataPtr (Variable);
> - FindVariable (GetVariableNamePtr (Variable), GetVendorGuidPtr
> (Variable), &VariablePtrTrack, &mVariableModuleGlobal->VariableGlobal,
> FALSE);
> + !CompareGuid (VendorGuid, GetVendorGuidPtr (Variable,
> AuthFormat)) ||
> + StrCmp (VariableName, GetVariableNamePtr (Variable,
> AuthFormat)) != 0) {
> + VariableData = GetVariableDataPtr (Variable, AuthFormat);
> + FindVariable (
> + GetVariableNamePtr (Variable, AuthFormat),
> + GetVendorGuidPtr (Variable, AuthFormat),
> + &VariablePtrTrack,
> + &mVariableModuleGlobal->VariableGlobal, FALSE
> + );
> Status = UpdateVariable (
> - GetVariableNamePtr (Variable),
> - GetVendorGuidPtr (Variable),
> + GetVariableNamePtr (Variable, AuthFormat),
> + GetVendorGuidPtr (Variable, AuthFormat),
> VariableData,
> - DataSizeOfVariable (Variable),
> + DataSizeOfVariable (Variable, AuthFormat),
> Variable->Attributes,
> 0,
> 0,
> &VariablePtrTrack,
> NULL
> );
> - DEBUG ((EFI_D_INFO, "Variable driver flush the HOB variable to
> flash: %g %s %r\n", GetVendorGuidPtr (Variable), GetVariableNamePtr
> (Variable), Status));
> + DEBUG ((
> + DEBUG_INFO,
> + "Variable driver flush the HOB variable to flash: %g %s %r\n",
> + GetVendorGuidPtr (Variable, AuthFormat),
> + GetVariableNamePtr (Variable, AuthFormat),
> + Status
> + ));
> } else {
> //
> // The updated or deleted variable is matched with this HOB variable.
> @@ -3418,7 +3504,12 @@ FlushHobVariableToFlash (
> // If set variable successful, or the updated or deleted variable is
> matched with the HOB variable,
> // set the HOB variable to DELETED state in local.
> //
> - DEBUG ((EFI_D_INFO, "Variable driver set the HOB variable to DELETED
> state in local: %g %s\n", GetVendorGuidPtr (Variable), GetVariableNamePtr
> (Variable)));
> + DEBUG ((
> + DEBUG_INFO,
> + "Variable driver set the HOB variable to DELETED state in
> local: %g %s\n",
> + GetVendorGuidPtr (Variable, AuthFormat),
> + GetVariableNamePtr (Variable, AuthFormat)
> + ));
> Variable->State &= VAR_DELETED;
> } else {
> ErrorFlag = TRUE;
> @@ -3495,7 +3586,8 @@ VariableWriteServiceInitialize (
> // Authenticated variable initialize.
> //
> mAuthContextIn.StructSize = sizeof (AUTH_VAR_LIB_CONTEXT_IN);
> - mAuthContextIn.MaxAuthVariableSize = mVariableModuleGlobal-
> >MaxAuthVariableSize - GetVariableHeaderSize ();
> + mAuthContextIn.MaxAuthVariableSize = mVariableModuleGlobal-
> >MaxAuthVariableSize -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> Status = AuthVariableLibInitialize (&mAuthContextIn,
> &mAuthContextOut);
> if (!EFI_ERROR (Status)) {
> DEBUG ((EFI_D_INFO, "Variable driver will work with auth variable
> support!\n"));
> @@ -3574,7 +3666,7 @@ ConvertNormalVarStorageToAuthVarStorage (
> AuthVarStroageSize += StartPtr->NameSize + GET_PAD_SIZE (StartPtr-
> >NameSize);
> AuthVarStroageSize += StartPtr->DataSize + GET_PAD_SIZE (StartPtr-
> >DataSize);
> }
> - StartPtr = GetNextVariablePtr (StartPtr);
> + StartPtr = GetNextVariablePtr (StartPtr, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> }
>
> //
> @@ -3608,18 +3700,22 @@ ConvertNormalVarStorageToAuthVarStorage (
> // Copy Variable Name
> //
> NextPtr = (UINT8 *) (AuthStartPtr + 1);
> - CopyMem (NextPtr, GetVariableNamePtr (StartPtr), AuthStartPtr-
> >NameSize);
> + CopyMem (
> + NextPtr,
> + GetVariableNamePtr (StartPtr, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat),
> + AuthStartPtr->NameSize
> + );
> //
> // Copy Variable Data
> //
> NextPtr = NextPtr + AuthStartPtr->NameSize + GET_PAD_SIZE
> (AuthStartPtr->NameSize);
> - CopyMem (NextPtr, GetVariableDataPtr (StartPtr), AuthStartPtr-
> >DataSize);
> + CopyMem (NextPtr, GetVariableDataPtr (StartPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat), AuthStartPtr-
> >DataSize);
> //
> // Go to next variable
> //
> AuthStartPtr = (AUTHENTICATED_VARIABLE_HEADER *) (NextPtr +
> AuthStartPtr->DataSize + GET_PAD_SIZE (AuthStartPtr->DataSize));
> }
> - StartPtr = GetNextVariablePtr (StartPtr);
> + StartPtr = GetNextVariablePtr (StartPtr, mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
> }
> //
> // Update Auth Storage Header
> diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c
> b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c
> index c787ddba5b..e865a089d1 100644
> --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c
> +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c
> @@ -56,8 +56,8 @@ VariableExLibFindVariable (
> return Status;
> }
>
> - AuthVariableInfo->DataSize = DataSizeOfVariable (Variable.CurrPtr);
> - AuthVariableInfo->Data = GetVariableDataPtr (Variable.CurrPtr);
> + AuthVariableInfo->DataSize = DataSizeOfVariable (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> + AuthVariableInfo->Data = GetVariableDataPtr (Variable.CurrPtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> AuthVariableInfo->Attributes = Variable.CurrPtr->Attributes;
> if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable.CurrPtr;
> @@ -108,7 +108,8 @@ VariableExLibFindNextVariable (
> VariableName,
> VendorGuid,
> VariableStoreHeader,
> - &VariablePtr
> + &VariablePtr,
> + mVariableModuleGlobal->VariableGlobal.AuthFormat
> );
> if (EFI_ERROR (Status)) {
> AuthVariableInfo->VariableName = NULL;
> @@ -122,10 +123,10 @@ VariableExLibFindNextVariable (
> return Status;
> }
>
> - AuthVariableInfo->VariableName = GetVariableNamePtr (VariablePtr);
> - AuthVariableInfo->VendorGuid = GetVendorGuidPtr (VariablePtr);
> - AuthVariableInfo->DataSize = DataSizeOfVariable (VariablePtr);
> - AuthVariableInfo->Data = GetVariableDataPtr (VariablePtr);
> + AuthVariableInfo->VariableName = GetVariableNamePtr (VariablePtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> + AuthVariableInfo->VendorGuid = GetVendorGuidPtr (VariablePtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> + AuthVariableInfo->DataSize = DataSizeOfVariable (VariablePtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> + AuthVariableInfo->Data = GetVariableDataPtr (VariablePtr,
> mVariableModuleGlobal->VariableGlobal.AuthFormat);
> AuthVariableInfo->Attributes = VariablePtr->Attributes;
> if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> AuthVariablePtr = (AUTHENTICATED_VARIABLE_HEADER *) VariablePtr;
> diff --git
> a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
> b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
> index 870c9e3742..d458f1c608 100644
> --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
> +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
> @@ -78,17 +78,20 @@ GetVariableStoreStatus (
> /**
> This code gets the size of variable header.
>
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
> +
> @return Size of variable header in bytes in type UINTN.
>
> **/
> UINTN
> GetVariableHeaderSize (
> - VOID
> + IN BOOLEAN AuthFormat
> )
> {
> UINTN Value;
>
> - if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> + if (AuthFormat) {
> Value = sizeof (AUTHENTICATED_VARIABLE_HEADER);
> } else {
> Value = sizeof (VARIABLE_HEADER);
> @@ -101,20 +104,23 @@ GetVariableHeaderSize (
>
> This code gets the size of name of variable.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the variable header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return UINTN Size of variable in bytes.
>
> **/
> UINTN
> NameSizeOfVariable (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> AUTHENTICATED_VARIABLE_HEADER *AuthVariable;
>
> AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;
> - if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> + if (AuthFormat) {
> if (AuthVariable->State == (UINT8) (-1) ||
> AuthVariable->DataSize == (UINT32) (-1) ||
> AuthVariable->NameSize == (UINT32) (-1) ||
> @@ -136,20 +142,23 @@ NameSizeOfVariable (
> /**
> This code sets the size of name of variable.
>
> - @param[in] Variable Pointer to the Variable Header.
> - @param[in] NameSize Name size to set.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] NameSize Name size to set.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> **/
> VOID
> SetNameSizeOfVariable (
> IN VARIABLE_HEADER *Variable,
> - IN UINTN NameSize
> + IN UINTN NameSize,
> + IN BOOLEAN AuthFormat
> )
> {
> AUTHENTICATED_VARIABLE_HEADER *AuthVariable;
>
> AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;
> - if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> + if (AuthFormat) {
> AuthVariable->NameSize = (UINT32) NameSize;
> } else {
> Variable->NameSize = (UINT32) NameSize;
> @@ -160,20 +169,23 @@ SetNameSizeOfVariable (
>
> This code gets the size of variable data.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Size of variable in bytes.
>
> **/
> UINTN
> DataSizeOfVariable (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> AUTHENTICATED_VARIABLE_HEADER *AuthVariable;
>
> AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;
> - if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> + if (AuthFormat) {
> if (AuthVariable->State == (UINT8) (-1) ||
> AuthVariable->DataSize == (UINT32) (-1) ||
> AuthVariable->NameSize == (UINT32) (-1) ||
> @@ -197,18 +209,21 @@ DataSizeOfVariable (
>
> @param[in] Variable Pointer to the Variable Header.
> @param[in] DataSize Data size to set.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> **/
> VOID
> SetDataSizeOfVariable (
> - IN VARIABLE_HEADER *Variable,
> - IN UINTN DataSize
> + IN VARIABLE_HEADER *Variable,
> + IN UINTN DataSize,
> + IN BOOLEAN AuthFormat
> )
> {
> AUTHENTICATED_VARIABLE_HEADER *AuthVariable;
>
> AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;
> - if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> + if (AuthFormat) {
> AuthVariable->DataSize = (UINT32) DataSize;
> } else {
> Variable->DataSize = (UINT32) DataSize;
> @@ -219,36 +234,42 @@ SetDataSizeOfVariable (
>
> This code gets the pointer to the variable name.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Pointer to Variable Name which is Unicode encoding.
>
> **/
> CHAR16 *
> GetVariableNamePtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> - return (CHAR16 *) ((UINTN) Variable + GetVariableHeaderSize ());
> + return (CHAR16 *) ((UINTN) Variable + GetVariableHeaderSize
> (AuthFormat));
> }
>
> /**
> This code gets the pointer to the variable guid.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return A EFI_GUID* pointer to Vendor Guid.
>
> **/
> EFI_GUID *
> GetVendorGuidPtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> AUTHENTICATED_VARIABLE_HEADER *AuthVariable;
>
> AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;
> - if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {
> + if (AuthFormat) {
> return &AuthVariable->VendorGuid;
> } else {
> return &Variable->VendorGuid;
> @@ -259,14 +280,17 @@ GetVendorGuidPtr (
>
> This code gets the pointer to the variable data.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Pointer to Variable Data.
>
> **/
> UINT8 *
> GetVariableDataPtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> UINTN Value;
> @@ -274,9 +298,9 @@ GetVariableDataPtr (
> //
> // Be careful about pad size for alignment.
> //
> - Value = (UINTN) GetVariableNamePtr (Variable);
> - Value += NameSizeOfVariable (Variable);
> - Value += GET_PAD_SIZE (NameSizeOfVariable (Variable));
> + Value = (UINTN) GetVariableNamePtr (Variable, AuthFormat);
> + Value += NameSizeOfVariable (Variable, AuthFormat);
> + Value += GET_PAD_SIZE (NameSizeOfVariable (Variable, AuthFormat));
>
> return (UINT8 *) Value;
> }
> @@ -284,14 +308,17 @@ GetVariableDataPtr (
> /**
> This code gets the variable data offset related to variable header.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Variable Data offset.
>
> **/
> UINTN
> GetVariableDataOffset (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> UINTN Value;
> @@ -299,9 +326,9 @@ GetVariableDataOffset (
> //
> // Be careful about pad size for alignment
> //
> - Value = GetVariableHeaderSize ();
> - Value += NameSizeOfVariable (Variable);
> - Value += GET_PAD_SIZE (NameSizeOfVariable (Variable));
> + Value = GetVariableHeaderSize (AuthFormat);
> + Value += NameSizeOfVariable (Variable, AuthFormat);
> + Value += GET_PAD_SIZE (NameSizeOfVariable (Variable, AuthFormat));
>
> return Value;
> }
> @@ -310,21 +337,24 @@ GetVariableDataOffset (
>
> This code gets the pointer to the next variable header.
>
> - @param Variable Pointer to the Variable Header.
> + @param[in] Variable Pointer to the Variable Header.
> + @param[in] AuthFormat TRUE indicates authenticated variables are used.
> + FALSE indicates authenticated variables are not used.
>
> @return Pointer to next variable header.
>
> **/
> VARIABLE_HEADER *
> GetNextVariablePtr (
> - IN VARIABLE_HEADER *Variable
> + IN VARIABLE_HEADER *Variable,
> + IN BOOLEAN AuthFormat
> )
> {
> UINTN Value;
>
> - Value = (UINTN) GetVariableDataPtr (Variable);
> - Value += DataSizeOfVariable (Variable);
> - Value += GET_PAD_SIZE (DataSizeOfVariable (Variable));
> + Value = (UINTN) GetVariableDataPtr (Variable, AuthFormat);
> + Value += DataSizeOfVariable (Variable, AuthFormat);
> + Value += GET_PAD_SIZE (DataSizeOfVariable (Variable, AuthFormat));
>
> //
> // Be careful about pad size for alignment.
> @@ -415,6 +445,8 @@ VariableCompareTimeStampInternal (
> @param[in] IgnoreRtCheck Ignore EFI_VARIABLE_RUNTIME_ACCESS
> attribute
> check at runtime when searching variable.
> @param[in, out] PtrTrack Variable Track Pointer structure that
> contains Variable Information.
> + @param[in] AuthFormat TRUE indicates authenticated variables are
> used.
> + FALSE indicates authenticated variables are not used.
>
> @retval EFI_SUCCESS Variable found successfully
> @retval EFI_NOT_FOUND Variable not found
> @@ -424,7 +456,8 @@ FindVariableEx (
> IN CHAR16 *VariableName,
> IN EFI_GUID *VendorGuid,
> IN BOOLEAN IgnoreRtCheck,
> - IN OUT VARIABLE_POINTER_TRACK *PtrTrack
> + IN OUT VARIABLE_POINTER_TRACK *PtrTrack,
> + IN BOOLEAN AuthFormat
> )
> {
> VARIABLE_HEADER *InDeletedVariable;
> @@ -439,7 +472,7 @@ FindVariableEx (
>
> for ( PtrTrack->CurrPtr = PtrTrack->StartPtr
> ; IsValidVariableHeader (PtrTrack->CurrPtr, PtrTrack->EndPtr)
> - ; PtrTrack->CurrPtr = GetNextVariablePtr (PtrTrack->CurrPtr)
> + ; PtrTrack->CurrPtr = GetNextVariablePtr (PtrTrack->CurrPtr,
> AuthFormat)
> ) {
> if (PtrTrack->CurrPtr->State == VAR_ADDED ||
> PtrTrack->CurrPtr->State == (VAR_IN_DELETED_TRANSITION &
> VAR_ADDED)
> @@ -453,11 +486,11 @@ FindVariableEx (
> return EFI_SUCCESS;
> }
> } else {
> - if (CompareGuid (VendorGuid, GetVendorGuidPtr (PtrTrack->CurrPtr)))
> {
> - Point = (VOID *) GetVariableNamePtr (PtrTrack->CurrPtr);
> + if (CompareGuid (VendorGuid, GetVendorGuidPtr (PtrTrack->CurrPtr,
> AuthFormat))) {
> + Point = (VOID *) GetVariableNamePtr (PtrTrack->CurrPtr,
> AuthFormat);
>
> - ASSERT (NameSizeOfVariable (PtrTrack->CurrPtr) != 0);
> - if (CompareMem (VariableName, Point, NameSizeOfVariable
> (PtrTrack->CurrPtr)) == 0) {
> + ASSERT (NameSizeOfVariable (PtrTrack->CurrPtr, AuthFormat) != 0);
> + if (CompareMem (VariableName, Point, NameSizeOfVariable
> (PtrTrack->CurrPtr, AuthFormat)) == 0) {
> if (PtrTrack->CurrPtr->State == (VAR_IN_DELETED_TRANSITION &
> VAR_ADDED)) {
> InDeletedVariable = PtrTrack->CurrPtr;
> } else {
> @@ -486,6 +519,8 @@ FindVariableEx (
> @param[in] VariableStoreList A list of variable stores that should be used
> to get the next variable.
> The maximum number of entries is the max value of
> VARIABLE_STORE_TYPE.
> @param[out] VariablePtr Pointer to variable header address.
> + @param[in] AuthFormat TRUE indicates authenticated variables are
> used.
> + FALSE indicates authenticated variables are not used.
>
> @retval EFI_SUCCESS The function completed successfully.
> @retval EFI_NOT_FOUND The next variable was not found.
> @@ -500,7 +535,8 @@ VariableServiceGetNextVariableInternal (
> IN CHAR16 *VariableName,
> IN EFI_GUID *VendorGuid,
> IN VARIABLE_STORE_HEADER **VariableStoreList,
> - OUT VARIABLE_HEADER **VariablePtr
> + OUT VARIABLE_HEADER **VariablePtr,
> + IN BOOLEAN AuthFormat
> )
> {
> EFI_STATUS Status;
> @@ -525,7 +561,7 @@ VariableServiceGetNextVariableInternal (
> Variable.EndPtr = GetEndPointer (VariableStoreList[StoreType]);
> Variable.Volatile = (BOOLEAN) (StoreType == VariableStoreTypeVolatile);
>
> - Status = FindVariableEx (VariableName, VendorGuid, FALSE, &Variable);
> + Status = FindVariableEx (VariableName, VendorGuid, FALSE, &Variable,
> AuthFormat);
> if (!EFI_ERROR (Status)) {
> break;
> }
> @@ -552,7 +588,7 @@ VariableServiceGetNextVariableInternal (
> //
> // If variable name is not empty, get next variable.
> //
> - Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);
> + Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);
> }
>
> while (TRUE) {
> @@ -605,13 +641,14 @@ VariableServiceGetNextVariableInternal (
> VariablePtrTrack.StartPtr = Variable.StartPtr;
> VariablePtrTrack.EndPtr = Variable.EndPtr;
> Status = FindVariableEx (
> - GetVariableNamePtr (Variable.CurrPtr),
> - GetVendorGuidPtr (Variable.CurrPtr),
> + GetVariableNamePtr (Variable.CurrPtr, AuthFormat),
> + GetVendorGuidPtr (Variable.CurrPtr, AuthFormat),
> FALSE,
> - &VariablePtrTrack
> + &VariablePtrTrack,
> + AuthFormat
> );
> if (!EFI_ERROR (Status) && VariablePtrTrack.CurrPtr->State ==
> VAR_ADDED) {
> - Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);
> + Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);
> continue;
> }
> }
> @@ -625,13 +662,14 @@ VariableServiceGetNextVariableInternal (
> VariableInHob.StartPtr = GetStartPointer
> (VariableStoreList[VariableStoreTypeHob]);
> VariableInHob.EndPtr = GetEndPointer
> (VariableStoreList[VariableStoreTypeHob]);
> Status = FindVariableEx (
> - GetVariableNamePtr (Variable.CurrPtr),
> - GetVendorGuidPtr (Variable.CurrPtr),
> + GetVariableNamePtr (Variable.CurrPtr, AuthFormat),
> + GetVendorGuidPtr (Variable.CurrPtr, AuthFormat),
> FALSE,
> - &VariableInHob
> + &VariableInHob,
> + AuthFormat
> );
> if (!EFI_ERROR (Status)) {
> - Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);
> + Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);
> continue;
> }
> }
> @@ -642,7 +680,7 @@ VariableServiceGetNextVariableInternal (
> }
> }
>
> - Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);
> + Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);
> }
>
> Done:
> diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
> b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
> index ce409f22a3..5e24bc4a62 100644
> --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
> +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
> @@ -975,8 +975,9 @@ MmVariableServiceInitialize (
> );
> ASSERT_EFI_ERROR (Status);
>
> - mVariableBufferPayloadSize = GetMaxVariableSize () +
> - OFFSET_OF
> (SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY,
> Name) - GetVariableHeaderSize ();
> + mVariableBufferPayloadSize = GetMaxVariableSize () +
> + OFFSET_OF
> (SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY,
> Name) -
> + GetVariableHeaderSize (mVariableModuleGlobal-
> >VariableGlobal.AuthFormat);
>
> Status = gMmst->MmAllocatePool (
> EfiRuntimeServicesData,
> --
> 2.16.2.windows.1
next prev parent reply other threads:[~2019-10-17 1:01 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-14 23:29 [PATCH V4 00/10] UEFI Variable SMI Reduction Kubacki, Michael A
2019-10-14 23:29 ` [PATCH V4 01/10] MdeModulePkg/Variable: Consolidate common parsing functions Kubacki, Michael A
2019-10-16 7:52 ` Wu, Hao A
2019-10-14 23:29 ` [PATCH V4 02/10] MdeModulePkg/Variable: Parameterize GetNextVariableInternal () stores Kubacki, Michael A
2019-10-16 7:53 ` Wu, Hao A
2019-10-14 23:29 ` [PATCH V4 03/10] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer Kubacki, Michael A
2019-10-16 7:54 ` Wu, Hao A
2019-10-14 23:29 ` [PATCH V4 04/10] MdeModulePkg/Variable: Parameterize auth status in VariableParsing Kubacki, Michael A
2019-10-17 1:01 ` Wu, Hao A [this message]
2019-10-17 1:41 ` Kubacki, Michael A
2019-10-17 1:49 ` Wu, Hao A
2019-10-14 23:29 ` [PATCH V4 05/10] MdeModulePkg/Variable: Add a file for NV variable functions Kubacki, Michael A
2019-10-16 7:55 ` Wu, Hao A
2019-10-14 23:29 ` [PATCH V4 06/10] MdeModulePkg VariableInfo: Always consider RT DXE and SMM stats Kubacki, Michael A
2019-10-16 7:56 ` Wu, Hao A
2019-10-14 23:29 ` [PATCH V4 07/10] MdeModulePkg/Variable: Add RT GetVariable() cache support Kubacki, Michael A
2019-10-16 6:46 ` Wang, Jian J
[not found] ` <15CE0DB2DE3EB613.1607@groups.io>
2019-10-16 6:54 ` [edk2-devel] " Wang, Jian J
2019-10-17 1:24 ` Kubacki, Michael A
2019-10-17 1:47 ` Wang, Jian J
2019-10-16 7:56 ` Wu, Hao A
2019-10-16 16:44 ` Kubacki, Michael A
2019-10-17 14:23 ` Wang, Jian J
2019-10-17 17:44 ` Kubacki, Michael A
2019-10-14 23:29 ` [PATCH V4 08/10] MdeModulePkg/Variable: Add RT GetNextVariableName() " Kubacki, Michael A
2019-10-16 7:56 ` Wu, Hao A
2019-10-14 23:30 ` [PATCH V4 09/10] OvmfPkg: Disable variable runtime cache Kubacki, Michael A
2019-10-15 7:32 ` Laszlo Ersek
2019-10-14 23:30 ` [PATCH V4 10/10] MdeModulePkg: Enable variable runtime cache by default Kubacki, Michael A
2019-10-15 7:33 ` Laszlo Ersek
2019-10-16 7:57 ` Wu, Hao A
2019-10-15 0:49 ` [PATCH V4 00/10] UEFI Variable SMI Reduction Liming Gao
2019-10-15 16:15 ` Kubacki, Michael 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=B80AF82E9BFB8E4FBD8C89DA810C6A093C948514@SHSMSX104.ccr.corp.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