[edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface

Yang Jie posted 1 patch 2 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/edk2 tags/patchew/20211018051400.3097-1-jie.yang@intel.com
There is a newer version of this series
FmpDevicePkg/FmpDevicePkg.dsc         |  1 +
FmpDevicePkg/FmpDxe/FmpDxe.h          |  4 +-
FmpDevicePkg/FmpDxe/FmpDxe.inf        |  5 ++-
FmpDevicePkg/FmpDxe/VariableSupport.c | 65 +++++++++++++--------------
4 files changed, 37 insertions(+), 38 deletions(-)
[edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface
Posted by Yang Jie 2 years, 5 months ago
From: yangjie <jie.yang@intel.com>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3655

The code in FmpDevicePkg called the deprecated interface 
VariableLockRequestToLock. So I changed the code in 
FmpDevicePkg using RegisterBasicVariablePolicy, 
instead of the deprecated interface.

Signed-off-by: Yang Jie <jie.yang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Guomin Jiang <guomin.jiang@intel.com>
Cc: Wei6 Xu <wei6.xu@intel.com>
---
 FmpDevicePkg/FmpDevicePkg.dsc         |  1 +
 FmpDevicePkg/FmpDxe/FmpDxe.h          |  4 +-
 FmpDevicePkg/FmpDxe/FmpDxe.inf        |  5 ++-
 FmpDevicePkg/FmpDxe/VariableSupport.c | 65 +++++++++++++--------------
 4 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/FmpDevicePkg/FmpDevicePkg.dsc b/FmpDevicePkg/FmpDevicePkg.dsc
index b420f52a08..7b1af285dd 100644
--- a/FmpDevicePkg/FmpDevicePkg.dsc
+++ b/FmpDevicePkg/FmpDevicePkg.dsc
@@ -53,6 +53,7 @@
   DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
   DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
   PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+  VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
 !ifdef CONTINUOUS_INTEGRATION
   BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf
 !else
diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.h b/FmpDevicePkg/FmpDxe/FmpDxe.h
index 1177b1828e..4d94a925b6 100644
--- a/FmpDevicePkg/FmpDxe/FmpDxe.h
+++ b/FmpDevicePkg/FmpDxe/FmpDxe.h
@@ -4,7 +4,7 @@
   information provided through PCDs and libraries.
 
   Copyright (c) Microsoft Corporation.<BR>
-  Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -33,11 +33,11 @@
 #include <Library/FmpDependencyDeviceLib.h>
 #include <Protocol/FirmwareManagement.h>
 #include <Protocol/FirmwareManagementProgress.h>
-#include <Protocol/VariableLock.h>
 #include <Guid/SystemResourceTable.h>
 #include <Guid/EventGroup.h>
 #include <LastAttemptStatus.h>
 #include <FmpLastAttemptStatus.h>
+#include <Library/VariablePolicyHelperLib.h>
 
 #define VERSION_STRING_NOT_SUPPORTED  L"VERSION STRING NOT SUPPORTED"
 #define VERSION_STRING_NOT_AVAILABLE  L"VERSION STRING NOT AVAILABLE"
diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.inf b/FmpDevicePkg/FmpDxe/FmpDxe.inf
index eeb904a091..1c296388b0 100644
--- a/FmpDevicePkg/FmpDxe/FmpDxe.inf
+++ b/FmpDevicePkg/FmpDxe/FmpDxe.inf
@@ -4,7 +4,7 @@
 #  information provided through PCDs and libraries.
 #
 #  Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
-#  Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
 ##
@@ -55,14 +55,15 @@
   FmpDependencyLib
   FmpDependencyCheckLib
   FmpDependencyDeviceLib
+  VariablePolicyHelperLib
 
 [Guids]
   gEfiEndOfDxeEventGroupGuid
 
 [Protocols]
-  gEdkiiVariableLockProtocolGuid                ## CONSUMES
   gEfiFirmwareManagementProtocolGuid            ## PRODUCES
   gEdkiiFirmwareManagementProgressProtocolGuid  ## PRODUCES
+  gEdkiiVariablePolicyProtocolGuid              ## CONSUMES
 
 [Pcd]
   gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable              ## CONSUMES
diff --git a/FmpDevicePkg/FmpDxe/VariableSupport.c b/FmpDevicePkg/FmpDxe/VariableSupport.c
index 86dd5b203b..a1bd949b09 100644
--- a/FmpDevicePkg/FmpDxe/VariableSupport.c
+++ b/FmpDevicePkg/FmpDxe/VariableSupport.c
@@ -3,7 +3,7 @@
   firmware updates.
 
   Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
-  Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -730,28 +730,29 @@ static
 EFI_STATUS
 LockFmpVariable (
   IN EFI_STATUS                    PreviousStatus,
-  IN EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock,
+  EDKII_VARIABLE_POLICY_PROTOCOL   *VariablePolicy,
   IN CHAR16                        *VariableName
   )
 {
   EFI_STATUS  Status;
 
-  Status = VariableLock->RequestToLock (
-                           VariableLock,
-                           VariableName,
-                           &gEfiCallerIdGuid
-                           );
-  if (!EFI_ERROR (Status)) {
-    return PreviousStatus;
+  // If success, go ahead and set the policies to protect the target variables.
+  Status = RegisterBasicVariablePolicy (VariablePolicy,
+                                        &gEfiCallerIdGuid,
+                                        VariableName,
+                                        VARIABLE_POLICY_NO_MIN_SIZE,
+                                        VARIABLE_POLICY_NO_MAX_SIZE,
+                                        VARIABLE_POLICY_NO_MUST_ATTR,
+                                        VARIABLE_POLICY_NO_CANT_ATTR,
+                                        VARIABLE_POLICY_TYPE_LOCK_NOW);
+  if (EFI_ERROR (Status)) {
+    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.  Status = %r\n",
+            mImageIdName,
+            &gEfiCallerIdGuid,
+            VariableName,
+            Status
+           ));
   }
-
-  DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.  Status = %r\n",
-    mImageIdName,
-    &gEfiCallerIdGuid,
-    VariableName,
-    Status
-    ));
-
   if (EFI_ERROR (PreviousStatus)) {
     return PreviousStatus;
   }
@@ -773,26 +774,22 @@ LockAllFmpVariables (
   FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
   )
 {
-  EFI_STATUS                    Status;
-  EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
-
-  VariableLock = NULL;
-  Status = gBS->LocateProtocol (
-                  &gEdkiiVariableLockProtocolGuid,
-                  NULL,
-                  (VOID **)&VariableLock
-                  );
-  if (EFI_ERROR (Status) || VariableLock == NULL) {
-    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to locate Variable Lock Protocol (%r).\n", mImageIdName, Status));
-    return EFI_UNSUPPORTED;
+  EFI_STATUS                        Status;
+  EDKII_VARIABLE_POLICY_PROTOCOL    *VariablePolicy;
+
+  // Locate the VariablePolicy protocol.
+  Status = gBS->LocateProtocol (&gEdkiiVariablePolicyProtocolGuid, NULL, (VOID**)&VariablePolicy );
+  if (EFI_ERROR (Status)) {
+    DEBUG ((DEBUG_ERROR, "FmpDxe %a - Could not locate VariablePolicy protocol! %r\n", __FUNCTION__, Status));
+    return Status;
   }
 
   Status = EFI_SUCCESS;
-  Status = LockFmpVariable (Status, VariableLock, Private->VersionVariableName);
-  Status = LockFmpVariable (Status, VariableLock, Private->LsvVariableName);
-  Status = LockFmpVariable (Status, VariableLock, Private->LastAttemptStatusVariableName);
-  Status = LockFmpVariable (Status, VariableLock, Private->LastAttemptVersionVariableName);
-  Status = LockFmpVariable (Status, VariableLock, Private->FmpStateVariableName);
+  Status = LockFmpVariable (Status, VariablePolicy, Private->VersionVariableName);
+  Status = LockFmpVariable (Status, VariablePolicy, Private->LsvVariableName);
+  Status = LockFmpVariable (Status, VariablePolicy, Private->LastAttemptStatusVariableName);
+  Status = LockFmpVariable (Status, VariablePolicy, Private->LastAttemptVersionVariableName);
+  Status = LockFmpVariable (Status, VariablePolicy, Private->FmpStateVariableName);
 
   return Status;
 }
-- 
2.26.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#82246): https://edk2.groups.io/g/devel/message/82246
Mute This Topic: https://groups.io/mt/86407503/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


回复: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface
Posted by gaoliming 2 years, 5 months ago
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Yang Jie
> 发送时间: 2021年10月18日 13:14
> 收件人: devel@edk2.groups.io
> 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com;
> guomin.jiang@intel.com; wei6.xu@intel.com; yangjie <jie.yang@intel.com>
> 主题: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock
> interface
> 
> From: yangjie <jie.yang@intel.com>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3655
> 
> The code in FmpDevicePkg called the deprecated interface
> 
> VariableLockRequestToLock. So I changed the code in
> 
> FmpDevicePkg using RegisterBasicVariablePolicy,
> 
> instead of the deprecated interface.
> 
> Signed-off-by: Yang Jie <jie.yang@intel.com>
> 
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> 
> Cc: Guomin Jiang <guomin.jiang@intel.com>
> 
> Cc: Wei6 Xu <wei6.xu@intel.com>
> ---
>  FmpDevicePkg/FmpDevicePkg.dsc         |  1 +
>  FmpDevicePkg/FmpDxe/FmpDxe.h          |  4 +-
>  FmpDevicePkg/FmpDxe/FmpDxe.inf        |  5 ++-
>  FmpDevicePkg/FmpDxe/VariableSupport.c | 65 +++++++++++++--------------
>  4 files changed, 37 insertions(+), 38 deletions(-)
> 
> diff --git a/FmpDevicePkg/FmpDevicePkg.dsc
> b/FmpDevicePkg/FmpDevicePkg.dsc
> index b420f52a08..7b1af285dd 100644
> --- a/FmpDevicePkg/FmpDevicePkg.dsc
> +++ b/FmpDevicePkg/FmpDevicePkg.dsc
> @@ -53,6 +53,7 @@
>    DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
> 
> 
> DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/Base
> DebugPrintErrorLevelLib.inf
> 
>    PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
> +
> VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/Vari
> ablePolicyHelperLib.inf
> 
>  !ifdef CONTINUOUS_INTEGRATION
> 
>    BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf
> 
>  !else
> 
> diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.h
> b/FmpDevicePkg/FmpDxe/FmpDxe.h
> index 1177b1828e..4d94a925b6 100644
> --- a/FmpDevicePkg/FmpDxe/FmpDxe.h
> +++ b/FmpDevicePkg/FmpDxe/FmpDxe.h
> @@ -4,7 +4,7 @@
>    information provided through PCDs and libraries.
> 
> 
> 
>    Copyright (c) Microsoft Corporation.<BR>
> 
> -  Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
> 
> +  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> @@ -33,11 +33,11 @@
>  #include <Library/FmpDependencyDeviceLib.h>
> 
>  #include <Protocol/FirmwareManagement.h>
> 
>  #include <Protocol/FirmwareManagementProgress.h>
> 
> -#include <Protocol/VariableLock.h>
> 
>  #include <Guid/SystemResourceTable.h>
> 
>  #include <Guid/EventGroup.h>
> 
>  #include <LastAttemptStatus.h>
> 
>  #include <FmpLastAttemptStatus.h>
> 
> +#include <Library/VariablePolicyHelperLib.h>
> 
> 
> 
>  #define VERSION_STRING_NOT_SUPPORTED  L"VERSION STRING NOT
> SUPPORTED"
> 
>  #define VERSION_STRING_NOT_AVAILABLE  L"VERSION STRING NOT
> AVAILABLE"
> 
> diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.inf
> b/FmpDevicePkg/FmpDxe/FmpDxe.inf
> index eeb904a091..1c296388b0 100644
> --- a/FmpDevicePkg/FmpDxe/FmpDxe.inf
> +++ b/FmpDevicePkg/FmpDxe/FmpDxe.inf
> @@ -4,7 +4,7 @@
>  #  information provided through PCDs and libraries.
> 
>  #
> 
>  #  Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
> 
> -#  Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.<BR>
> 
> +#  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
> 
>  #
> 
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  ##
> 
> @@ -55,14 +55,15 @@
>    FmpDependencyLib
> 
>    FmpDependencyCheckLib
> 
>    FmpDependencyDeviceLib
> 
> +  VariablePolicyHelperLib
> 
> 
> 
>  [Guids]
> 
>    gEfiEndOfDxeEventGroupGuid
> 
> 
> 
>  [Protocols]
> 
> -  gEdkiiVariableLockProtocolGuid                ## CONSUMES
> 
>    gEfiFirmwareManagementProtocolGuid            ## PRODUCES
> 
>    gEdkiiFirmwareManagementProgressProtocolGuid  ## PRODUCES
> 
> +  gEdkiiVariablePolicyProtocolGuid              ## CONSUMES
> 
> 
> 
>  [Pcd]
> 
>    gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable
> ## CONSUMES
> 
> diff --git a/FmpDevicePkg/FmpDxe/VariableSupport.c
> b/FmpDevicePkg/FmpDxe/VariableSupport.c
> index 86dd5b203b..a1bd949b09 100644
> --- a/FmpDevicePkg/FmpDxe/VariableSupport.c
> +++ b/FmpDevicePkg/FmpDxe/VariableSupport.c
> @@ -3,7 +3,7 @@
>    firmware updates.
> 
> 
> 
>    Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
> 
> -  Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
> 
> +  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> @@ -730,28 +730,29 @@ static
>  EFI_STATUS
> 
>  LockFmpVariable (
> 
>    IN EFI_STATUS                    PreviousStatus,
> 
> -  IN EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock,
> 
> +  EDKII_VARIABLE_POLICY_PROTOCOL   *VariablePolicy,
> 
>    IN CHAR16                        *VariableName
> 
>    )
> 
>  {
> 
>    EFI_STATUS  Status;
> 
> 
> 
> -  Status = VariableLock->RequestToLock (
> 
> -                           VariableLock,
> 
> -                           VariableName,
> 
> -                           &gEfiCallerIdGuid
> 
> -                           );
> 
> -  if (!EFI_ERROR (Status)) {
> 
> -    return PreviousStatus;
> 
> +  // If success, go ahead and set the policies to protect the target
variables.
> 
> +  Status = RegisterBasicVariablePolicy (VariablePolicy,
> 
> +                                        &gEfiCallerIdGuid,
> 
> +                                        VariableName,
> 
> +
> VARIABLE_POLICY_NO_MIN_SIZE,
> 
> +
> VARIABLE_POLICY_NO_MAX_SIZE,
> 
> +
> VARIABLE_POLICY_NO_MUST_ATTR,
> 
> +
> VARIABLE_POLICY_NO_CANT_ATTR,
> 
> +
> VARIABLE_POLICY_TYPE_LOCK_NOW);
> 
> +  if (EFI_ERROR (Status)) {
> 
> +    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.
> Status = %r\n",
> 
> +            mImageIdName,
> 
> +            &gEfiCallerIdGuid,
> 
> +            VariableName,
> 
> +            Status
> 
> +           ));
> 
>    }
> 
> -
> 
> -  DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.
> Status = %r\n",
> 
> -    mImageIdName,
> 
> -    &gEfiCallerIdGuid,
> 
> -    VariableName,
> 
> -    Status
> 
> -    ));
> 
> -
> 
>    if (EFI_ERROR (PreviousStatus)) {
> 
>      return PreviousStatus;
> 
>    }
> 
> @@ -773,26 +774,22 @@ LockAllFmpVariables (
>    FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
> 
>    )
> 
>  {
> 
> -  EFI_STATUS                    Status;
> 
> -  EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
> 
> -
> 
> -  VariableLock = NULL;
> 
> -  Status = gBS->LocateProtocol (
> 
> -                  &gEdkiiVariableLockProtocolGuid,
> 
> -                  NULL,
> 
> -                  (VOID **)&VariableLock
> 
> -                  );
> 
> -  if (EFI_ERROR (Status) || VariableLock == NULL) {
> 
> -    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to locate Variable Lock
> Protocol (%r).\n", mImageIdName, Status));
> 
> -    return EFI_UNSUPPORTED;
> 
> +  EFI_STATUS                        Status;
> 
> +  EDKII_VARIABLE_POLICY_PROTOCOL    *VariablePolicy;
> 
> +
> 
> +  // Locate the VariablePolicy protocol.
> 
> +  Status = gBS->LocateProtocol (&gEdkiiVariablePolicyProtocolGuid, NULL,
> (VOID**)&VariablePolicy );
> 
> +  if (EFI_ERROR (Status)) {
> 
> +    DEBUG ((DEBUG_ERROR, "FmpDxe %a - Could not locate VariablePolicy
> protocol! %r\n", __FUNCTION__, Status));
> 
> +    return Status;
> 
>    }
> 
> 
> 
>    Status = EFI_SUCCESS;
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->VersionVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LsvVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LastAttemptStatusVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LastAttemptVersionVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->FmpStateVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->VersionVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LsvVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LastAttemptStatusVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LastAttemptVersionVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->FmpStateVariableName);
> 
> 
> 
>    return Status;
> 
>  }
> 
> --
> 2.26.2.windows.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#82246): https://edk2.groups.io/g/devel/message/82246
> Mute This Topic: https://groups.io/mt/86407503/4905953
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [gaoliming@byosoft.com.cn]
> -=-=-=-=-=-=
> 





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#82260): https://edk2.groups.io/g/devel/message/82260
Mute This Topic: https://groups.io/mt/86430599/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface
Posted by Xu, Wei6 2 years, 5 months ago
Reviewed-by: Wei6 Xu <wei6.xu@intel.com>

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming
Sent: Tuesday, October 19, 2021 9:47 AM
To: devel@edk2.groups.io; Yang, Jie <jie.yang@intel.com>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>; Xu, Wei6 <wei6.xu@intel.com>
Subject: 回复: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface

Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Yang Jie
> 发送时间: 2021年10月18日 13:14
> 收件人: devel@edk2.groups.io
> 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; 
> guomin.jiang@intel.com; wei6.xu@intel.com; yangjie 
> <jie.yang@intel.com>
> 主题: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock 
> interface
> 
> From: yangjie <jie.yang@intel.com>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3655
> 
> The code in FmpDevicePkg called the deprecated interface
> 
> VariableLockRequestToLock. So I changed the code in
> 
> FmpDevicePkg using RegisterBasicVariablePolicy,
> 
> instead of the deprecated interface.
> 
> Signed-off-by: Yang Jie <jie.yang@intel.com>
> 
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> 
> Cc: Guomin Jiang <guomin.jiang@intel.com>
> 
> Cc: Wei6 Xu <wei6.xu@intel.com>
> ---
>  FmpDevicePkg/FmpDevicePkg.dsc         |  1 +
>  FmpDevicePkg/FmpDxe/FmpDxe.h          |  4 +-
>  FmpDevicePkg/FmpDxe/FmpDxe.inf        |  5 ++-
>  FmpDevicePkg/FmpDxe/VariableSupport.c | 65 
> +++++++++++++--------------
>  4 files changed, 37 insertions(+), 38 deletions(-)
> 
> diff --git a/FmpDevicePkg/FmpDevicePkg.dsc 
> b/FmpDevicePkg/FmpDevicePkg.dsc index b420f52a08..7b1af285dd 100644
> --- a/FmpDevicePkg/FmpDevicePkg.dsc
> +++ b/FmpDevicePkg/FmpDevicePkg.dsc
> @@ -53,6 +53,7 @@
>    DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
> 
> 
> DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/Bas
> DebugPrintErrorLevelLib|e
> DebugPrintErrorLevelLib.inf
> 
>    PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
> +
> VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/V
> VariablePolicyHelperLib|ari
> ablePolicyHelperLib.inf
> 
>  !ifdef CONTINUOUS_INTEGRATION
> 
>    
> BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf
> 
>  !else
> 
> diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.h 
> b/FmpDevicePkg/FmpDxe/FmpDxe.h index 1177b1828e..4d94a925b6 100644
> --- a/FmpDevicePkg/FmpDxe/FmpDxe.h
> +++ b/FmpDevicePkg/FmpDxe/FmpDxe.h
> @@ -4,7 +4,7 @@
>    information provided through PCDs and libraries.
> 
> 
> 
>    Copyright (c) Microsoft Corporation.<BR>
> 
> -  Copyright (c) 2018 - 2019, Intel Corporation. All rights 
> reserved.<BR>
> 
> +  Copyright (c) 2018 - 2021, Intel Corporation. All rights 
> + reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> @@ -33,11 +33,11 @@
>  #include <Library/FmpDependencyDeviceLib.h>
> 
>  #include <Protocol/FirmwareManagement.h>
> 
>  #include <Protocol/FirmwareManagementProgress.h>
> 
> -#include <Protocol/VariableLock.h>
> 
>  #include <Guid/SystemResourceTable.h>
> 
>  #include <Guid/EventGroup.h>
> 
>  #include <LastAttemptStatus.h>
> 
>  #include <FmpLastAttemptStatus.h>
> 
> +#include <Library/VariablePolicyHelperLib.h>
> 
> 
> 
>  #define VERSION_STRING_NOT_SUPPORTED  L"VERSION STRING NOT SUPPORTED"
> 
>  #define VERSION_STRING_NOT_AVAILABLE  L"VERSION STRING NOT AVAILABLE"
> 
> diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.inf 
> b/FmpDevicePkg/FmpDxe/FmpDxe.inf index eeb904a091..1c296388b0 100644
> --- a/FmpDevicePkg/FmpDxe/FmpDxe.inf
> +++ b/FmpDevicePkg/FmpDxe/FmpDxe.inf
> @@ -4,7 +4,7 @@
>  #  information provided through PCDs and libraries.
> 
>  #
> 
>  #  Copyright (c) 2016, Microsoft Corporation. All rights 
> reserved.<BR>
> 
> -#  Copyright (c) 2018 - 2020, Intel Corporation. All rights 
> reserved.<BR>
> 
> +#  Copyright (c) 2018 - 2021, Intel Corporation. All rights 
> +reserved.<BR>
> 
>  #
> 
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  ##
> 
> @@ -55,14 +55,15 @@
>    FmpDependencyLib
> 
>    FmpDependencyCheckLib
> 
>    FmpDependencyDeviceLib
> 
> +  VariablePolicyHelperLib
> 
> 
> 
>  [Guids]
> 
>    gEfiEndOfDxeEventGroupGuid
> 
> 
> 
>  [Protocols]
> 
> -  gEdkiiVariableLockProtocolGuid                ## CONSUMES
> 
>    gEfiFirmwareManagementProtocolGuid            ## PRODUCES
> 
>    gEdkiiFirmwareManagementProgressProtocolGuid  ## PRODUCES
> 
> +  gEdkiiVariablePolicyProtocolGuid              ## CONSUMES
> 
> 
> 
>  [Pcd]
> 
>    gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable
> ## CONSUMES
> 
> diff --git a/FmpDevicePkg/FmpDxe/VariableSupport.c
> b/FmpDevicePkg/FmpDxe/VariableSupport.c
> index 86dd5b203b..a1bd949b09 100644
> --- a/FmpDevicePkg/FmpDxe/VariableSupport.c
> +++ b/FmpDevicePkg/FmpDxe/VariableSupport.c
> @@ -3,7 +3,7 @@
>    firmware updates.
> 
> 
> 
>    Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
> 
> -  Copyright (c) 2018 - 2019, Intel Corporation. All rights 
> reserved.<BR>
> 
> +  Copyright (c) 2018 - 2021, Intel Corporation. All rights 
> + reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> @@ -730,28 +730,29 @@ static
>  EFI_STATUS
> 
>  LockFmpVariable (
> 
>    IN EFI_STATUS                    PreviousStatus,
> 
> -  IN EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock,
> 
> +  EDKII_VARIABLE_POLICY_PROTOCOL   *VariablePolicy,
> 
>    IN CHAR16                        *VariableName
> 
>    )
> 
>  {
> 
>    EFI_STATUS  Status;
> 
> 
> 
> -  Status = VariableLock->RequestToLock (
> 
> -                           VariableLock,
> 
> -                           VariableName,
> 
> -                           &gEfiCallerIdGuid
> 
> -                           );
> 
> -  if (!EFI_ERROR (Status)) {
> 
> -    return PreviousStatus;
> 
> +  // If success, go ahead and set the policies to protect the target
variables.
> 
> +  Status = RegisterBasicVariablePolicy (VariablePolicy,
> 
> +                                        &gEfiCallerIdGuid,
> 
> +                                        VariableName,
> 
> +
> VARIABLE_POLICY_NO_MIN_SIZE,
> 
> +
> VARIABLE_POLICY_NO_MAX_SIZE,
> 
> +
> VARIABLE_POLICY_NO_MUST_ATTR,
> 
> +
> VARIABLE_POLICY_NO_CANT_ATTR,
> 
> +
> VARIABLE_POLICY_TYPE_LOCK_NOW);
> 
> +  if (EFI_ERROR (Status)) {
> 
> +    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.
> Status = %r\n",
> 
> +            mImageIdName,
> 
> +            &gEfiCallerIdGuid,
> 
> +            VariableName,
> 
> +            Status
> 
> +           ));
> 
>    }
> 
> -
> 
> -  DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.
> Status = %r\n",
> 
> -    mImageIdName,
> 
> -    &gEfiCallerIdGuid,
> 
> -    VariableName,
> 
> -    Status
> 
> -    ));
> 
> -
> 
>    if (EFI_ERROR (PreviousStatus)) {
> 
>      return PreviousStatus;
> 
>    }
> 
> @@ -773,26 +774,22 @@ LockAllFmpVariables (
>    FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
> 
>    )
> 
>  {
> 
> -  EFI_STATUS                    Status;
> 
> -  EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
> 
> -
> 
> -  VariableLock = NULL;
> 
> -  Status = gBS->LocateProtocol (
> 
> -                  &gEdkiiVariableLockProtocolGuid,
> 
> -                  NULL,
> 
> -                  (VOID **)&VariableLock
> 
> -                  );
> 
> -  if (EFI_ERROR (Status) || VariableLock == NULL) {
> 
> -    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to locate Variable Lock
> Protocol (%r).\n", mImageIdName, Status));
> 
> -    return EFI_UNSUPPORTED;
> 
> +  EFI_STATUS                        Status;
> 
> +  EDKII_VARIABLE_POLICY_PROTOCOL    *VariablePolicy;
> 
> +
> 
> +  // Locate the VariablePolicy protocol.
> 
> +  Status = gBS->LocateProtocol (&gEdkiiVariablePolicyProtocolGuid, 
> + NULL,
> (VOID**)&VariablePolicy );
> 
> +  if (EFI_ERROR (Status)) {
> 
> +    DEBUG ((DEBUG_ERROR, "FmpDxe %a - Could not locate VariablePolicy
> protocol! %r\n", __FUNCTION__, Status));
> 
> +    return Status;
> 
>    }
> 
> 
> 
>    Status = EFI_SUCCESS;
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->VersionVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LsvVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LastAttemptStatusVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LastAttemptVersionVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->FmpStateVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->VersionVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LsvVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LastAttemptStatusVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LastAttemptVersionVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->FmpStateVariableName);
> 
> 
> 
>    return Status;
> 
>  }
> 
> --
> 2.26.2.windows.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#82246): 
> https://edk2.groups.io/g/devel/message/82246
> Mute This Topic: https://groups.io/mt/86407503/4905953
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [gaoliming@byosoft.com.cn]
> -=-=-=-=-=-=
> 










-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#82262): https://edk2.groups.io/g/devel/message/82262
Mute This Topic: https://groups.io/mt/86430867/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface
Posted by Yang Jie 2 years, 5 months ago
Thank you very much for your review, but I find I missed something in the definition of the function LockFmpVariable, it is defined as follow:
static
EFI_STATUS
LockFmpVariable (
  IN EFI_STATUS                    PreviousStatus,
  EDKII_VARIABLE_POLICY_PROTOCOL   *VariablePolicy,
  IN CHAR16                        *VariableName
  )
I need to add IN ahead EDKII_VARIABLE_POLICY_PROTOCOL   *VariablePolicy. I am sorry for the mistake, and I will submit a patch to fix it.


-----Original Message-----
From: Xu, Wei6 <wei6.xu@intel.com> 
Sent: Tuesday, October 19, 2021 10:06 AM
To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Yang, Jie <jie.yang@intel.com>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>
Subject: RE: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface

Reviewed-by: Wei6 Xu <wei6.xu@intel.com>

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming
Sent: Tuesday, October 19, 2021 9:47 AM
To: devel@edk2.groups.io; Yang, Jie <jie.yang@intel.com>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>; Xu, Wei6 <wei6.xu@intel.com>
Subject: 回复: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock interface

Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Yang Jie
> 发送时间: 2021年10月18日 13:14
> 收件人: devel@edk2.groups.io
> 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; 
> guomin.jiang@intel.com; wei6.xu@intel.com; yangjie 
> <jie.yang@intel.com>
> 主题: [edk2-devel][PATCH] FmpDevicePkg/FmpDxe: Use new Variable Lock 
> interface
> 
> From: yangjie <jie.yang@intel.com>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3655
> 
> The code in FmpDevicePkg called the deprecated interface
> 
> VariableLockRequestToLock. So I changed the code in
> 
> FmpDevicePkg using RegisterBasicVariablePolicy,
> 
> instead of the deprecated interface.
> 
> Signed-off-by: Yang Jie <jie.yang@intel.com>
> 
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> 
> Cc: Guomin Jiang <guomin.jiang@intel.com>
> 
> Cc: Wei6 Xu <wei6.xu@intel.com>
> ---
>  FmpDevicePkg/FmpDevicePkg.dsc         |  1 +
>  FmpDevicePkg/FmpDxe/FmpDxe.h          |  4 +-
>  FmpDevicePkg/FmpDxe/FmpDxe.inf        |  5 ++-
>  FmpDevicePkg/FmpDxe/VariableSupport.c | 65
> +++++++++++++--------------
>  4 files changed, 37 insertions(+), 38 deletions(-)
> 
> diff --git a/FmpDevicePkg/FmpDevicePkg.dsc 
> b/FmpDevicePkg/FmpDevicePkg.dsc index b420f52a08..7b1af285dd 100644
> --- a/FmpDevicePkg/FmpDevicePkg.dsc
> +++ b/FmpDevicePkg/FmpDevicePkg.dsc
> @@ -53,6 +53,7 @@
>    DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
> 
> 
> DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/Bas
> DebugPrintErrorLevelLib|e
> DebugPrintErrorLevelLib.inf
> 
>    PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
> +
> VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/V
> VariablePolicyHelperLib|ari
> ablePolicyHelperLib.inf
> 
>  !ifdef CONTINUOUS_INTEGRATION
> 
>    
> BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf
> 
>  !else
> 
> diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.h 
> b/FmpDevicePkg/FmpDxe/FmpDxe.h index 1177b1828e..4d94a925b6 100644
> --- a/FmpDevicePkg/FmpDxe/FmpDxe.h
> +++ b/FmpDevicePkg/FmpDxe/FmpDxe.h
> @@ -4,7 +4,7 @@
>    information provided through PCDs and libraries.
> 
> 
> 
>    Copyright (c) Microsoft Corporation.<BR>
> 
> -  Copyright (c) 2018 - 2019, Intel Corporation. All rights 
> reserved.<BR>
> 
> +  Copyright (c) 2018 - 2021, Intel Corporation. All rights 
> + reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> @@ -33,11 +33,11 @@
>  #include <Library/FmpDependencyDeviceLib.h>
> 
>  #include <Protocol/FirmwareManagement.h>
> 
>  #include <Protocol/FirmwareManagementProgress.h>
> 
> -#include <Protocol/VariableLock.h>
> 
>  #include <Guid/SystemResourceTable.h>
> 
>  #include <Guid/EventGroup.h>
> 
>  #include <LastAttemptStatus.h>
> 
>  #include <FmpLastAttemptStatus.h>
> 
> +#include <Library/VariablePolicyHelperLib.h>
> 
> 
> 
>  #define VERSION_STRING_NOT_SUPPORTED  L"VERSION STRING NOT SUPPORTED"
> 
>  #define VERSION_STRING_NOT_AVAILABLE  L"VERSION STRING NOT AVAILABLE"
> 
> diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.inf 
> b/FmpDevicePkg/FmpDxe/FmpDxe.inf index eeb904a091..1c296388b0 100644
> --- a/FmpDevicePkg/FmpDxe/FmpDxe.inf
> +++ b/FmpDevicePkg/FmpDxe/FmpDxe.inf
> @@ -4,7 +4,7 @@
>  #  information provided through PCDs and libraries.
> 
>  #
> 
>  #  Copyright (c) 2016, Microsoft Corporation. All rights 
> reserved.<BR>
> 
> -#  Copyright (c) 2018 - 2020, Intel Corporation. All rights 
> reserved.<BR>
> 
> +#  Copyright (c) 2018 - 2021, Intel Corporation. All rights 
> +reserved.<BR>
> 
>  #
> 
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  ##
> 
> @@ -55,14 +55,15 @@
>    FmpDependencyLib
> 
>    FmpDependencyCheckLib
> 
>    FmpDependencyDeviceLib
> 
> +  VariablePolicyHelperLib
> 
> 
> 
>  [Guids]
> 
>    gEfiEndOfDxeEventGroupGuid
> 
> 
> 
>  [Protocols]
> 
> -  gEdkiiVariableLockProtocolGuid                ## CONSUMES
> 
>    gEfiFirmwareManagementProtocolGuid            ## PRODUCES
> 
>    gEdkiiFirmwareManagementProgressProtocolGuid  ## PRODUCES
> 
> +  gEdkiiVariablePolicyProtocolGuid              ## CONSUMES
> 
> 
> 
>  [Pcd]
> 
>    gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable
> ## CONSUMES
> 
> diff --git a/FmpDevicePkg/FmpDxe/VariableSupport.c
> b/FmpDevicePkg/FmpDxe/VariableSupport.c
> index 86dd5b203b..a1bd949b09 100644
> --- a/FmpDevicePkg/FmpDxe/VariableSupport.c
> +++ b/FmpDevicePkg/FmpDxe/VariableSupport.c
> @@ -3,7 +3,7 @@
>    firmware updates.
> 
> 
> 
>    Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
> 
> -  Copyright (c) 2018 - 2019, Intel Corporation. All rights 
> reserved.<BR>
> 
> +  Copyright (c) 2018 - 2021, Intel Corporation. All rights 
> + reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> @@ -730,28 +730,29 @@ static
>  EFI_STATUS
> 
>  LockFmpVariable (
> 
>    IN EFI_STATUS                    PreviousStatus,
> 
> -  IN EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock,
> 
> +  EDKII_VARIABLE_POLICY_PROTOCOL   *VariablePolicy,
> 
>    IN CHAR16                        *VariableName
> 
>    )
> 
>  {
> 
>    EFI_STATUS  Status;
> 
> 
> 
> -  Status = VariableLock->RequestToLock (
> 
> -                           VariableLock,
> 
> -                           VariableName,
> 
> -                           &gEfiCallerIdGuid
> 
> -                           );
> 
> -  if (!EFI_ERROR (Status)) {
> 
> -    return PreviousStatus;
> 
> +  // If success, go ahead and set the policies to protect the target
variables.
> 
> +  Status = RegisterBasicVariablePolicy (VariablePolicy,
> 
> +                                        &gEfiCallerIdGuid,
> 
> +                                        VariableName,
> 
> +
> VARIABLE_POLICY_NO_MIN_SIZE,
> 
> +
> VARIABLE_POLICY_NO_MAX_SIZE,
> 
> +
> VARIABLE_POLICY_NO_MUST_ATTR,
> 
> +
> VARIABLE_POLICY_NO_CANT_ATTR,
> 
> +
> VARIABLE_POLICY_TYPE_LOCK_NOW);
> 
> +  if (EFI_ERROR (Status)) {
> 
> +    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.
> Status = %r\n",
> 
> +            mImageIdName,
> 
> +            &gEfiCallerIdGuid,
> 
> +            VariableName,
> 
> +            Status
> 
> +           ));
> 
>    }
> 
> -
> 
> -  DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s.
> Status = %r\n",
> 
> -    mImageIdName,
> 
> -    &gEfiCallerIdGuid,
> 
> -    VariableName,
> 
> -    Status
> 
> -    ));
> 
> -
> 
>    if (EFI_ERROR (PreviousStatus)) {
> 
>      return PreviousStatus;
> 
>    }
> 
> @@ -773,26 +774,22 @@ LockAllFmpVariables (
>    FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
> 
>    )
> 
>  {
> 
> -  EFI_STATUS                    Status;
> 
> -  EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
> 
> -
> 
> -  VariableLock = NULL;
> 
> -  Status = gBS->LocateProtocol (
> 
> -                  &gEdkiiVariableLockProtocolGuid,
> 
> -                  NULL,
> 
> -                  (VOID **)&VariableLock
> 
> -                  );
> 
> -  if (EFI_ERROR (Status) || VariableLock == NULL) {
> 
> -    DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to locate Variable Lock
> Protocol (%r).\n", mImageIdName, Status));
> 
> -    return EFI_UNSUPPORTED;
> 
> +  EFI_STATUS                        Status;
> 
> +  EDKII_VARIABLE_POLICY_PROTOCOL    *VariablePolicy;
> 
> +
> 
> +  // Locate the VariablePolicy protocol.
> 
> +  Status = gBS->LocateProtocol (&gEdkiiVariablePolicyProtocolGuid,
> + NULL,
> (VOID**)&VariablePolicy );
> 
> +  if (EFI_ERROR (Status)) {
> 
> +    DEBUG ((DEBUG_ERROR, "FmpDxe %a - Could not locate VariablePolicy
> protocol! %r\n", __FUNCTION__, Status));
> 
> +    return Status;
> 
>    }
> 
> 
> 
>    Status = EFI_SUCCESS;
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->VersionVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LsvVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LastAttemptStatusVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->LastAttemptVersionVariableName);
> 
> -  Status = LockFmpVariable (Status, VariableLock,
> Private->FmpStateVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->VersionVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LsvVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LastAttemptStatusVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->LastAttemptVersionVariableName);
> 
> +  Status = LockFmpVariable (Status, VariablePolicy,
> Private->FmpStateVariableName);
> 
> 
> 
>    return Status;
> 
>  }
> 
> --
> 2.26.2.windows.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#82246): 
> https://edk2.groups.io/g/devel/message/82246
> Mute This Topic: https://groups.io/mt/86407503/4905953
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [gaoliming@byosoft.com.cn]
> -=-=-=-=-=-=
> 










-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#82266): https://edk2.groups.io/g/devel/message/82266
Mute This Topic: https://groups.io/mt/86430867/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-