From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.151; helo=mga17.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DB28220977890 for ; Tue, 29 May 2018 15:37:18 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 May 2018 15:37:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,458,1520924400"; d="scan'208";a="232962528" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.241.98.50]) by fmsmga006.fm.intel.com with ESMTP; 29 May 2018 15:37:17 -0700 From: Michael D Kinney To: edk2-devel@lists.01.org Cc: Sean Brogan , Jiewen Yao Date: Tue, 29 May 2018 15:37:11 -0700 Message-Id: <20180529223715.23896-1-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.14.2.windows.3 Subject: [RFC v3 0/4] Add FmpDevicePkg X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2018 22:37:19 -0000 https://bugzilla.tianocore.org/show_bug.cgi?id=922 Changes in V3 ============= * Change CheckLowestSupportedVersion() to LowestSupportedVersionCheckRequired() * Change LockFmpDeviceAtLockEventGuid() to LockFmpDeviceAtLockEventGuidRequired() * Set EDKII_FIRMWARE_MANAGEMENT_PROGRESS_PROTOCOL Version field to 1 * Fix description of return values in LowestSupportedVersionCheckRequired() * Fix description of return values in LockFmpDeviceAtLockEventGuidRequired() Changes in V2 ============= * FmpDevicePkg DEC file + Change PcdFmpDeviceSystemResetRequired from FeatureFlag to FixedAtBuild + Add PcdFmpDeviceTestKeySha256Digest for test key detection. Set to {0} to disable test key detection. * FmpDevicePkg DSC file + Fix ARM and AARCH64 build issues + Update DisplayUpdateProgressLib mappings to match patches in Bug_801_DisplayUpdateProgressLib_V2 * FmpDeviceLib Class and Instance + Update FmpDeviceGetSize() to return EFI_STATUS + Update FmpDeviceGetAttributes() to return EFI_STATUS + Update FmpDeviceGetVersionString() to return EFI_STATUS * FmpDxe + Set depex to Variable Arch Write Protocol and Variable Lock Protocol + Break out test key detection in FmpDxe into DetectTestKey.c + Change LockAllVars() to LockAllFmpVariables() + Update LockAllFmpVariables() to lock each of the UEFI variables used. + Always lock UEFI variables when PcdFmpDeviceLockEventGuid is signaled + Remove ComputeVersionName(). FmpDeviceLib must provide version string Based on content from the following branch: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport/MsCapsuleUpdatePkg Branch for review: https://github.com/mdkinney/edk2/tree/Bug_922_FmpDevicePkg_V2 This package provides an implementation of a Firmware Management Protocol instance that supports the update of firmware storage devices using UEFI Capsules. The behavior of the Firmware Management Protocol instance is customized using libraries and PCDs. Cc: Sean Brogan Cc: Jiewen Yao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney Kinney, Michael D (4): FmpDevicePkg: Add package, library classes, and PCDs FmpDevicePkg: Add library instances FmpDevicePkg: Add FmpDxe module FmpDevicePkg: Add DSC file to build all package components FmpDevicePkg/FmpDevicePkg.dec | 132 ++ FmpDevicePkg/FmpDevicePkg.dsc | 134 ++ FmpDevicePkg/FmpDevicePkg.uni | 80 ++ FmpDevicePkg/FmpDevicePkgExtra.uni | 18 + FmpDevicePkg/FmpDxe/DetectTestKey.c | 166 +++ FmpDevicePkg/FmpDxe/FmpDxe.c | 1452 ++++++++++++++++++++ FmpDevicePkg/FmpDxe/FmpDxe.inf | 93 ++ FmpDevicePkg/FmpDxe/FmpDxe.uni | 20 + FmpDevicePkg/FmpDxe/FmpDxeExtra.uni | 18 + FmpDevicePkg/FmpDxe/FmpDxeLib.inf | 90 ++ FmpDevicePkg/FmpDxe/VariableSupport.c | 461 +++++++ FmpDevicePkg/FmpDxe/VariableSupport.h | 180 +++ .../Include/Library/CapsuleUpdatePolicyLib.h | 120 ++ FmpDevicePkg/Include/Library/FmpDeviceLib.h | 405 ++++++ FmpDevicePkg/Include/Library/FmpPayloadHeaderLib.h | 100 ++ .../CapsuleUpdatePolicyLibNull.c | 136 ++ .../CapsuleUpdatePolicyLibNull.inf | 45 + .../CapsuleUpdatePolicyLibNull.uni | 17 + .../Library/FmpDeviceLibNull/FmpDeviceLib.c | 427 ++++++ .../Library/FmpDeviceLibNull/FmpDeviceLibNull.inf | 48 + .../Library/FmpDeviceLibNull/FmpDeviceLibNull.uni | 18 + .../FmpPayloadHeaderLibV1/FmpPayloadHeaderLib.c | 188 +++ .../FmpPayloadHeaderLibV1.inf | 48 + .../FmpPayloadHeaderLibV1.uni | 21 + 24 files changed, 4417 insertions(+) create mode 100644 FmpDevicePkg/FmpDevicePkg.dec create mode 100644 FmpDevicePkg/FmpDevicePkg.dsc create mode 100644 FmpDevicePkg/FmpDevicePkg.uni create mode 100644 FmpDevicePkg/FmpDevicePkgExtra.uni create mode 100644 FmpDevicePkg/FmpDxe/DetectTestKey.c create mode 100644 FmpDevicePkg/FmpDxe/FmpDxe.c create mode 100644 FmpDevicePkg/FmpDxe/FmpDxe.inf create mode 100644 FmpDevicePkg/FmpDxe/FmpDxe.uni create mode 100644 FmpDevicePkg/FmpDxe/FmpDxeExtra.uni create mode 100644 FmpDevicePkg/FmpDxe/FmpDxeLib.inf create mode 100644 FmpDevicePkg/FmpDxe/VariableSupport.c create mode 100644 FmpDevicePkg/FmpDxe/VariableSupport.h create mode 100644 FmpDevicePkg/Include/Library/CapsuleUpdatePolicyLib.h create mode 100644 FmpDevicePkg/Include/Library/FmpDeviceLib.h create mode 100644 FmpDevicePkg/Include/Library/FmpPayloadHeaderLib.h create mode 100644 FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleUpdatePolicyLibNull.c create mode 100644 FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleUpdatePolicyLibNull.inf create mode 100644 FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleUpdatePolicyLibNull.uni create mode 100644 FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLib.c create mode 100644 FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf create mode 100644 FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.uni create mode 100644 FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLib.c create mode 100644 FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf create mode 100644 FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.uni -- 2.14.2.windows.3