I will clarify that aspect in the commit message. Thanks, Michael
> -----Original Message----- > From: Wu, Hao A <hao.a...@intel.com> > Sent: Monday, October 7, 2019 7:12 PM > To: devel@edk2.groups.io; Kubacki, Michael A <michael.a.kuba...@intel.com> > Cc: Bi, Dandan <dandan...@intel.com>; Ard Biesheuvel > <ard.biesheu...@linaro.org>; Dong, Eric <eric.d...@intel.com>; Laszlo Ersek > <ler...@redhat.com>; Gao, Liming <liming....@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com>; Wang, Jian J > <jian.j.w...@intel.com>; Yao, Jiewen <jiewen....@intel.com> > Subject: RE: [edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: > Parameterize VARIABLE_INFO_ENTRY buffer > > > -----Original Message----- > > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > > Kubacki, Michael A > > Sent: Friday, October 04, 2019 2:06 AM > > To: Wu, Hao A; devel@edk2.groups.io > > Cc: Bi, Dandan; Ard Biesheuvel; Dong, Eric; Laszlo Ersek; Gao, Liming; > > Kinney, Michael D; Ni, Ray; Wang, Jian J; Yao, Jiewen > > Subject: Re: [edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: > > Parameterize VARIABLE_INFO_ENTRY buffer > > > > Your understanding is correct. > > > Thanks for the confirmation. > Could you help to refine the commit message in the next series? Thanks. > > Best Regards, > Hao Wu > > > > > > Thanks, > > Michael > > > > > -----Original Message----- > > > From: Wu, Hao A <hao.a...@intel.com> > > > Sent: Thursday, October 3, 2019 1:04 AM > > > To: Kubacki, Michael A <michael.a.kuba...@intel.com>; > > > devel@edk2.groups.io > > > Cc: Bi, Dandan <dandan...@intel.com>; Ard Biesheuvel > > > <ard.biesheu...@linaro.org>; Dong, Eric <eric.d...@intel.com>; > > > Laszlo > > Ersek > > > <ler...@redhat.com>; Gao, Liming <liming....@intel.com>; Kinney, > > Michael > > > D <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com>; Wang, > > > Jian J <jian.j.w...@intel.com>; Yao, Jiewen <jiewen....@intel.com> > > > Subject: RE: [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize > > > VARIABLE_INFO_ENTRY buffer > > > > > > > -----Original Message----- > > > > From: Kubacki, Michael A > > > > Sent: Saturday, September 28, 2019 9:47 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 V2 3/9] MdeModulePkg/Variable: Parameterize > > > > VARIABLE_INFO_ENTRY buffer > > > > > > > > UpdateVariableInfo () currently accepts parameters regarding > > > > updates to be made to a global variable of type > > > > VARIABLE_INFO_ENTRY. This change passes the structure by pointer > > > > to UpdateVariableInfo () so structures can be updated outside the fixed > global variable. > > > > > > > > > For: > > > "... so structures can be updated outside the fixed global variable " > > > > > > Do you mean: > > > > > > VARIABLE_INFO_ENTRY structure pointers other than "&gVariableInfo" > > > can be passed to UpdateVariableInfo(). > > > > > > Is my understanding correct? If so, > > > Reviewed-by: Hao A Wu <hao.a...@intel.com> > > > > > > Best Regards, > > > Hao Wu > > > > > > > > > > > > > > Cc: Dandan Bi <dandan...@intel.com> > > > > Cc: Ard Biesheuvel <ard.biesheu...@linaro.org> > > > > Cc: Eric Dong <eric.d...@intel.com> > > > > Cc: Laszlo Ersek <ler...@redhat.com> > > > > Cc: Liming Gao <liming....@intel.com> > > > > Cc: Michael D Kinney <michael.d.kin...@intel.com> > > > > Cc: Ray Ni <ray...@intel.com> > > > > Cc: Jian J Wang <jian.j.w...@intel.com> > > > > Cc: Hao A Wu <hao.a...@intel.com> > > > > Cc: Jiewen Yao <jiewen....@intel.com> > > > > Signed-off-by: Michael Kubacki <michael.a.kuba...@intel.com> > > > > --- > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h | 18 > > > > +++++---- > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c | 14 > > +++--- > > > - > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c | 41 > > > > +++++++++++--------- > > > > 3 files changed, 39 insertions(+), 34 deletions(-) > > > > > > > > diff --git > > > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > > > index 0d231511ea..6f2000f3ee 100644 > > > > --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > > > +++ > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > > > @@ -286,13 +286,14 @@ GetNextVariableEx ( > > > > the transaction. Data is allocated by this routine, but never > > > > freed. > > > > > > > > - @param[in] VariableName Name of the Variable to track. > > > > - @param[in] VendorGuid Guid of the Variable to track. > > > > - @param[in] Volatile TRUE if volatile FALSE if non-volatile. > > > > - @param[in] Read TRUE if GetVariable() was called. > > > > - @param[in] Write TRUE if SetVariable() was called. > > > > - @param[in] Delete TRUE if deleted via SetVariable(). > > > > - @param[in] Cache TRUE for a cache hit. > > > > + @param[in] VariableName Name of the Variable to track. > > > > + @param[in] VendorGuid Guid of the Variable to track. > > > > + @param[in] Volatile TRUE if volatile FALSE if > > > > non-volatile. > > > > + @param[in] Read TRUE if GetVariable() was called. > > > > + @param[in] Write TRUE if SetVariable() was called. > > > > + @param[in] Delete TRUE if deleted via SetVariable(). > > > > + @param[in] Cache TRUE for a cache hit. > > > > + @param[in,out] VariableInfo Pointer to a pointer of > > > > VARIABLE_INFO_ENTRY structures. > > > > > > > > **/ > > > > VOID > > > > @@ -303,7 +304,8 @@ UpdateVariableInfo ( > > > > IN BOOLEAN Read, > > > > IN BOOLEAN Write, > > > > IN BOOLEAN Delete, > > > > - IN BOOLEAN Cache > > > > + IN BOOLEAN Cache, > > > > + IN OUT VARIABLE_INFO_ENTRY **VariableInfo > > > > ); > > > > > > > > #endif > > > > diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > > > index 816e8f7b8f..1a57d7e1ba 100644 > > > > --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > > > +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > > > @@ -1641,7 +1641,7 @@ UpdateVariable ( > > > > // go to delete this variable in variable HOB and > > > > // try to flush other variables from HOB to flash. > > > > // > > > > - UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, > > > FALSE, > > > > TRUE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, FALSE, > > > > + FALSE, FALSE, > > > > TRUE, FALSE, &gVariableInfo); > > > > FlushHobVariableToFlash (VariableName, VendorGuid); > > > > return EFI_SUCCESS; > > > > } > > > > @@ -1758,7 +1758,7 @@ UpdateVariable ( > > > > &State > > > > ); > > > > if (!EFI_ERROR (Status)) { > > > > - UpdateVariableInfo (VariableName, VendorGuid, > > > > Variable->Volatile, > > > > FALSE, FALSE, TRUE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, > > > > + Variable->Volatile, > > > > FALSE, FALSE, TRUE, FALSE, &gVariableInfo); > > > > if (!Variable->Volatile) { > > > > CacheVariable->CurrPtr->State = State; > > > > FlushHobVariableToFlash (VariableName, VendorGuid); @@ > > > > -1777,7 +1777,7 @@ UpdateVariable ( > > > > // > > > > // Variable content unchanged and no need to update > > > > timestamp, just return. > > > > // > > > > - UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile, > > > > FALSE, TRUE, FALSE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, > > > > + Variable->Volatile, > > > > FALSE, TRUE, FALSE, FALSE, &gVariableInfo); > > > > Status = EFI_SUCCESS; > > > > goto Done; > > > > } else if ((CacheVariable->CurrPtr->State == VAR_ADDED) || @@ > > > > -2006,7 +2006,7 @@ UpdateVariable ( > > > > CacheVariable->CurrPtr = (VARIABLE_HEADER *)((UINTN) > > > > CacheVariable->StartPtr + ((UINTN) Variable->CurrPtr - (UINTN) > > > > CacheVariable->Variable- > > > > >StartPtr)); > > > > CacheVariable->InDeletedTransitionPtr = NULL; > > > > } > > > > - UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, > > TRUE, > > > > FALSE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, FALSE, > > > > + FALSE, TRUE, > > > > FALSE, FALSE, &gVariableInfo); > > > > FlushHobVariableToFlash (VariableName, VendorGuid); > > > > } else { > > > > if (IsCommonUserVariable && ((VarSize + > > > > mVariableModuleGlobal- > > > > >CommonUserVariableTotalSize) > mVariableModuleGlobal- > > > > >CommonMaxUserVariableSpace)) { > > > > @@ -2156,7 +2156,7 @@ UpdateVariable ( > > > > CacheVariable->CurrPtr = (VARIABLE_HEADER *)((UINTN) > > > > CacheVariable->StartPtr + ((UINTN) Variable->CurrPtr - (UINTN) > > > > CacheVariable->Variable- > > > > >StartPtr)); > > > > CacheVariable->InDeletedTransitionPtr = NULL; > > > > } > > > > - UpdateVariableInfo (VariableName, VendorGuid, TRUE, FALSE, > > > > TRUE, > > > > FALSE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, TRUE, > > > > + FALSE, TRUE, > > > > FALSE, FALSE, &gVariableInfo); > > > > } > > > > goto Done; > > > > } > > > > @@ -2227,7 +2227,7 @@ UpdateVariable ( > > > > } > > > > > > > > if (!EFI_ERROR (Status)) { > > > > - UpdateVariableInfo (VariableName, VendorGuid, Volatile, FALSE, > > TRUE, > > > > FALSE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, Volatile, > > > > + FALSE, TRUE, > > > > FALSE, FALSE, &gVariableInfo); > > > > if (!Volatile) { > > > > FlushHobVariableToFlash (VariableName, VendorGuid); > > > > } > > > > @@ -2306,7 +2306,7 @@ VariableServiceGetVariable ( > > > > } > > > > > > > > *DataSize = VarDataSize; > > > > - UpdateVariableInfo (VariableName, VendorGuid, Variable.Volatile, > > > TRUE, > > > > FALSE, FALSE, FALSE); > > > > + UpdateVariableInfo (VariableName, VendorGuid, > > > > + Variable.Volatile, TRUE, > > > > FALSE, FALSE, FALSE, &gVariableInfo); > > > > > > > > Status = EFI_SUCCESS; > > > > goto Done; > > > > diff --git > > > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > > > index 9bc5369a90..394195342d 100644 > > > > --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > > > +++ > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > > > @@ -660,13 +660,14 @@ Done: > > > > the transaction. Data is allocated by this routine, but never > > > > freed. > > > > > > > > - @param[in] VariableName Name of the Variable to track. > > > > - @param[in] VendorGuid Guid of the Variable to track. > > > > - @param[in] Volatile TRUE if volatile FALSE if non-volatile. > > > > - @param[in] Read TRUE if GetVariable() was called. > > > > - @param[in] Write TRUE if SetVariable() was called. > > > > - @param[in] Delete TRUE if deleted via SetVariable(). > > > > - @param[in] Cache TRUE for a cache hit. > > > > + @param[in] VariableName Name of the Variable to track. > > > > + @param[in] VendorGuid Guid of the Variable to track. > > > > + @param[in] Volatile TRUE if volatile FALSE if > > > > non-volatile. > > > > + @param[in] Read TRUE if GetVariable() was called. > > > > + @param[in] Write TRUE if SetVariable() was called. > > > > + @param[in] Delete TRUE if deleted via SetVariable(). > > > > + @param[in] Cache TRUE for a cache hit. > > > > + @param[in,out] VariableInfo Pointer to a pointer of > > > > VARIABLE_INFO_ENTRY structures. > > > > > > > > **/ > > > > VOID > > > > @@ -677,35 +678,38 @@ UpdateVariableInfo ( > > > > IN BOOLEAN Read, > > > > IN BOOLEAN Write, > > > > IN BOOLEAN Delete, > > > > - IN BOOLEAN Cache > > > > + IN BOOLEAN Cache, > > > > + IN OUT VARIABLE_INFO_ENTRY **VariableInfo > > > > ) > > > > { > > > > VARIABLE_INFO_ENTRY *Entry; > > > > > > > > if (FeaturePcdGet (PcdVariableCollectStatistics)) { > > > > - > > > > + if (VariableName == NULL || VendorGuid == NULL || > > > > + VariableInfo == > > > > NULL) { > > > > + return; > > > > + } > > > > if (AtRuntime ()) { > > > > // Don't collect statistics at runtime. > > > > return; > > > > } > > > > > > > > - if (gVariableInfo == NULL) { > > > > + if (*VariableInfo == NULL) { > > > > // > > > > // On the first call allocate a entry and place a pointer to it > > > > in > > > > // the EFI System Table. > > > > // > > > > - gVariableInfo = AllocateZeroPool (sizeof (VARIABLE_INFO_ENTRY)); > > > > - ASSERT (gVariableInfo != NULL); > > > > + *VariableInfo = AllocateZeroPool (sizeof (VARIABLE_INFO_ENTRY)); > > > > + ASSERT (*VariableInfo != NULL); > > > > > > > > - CopyGuid (&gVariableInfo->VendorGuid, VendorGuid); > > > > - gVariableInfo->Name = AllocateZeroPool (StrSize (VariableName)); > > > > - ASSERT (gVariableInfo->Name != NULL); > > > > - StrCpyS (gVariableInfo->Name, > > StrSize(VariableName)/sizeof(CHAR16), > > > > VariableName); > > > > - gVariableInfo->Volatile = Volatile; > > > > + CopyGuid (&(*VariableInfo)->VendorGuid, VendorGuid); > > > > + (*VariableInfo)->Name = AllocateZeroPool (StrSize > > > > (VariableName)); > > > > + ASSERT ((*VariableInfo)->Name != NULL); > > > > + StrCpyS ((*VariableInfo)->Name, > > > > + StrSize(VariableName)/sizeof(CHAR16), > > > > VariableName); > > > > + (*VariableInfo)->Volatile = Volatile; > > > > } > > > > > > > > > > > > - for (Entry = gVariableInfo; Entry != NULL; Entry = Entry->Next) { > > > > + for (Entry = (*VariableInfo); Entry != NULL; Entry = > > > > + Entry->Next) { > > > > if (CompareGuid (VendorGuid, &Entry->VendorGuid)) { > > > > if (StrCmp (VariableName, Entry->Name) == 0) { > > > > if (Read) { > > > > @@ -739,7 +743,6 @@ UpdateVariableInfo ( > > > > StrCpyS (Entry->Next->Name, > > > > StrSize(VariableName)/sizeof(CHAR16), > > > > VariableName); > > > > Entry->Next->Volatile = Volatile; > > > > } > > > > - > > > > } > > > > } > > > > } > > > > -- > > > > 2.16.2.windows.1 > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#48606): https://edk2.groups.io/g/devel/message/48606 Mute This Topic: https://groups.io/mt/34318586/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-