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.136; helo=mga12.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (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 D980F210D43A9 for ; Wed, 1 Aug 2018 16:29:28 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Aug 2018 16:29:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,433,1526367600"; d="scan'208";a="72579718" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.241.98.38]) by fmsmga002.fm.intel.com with ESMTP; 01 Aug 2018 16:29:28 -0700 From: "Kinney, Michael D" To: edk2-devel@lists.01.org Cc: Sean Brogan , Jiewen Yao , Star Zeng , Michael D Kinney Date: Wed, 1 Aug 2018 16:29:00 -0700 Message-Id: <20180801232923.18720-1-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.14.2.windows.3 Subject: [Patch v6 00/23] Add FmpDevicePkg X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Aug 2018 23:29:29 -0000 Changes in V6 ============= * Remove Bool PCD comparison against TRUE in BDS * Remove useless lib mapping in FmpDevicePkg DSC file * Fix XCODE build failure due to extra parenthesis Changes in V4/V5 ================= * Return 0 when LSV check is not required * Remove IPF * Add DISABLE_NEW_DEPRECATED_INTERFACES build options * Check Progress!= NULL before calling Progress(100) * Add EFI_ABORTED in retval of CheckTheImage() * Fix typo "EFI_SECURITY_VIOLATIO" * Add NULL check to return Value from GetVariable2 * Check ImageIndex first before Image/ImageSize * Use Attributes to know whether reset is required * Add comment in mFmpDeviceLocked's declaration * Return UNSUPPORTED if device has been locked * Initialize DeviceLibLowestSupportedVersion * Fix code style issue * Use local variable to store test key digest size 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 Further development and testing of FmpDevicePkg was performed at: https://github.com/tianocore/edk2-staging/tree/FmpDevicePkg-master https://github.com/tianocore/edk2-staging/tree/FmpDevicePkg-UDK2018 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 Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney Kinney, Michael D (5): FmpDevicePkg: Add package, library classes, and PCDs FmpDevicePkg: Add library instances FmpDevicePkg: Add FmpDxe module FmpDevicePkg: Add DSC file to build all package components MdeModulePkg/BdsDxe: Move display of test key usage into BDS module Star Zeng (16): FmpDevicePkg FmpDxe: Update function comment for FmpDxeEntryPoint FmpDevicePkg FmpDxe: Return 0 when LSV check is not required FmpDevicePkg: Remove IPF FmpDevicePkg: Add DISABLE_NEW_DEPRECATED_INTERFACES build options FmpDevicePkg FmpDxe: Check Progress!= NULL before calling Progress(100) FmpDevicePkg FmpDxe: Add EFI_ABORTED in retval of CheckTheImage() FmpDevicePkg FmpDxe: Fix typo "EFI_SECURITY_VIOLATIO" FmpDevicePkg: Remove DisplayUpdateProgressLib mapping for FmpDxe FmpDevicePkg FmpDxe: Add NULL check to return Value from GetVariable2 FmpDevicePkg FmpDxe: Check ImageIndex first before Image/ImageSize FmpDevicePkg FmpDxe: Use Attributes to know whether reset is required FmpDevicePkg FmpDxe: Add comment in mFmpDeviceLocked's declaration FmpDevicePkg FmpDxe: Return UNSUPPORTED if device has been locked FmpDevicePkg FmpDxe: Initialize DeviceLibLowestSupportedVersion FmpDevicePkg: Fix code style issue FmpDevicePkg FmpDxe: Use local variable to store test key digest size Zeng, Star (2): FmpDevicePkg/FmpDxe: Fix XCODE build failure FmpDevicePkg: Remove useless lib mapping in dsc FmpDevicePkg/FmpDevicePkg.dec | 125 ++ FmpDevicePkg/FmpDevicePkg.dsc | 114 ++ FmpDevicePkg/FmpDevicePkg.uni | 75 + FmpDevicePkg/FmpDevicePkgExtra.uni | 18 + FmpDevicePkg/FmpDxe/DetectTestKey.c | 168 +++ FmpDevicePkg/FmpDxe/FmpDxe.c | 1474 ++++++++++++++++++++ FmpDevicePkg/FmpDxe/FmpDxe.inf | 92 ++ FmpDevicePkg/FmpDxe/FmpDxe.uni | 20 + FmpDevicePkg/FmpDxe/FmpDxeExtra.uni | 18 + FmpDevicePkg/FmpDxe/FmpDxeLib.inf | 89 ++ 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 + MdeModulePkg/Universal/BdsDxe/BdsDxe.inf | 1 + MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 12 + 26 files changed, 4420 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