Re: [edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer

2019-10-08 Thread Kubacki, Michael A
I will clarify that aspect in the commit message.

Thanks,
Michael

> -Original Message-
> From: Wu, Hao A 
> Sent: Monday, October 7, 2019 7:12 PM
> To: devel@edk2.groups.io; Kubacki, Michael A 
> 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
> 
> > -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 
> > > Sent: Thursday, October 3, 2019 1:04 AM
> > > To: Kubacki, Michael 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: [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 ""
> > > can be passed to UpdateVariableInfo().
> > >
> > > Is my understanding correct? If so,
> > > Reviewed-by: Hao A Wu 
> > >
> > > Best Regards,
> > > Hao Wu
> > >
> > >
> > > >
> > > > Cc: Dandan Bi 
> > > > Cc: Ard Biesheuvel 
> > > > Cc: Eric Dong 
> > > > Cc: Laszlo Ersek 
> > > > Cc: Liming Gao 
> > > > Cc: Michael D Kinney 
> > > > Cc: Ray Ni 
> > > > Cc: Jian J Wang 
> > > > Cc: Hao A Wu 
> > > > Cc: Jiewen Yao 
> > > > Signed-off-by: Michael Kubacki 
> > > > ---
> > > >  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

Re: [edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer

2019-10-07 Thread Wu, Hao A
> -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 
> > Sent: Thursday, October 3, 2019 1:04 AM
> > To: Kubacki, Michael 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: [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 "" can
> > be passed to UpdateVariableInfo().
> >
> > Is my understanding correct? If so,
> > Reviewed-by: Hao A Wu 
> >
> > Best Regards,
> > Hao Wu
> >
> >
> > >
> > > Cc: Dandan Bi 
> > > Cc: Ard Biesheuvel 
> > > Cc: Eric Dong 
> > > Cc: Laszlo Ersek 
> > > Cc: Liming Gao 
> > > Cc: Michael D Kinney 
> > > Cc: Ray Ni 
> > > Cc: Jian J Wang 
> > > Cc: Hao A Wu 
> > > Cc: Jiewen Yao 
> > > Signed-off-by: Michael Kubacki 
> > > ---
> > >  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
> &

Re: [edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer

2019-10-03 Thread Kubacki, Michael A
Your understanding is correct.

Thanks,
Michael

> -Original Message-
> From: Wu, Hao A 
> Sent: Thursday, October 3, 2019 1:04 AM
> To: Kubacki, Michael 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: [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 "" can
> be passed to UpdateVariableInfo().
> 
> Is my understanding correct? If so,
> Reviewed-by: Hao A Wu 
> 
> Best Regards,
> Hao Wu
> 
> 
> >
> > Cc: Dandan Bi 
> > Cc: Ard Biesheuvel 
> > Cc: Eric Dong 
> > Cc: Laszlo Ersek 
> > Cc: Liming Gao 
> > Cc: Michael D Kinney 
> > Cc: Ray Ni 
> > Cc: Jian J Wang 
> > Cc: Hao A Wu 
> > Cc: Jiewen Yao 
> > Signed-off-by: Michael Kubacki 
> > ---
> >  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, );
> >  FlushHobVariableToFlash (VariableName, VendorGuid);
> >  return EFI_SUCCESS;
> >}
> > @@ -1758,7 +1758,7 @@ UpdateVariable (
> >   
> >   );
> >if (!EFI_ERROR (Status)) {
> > -UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile,
> > FALSE, FALSE, TRUE, FALSE);
> > +UpdateVariableInfo (VariableName, VendorGuid,
> > + Variable->Volatile,
> > FALSE, FALSE, TRUE, FALSE, );
> >  

Re: [edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer

2019-10-03 Thread Wu, Hao A
> -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 "" can be
passed to UpdateVariableInfo().

Is my understanding correct? If so,
Reviewed-by: Hao A Wu 

Best Regards,
Hao Wu


> 
> Cc: Dandan Bi 
> Cc: Ard Biesheuvel 
> Cc: Eric Dong 
> Cc: Laszlo Ersek 
> Cc: Liming Gao 
> Cc: Michael D Kinney 
> Cc: Ray Ni 
> Cc: Jian J Wang 
> Cc: Hao A Wu 
> Cc: Jiewen Yao 
> Signed-off-by: Michael Kubacki 
> ---
>  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, );
>  FlushHobVariableToFlash (VariableName, VendorGuid);
>  return EFI_SUCCESS;
>}
> @@ -1758,7 +1758,7 @@ UpdateVariable (
>   
>   );
>if (!EFI_ERROR (Status)) {
> -UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile,
> FALSE, FALSE, TRUE, FALSE);
> +UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile,
> FALSE, FALSE, TRUE, FALSE, );
>  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, );
>Status = EFI_SUCCESS;
>goto Done;
>  } else if ((CacheVariable->CurrPtr->State == VAR_ADDED) ||
> @@ -2006,7 +2006,7 @@ 

[edk2-devel] [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer

2019-09-27 Thread Kubacki, Michael A
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.

Cc: Dandan Bi 
Cc: Ard Biesheuvel 
Cc: Eric Dong 
Cc: Laszlo Ersek 
Cc: Liming Gao 
Cc: Michael D Kinney 
Cc: Ray Ni 
Cc: Jian J Wang 
Cc: Hao A Wu 
Cc: Jiewen Yao 
Signed-off-by: Michael Kubacki 
---
 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, );
 FlushHobVariableToFlash (VariableName, VendorGuid);
 return EFI_SUCCESS;
   }
@@ -1758,7 +1758,7 @@ UpdateVariable (
  
  );
   if (!EFI_ERROR (Status)) {
-UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile, 
FALSE, FALSE, TRUE, FALSE);
+UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile, 
FALSE, FALSE, TRUE, FALSE, );
 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, );
   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) 
Variable->StartPtr));
   CacheVariable->InDeletedTransitionPtr = NULL;
 }
-UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, TRUE, 
FALSE, FALSE);
+UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, TRUE, 
FALSE, FALSE, );
 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)