From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=45.249.212.35; helo=huawei.com; envelope-from=huangming23@huawei.com; receiver=edk2-devel@lists.01.org Received: from huawei.com (unknown [45.249.212.35]) (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 686A621E256BD for ; Wed, 24 Jan 2018 16:47:45 -0800 (PST) Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 502E647EBBE95; Thu, 25 Jan 2018 08:53:10 +0800 (CST) Received: from [127.0.0.1] (10.61.17.224) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.361.1; Thu, 25 Jan 2018 08:53:01 +0800 To: Ard Biesheuvel References: <1516287703-35516-1-git-send-email-huangming23@huawei.com> <1516287703-35516-5-git-send-email-huangming23@huawei.com> <856d5109-3a75-ddda-9c82-9b21a71b6e35@huawei.com> CC: Ming Huang , Leif Lindholm , linaro-uefi , "edk2-devel@lists.01.org" , Graeme Gregory , , wanghuiqiang , Jason Zhang , Mengfanrong , From: "Huangming (Mark)" Message-ID: <7d865fe4-9fc3-9869-9496-9a94e96813c9@huawei.com> Date: Thu, 25 Jan 2018 08:53:00 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: X-Originating-IP: [10.61.17.224] X-CFilter-Loop: Reflected Subject: Re: [PATCH edk2-platforms v1 04/14] Hisilicon D03/D05: Add capsule upgrade support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Jan 2018 00:47:47 -0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit On 2018/1/24 19:21, Ard Biesheuvel wrote: > On 24 January 2018 at 11:10, Huangming (Mark) wrote: >> >> >> On 2018/1/20 18:50, Ard Biesheuvel wrote: >>> On 18 January 2018 at 15:01, Ming Huang wrote: >>>> From: Jason Zhang >>>> >>>> Contributed-under: TianoCore Contribution Agreement 1.1 >>>> Signed-off-by: Jason Zhang >>>> Signed-off-by: Ming Huang >>>> Signed-off-by: Heyi Guo >>>> --- >>>> Platform/Hisilicon/D03/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini | 45 +++++++++ >>>> Platform/Hisilicon/D03/D03.dsc | 17 +++- >>>> Platform/Hisilicon/D03/D03.fdf | 70 +++++++++++++ >>>> Platform/Hisilicon/D05/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini | 45 +++++++++ >>>> Platform/Hisilicon/D05/D05.dsc | 19 +++- >>>> Platform/Hisilicon/D05/D05.fdf | 70 +++++++++++++ >>>> Silicon/Hisilicon/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc | 81 +++++++++++++++ >>>> Silicon/Hisilicon/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf | 50 +++++++++ >>>> Silicon/Hisilicon/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c | 70 +++++++++++++ >>>> Silicon/Hisilicon/Hisilicon.dsc.inc | 11 +- >>>> Silicon/Hisilicon/Hisilicon.fdf.inc | 9 ++ >>>> Silicon/Hisilicon/Library/PlatformFlashAccessLib/PlatformFlashAccessLibDxe.c | 106 ++++++++++++++++++++ >>>> Silicon/Hisilicon/Library/PlatformFlashAccessLib/PlatformFlashAccessLibDxe.inf | 51 ++++++++++ >>>> 13 files changed, 641 insertions(+), 3 deletions(-) >>>> >>> >>> Excellent!! Very happy to see this added. >>> >>>> diff --git a/Platform/Hisilicon/D03/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini b/Platform/Hisilicon/D03/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini >>>> new file mode 100644 >>>> index 0000000..fc834d9 >>>> --- /dev/null >>>> +++ b/Platform/Hisilicon/D03/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini >>>> @@ -0,0 +1,45 @@ >>>> +# >>>> +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. >>>> +# Copyright (c) 2018, Linaro Limited. All rights reserved. >>>> +# Copyright (c) 2016, Intel Corporation. All rights reserved.
>>>> +# >>>> +# This program and the accompanying materials >>>> +# are licensed and made available under the terms and conditions of the BSD License >>>> +# which accompanies this distribution. The full text of the license may be found at >>>> +# http://opensource.org/licenses/bsd-license.php >>>> +# >>>> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >>>> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >>>> +# >>>> +## >>>> + >>>> +[Head] >>>> +NumOfUpdate = 3 >>>> +NumOfRecovery = 0 >>>> +Update0 = SysFvMain >>>> +Update1 = SysCustom >>>> +Update2 = SysNvRam >>>> + >>>> +[SysFvMain] >>>> +FirmwareType = 0 # 0 - SystemFirmware, 1 - NvRam >>>> +AddressType = 0 # 0 - relative address, 1 - absolute address. >>>> +BaseAddress = 0x00000000 # Base address offset on flash >>>> +Length = 0x002D0000 # Length >>>> +ImageOffset = 0x00000000 # Image offset of this SystemFirmware image >>>> +FileGuid = 642e4fcf-2df7-4415-8b70-a03909c57b55 # PcdEdkiiSystemFirmwareFileGuid >>>> + >>>> +[SysCustom] >>>> +FirmwareType = 0 # 0 - SystemFirmware, 1 - NvRam >>>> +AddressType = 0 # 0 - relative address, 1 - absolute address. >>>> +BaseAddress = 0x002F0000 # Base address offset on flash >>>> +Length = 0x00010000 # Length >>>> +ImageOffset = 0x002F0000 # Image offset of this SystemFirmware image >>>> +FileGuid = 642e4fcf-2df7-4415-8b70-a03909c57b55 # PcdEdkiiSystemFirmwareFileGuid >>>> + >>>> +[SysNvRam] >>>> +FirmwareType = 1 # 0 - SystemFirmware, 1 - NvRam >>>> +AddressType = 0 # 0 - relative address, 1 - absolute address. >>>> +BaseAddress = 0x002D0000 # Base address offset on flash >>>> +Length = 0x00020000 # Length >>>> +ImageOffset = 0x002D0000 # Image offset of this SystemFirmware image >>>> +FileGuid = 642e4fcf-2df7-4415-8b70-a03909c57b55 # PcdEdkiiSystemFirmwareFileGuid >>>> diff --git a/Platform/Hisilicon/D03/D03.dsc b/Platform/Hisilicon/D03/D03.dsc >>>> index b2eae7d..69bc7b4 100644 >>>> --- a/Platform/Hisilicon/D03/D03.dsc >>>> +++ b/Platform/Hisilicon/D03/D03.dsc >>>> @@ -66,7 +66,6 @@ >>>> OemAddressMapLib|Platform/Hisilicon/D03/Library/OemAddressMap2P/OemAddressMap2PHi1610.inf >>>> PlatformSysCtrlLib|Silicon/Hisilicon/Hi1610/Library/PlatformSysCtrlLibHi1610/PlatformSysCtrlLibHi1610.inf >>>> >>>> - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf >>>> GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf >>>> PlatformBdsLib|Silicon/Hisilicon/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf >>>> !if $(GENERIC_BDS) == TRUE >>>> @@ -117,6 +116,11 @@ >>>> gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE >>>> gHisiTokenSpaceGuid.PcdIsItsSupported|TRUE >>>> >>>> +[PcdsDynamicExDefault.common.DEFAULT] >>>> + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100 >>>> + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x29, 0x3d, 0x4b, 0xd3, 0x85, 0x00, 0xb3, 0x4a, 0x8b, 0xe8, 0x84, 0x18, 0x8c, 0xc5, 0x04, 0x89} >>>> + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xcf, 0x4f, 0x2e, 0x64, 0xf7, 0x2d, 0x15, 0x44, 0x8b, 0x70, 0xa0, 0x39, 0x09, 0xc5, 0x7b, 0x55} >>>> + >>>> [PcdsFixedAtBuild.common] >>>> gArmPlatformTokenSpaceGuid.PcdCoreCount|8 >>>> >>>> @@ -310,6 +314,8 @@ >>>> Platform/Hisilicon/D03/EarlyConfigPeim/EarlyConfigPeimD03.inf >>>> Silicon/Hisilicon/Drivers/VersionInfoPeim/VersionInfoPeim.inf >>>> >>>> + Silicon/Hisilicon/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf >>>> + >>>> MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { >>>> >>>> NULL|IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf >>>> @@ -410,6 +416,9 @@ >>>> >>>> Platform/Hisilicon/D03/Drivers/Sas/SasDxeDriver.inf >>>> >>>> + SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf >>>> + MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf >>>> + >>>> # >>>> # FAT filesystem + GPT/MBR partitioning >>>> # >>>> @@ -483,6 +492,12 @@ >>>> !else >>>> IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf >>>> !endif >>>> + SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf { >>>> + >>>> + FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf >>>> + } >>>> + >>>> + MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf >>>> >>>> # >>>> # UEFI application (Shell Embedded Boot Loader) >>>> diff --git a/Platform/Hisilicon/D03/D03.fdf b/Platform/Hisilicon/D03/D03.fdf >>>> index 0d704b5..ffddd2d 100644 >>>> --- a/Platform/Hisilicon/D03/D03.fdf >>>> +++ b/Platform/Hisilicon/D03/D03.fdf >>>> @@ -275,6 +275,8 @@ READ_LOCK_STATUS = TRUE >>>> INF Platform/Hisilicon/D03/Drivers/SasPlatform/SasPlatform.inf >>>> INF Platform/Hisilicon/D03/Drivers/Sas/SasDxeDriver.inf >>>> >>>> + INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf >>>> + INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf >>>> # >>>> # Build Shell from latest source code instead of prebuilt binary >>>> # >>>> @@ -336,12 +338,80 @@ READ_LOCK_STATUS = TRUE >>>> >>>> INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf >>>> >>>> + INF RuleOverride = FMP_IMAGE_DESC Silicon/Hisilicon/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf >>>> + >>>> FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { >>>> SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { >>>> SECTION FV_IMAGE = FVMAIN >>>> } >>>> } >>>> >>>> +[FV.CapsuleDispatchFv] >>>> +FvAlignment = 16 >>>> +ERASE_POLARITY = 1 >>>> +MEMORY_MAPPED = TRUE >>>> +STICKY_WRITE = TRUE >>>> +LOCK_CAP = TRUE >>>> +LOCK_STATUS = TRUE >>>> +WRITE_DISABLED_CAP = TRUE >>>> +WRITE_ENABLED_CAP = TRUE >>>> +WRITE_STATUS = TRUE >>>> +WRITE_LOCK_CAP = TRUE >>>> +WRITE_LOCK_STATUS = TRUE >>>> +READ_DISABLED_CAP = TRUE >>>> +READ_ENABLED_CAP = TRUE >>>> +READ_STATUS = TRUE >>>> +READ_LOCK_CAP = TRUE >>>> +READ_LOCK_STATUS = TRUE >>>> + >>>> + INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf >>>> + >>>> +[FV.SystemFirmwareUpdateCargo] >>>> +FvAlignment = 16 >>>> +ERASE_POLARITY = 1 >>>> +MEMORY_MAPPED = TRUE >>>> +STICKY_WRITE = TRUE >>>> +LOCK_CAP = TRUE >>>> +LOCK_STATUS = TRUE >>>> +WRITE_DISABLED_CAP = TRUE >>>> +WRITE_ENABLED_CAP = TRUE >>>> +WRITE_STATUS = TRUE >>>> +WRITE_LOCK_CAP = TRUE >>>> +WRITE_LOCK_STATUS = TRUE >>>> +READ_DISABLED_CAP = TRUE >>>> +READ_ENABLED_CAP = TRUE >>>> +READ_STATUS = TRUE >>>> +READ_LOCK_CAP = TRUE >>>> +READ_LOCK_STATUS = TRUE >>>> + >>>> + FILE RAW = 642e4fcf-2df7-4415-8b70-a03909c57b55 { # PcdEdkiiSystemFirmwareFileGuid >>>> + FD = D03 >>>> + } >>>> + >>>> + FILE RAW = ce57b167-b0e4-41e8-a897-5f4feb781d40 { # gEdkiiSystemFmpCapsuleDriverFvFileGuid >>>> + FV = CapsuleDispatchFv >>>> + } >>>> + >>>> + FILE RAW = 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsuleConfigFileGuid >>>> + Platform/Hisilicon/D03/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini >>>> + } >>>> + >>>> +[FmpPayload.FmpPayloadSystemFirmwarePkcs7] >>>> +IMAGE_HEADER_INIT_VERSION = 0x02 >>>> +IMAGE_TYPE_ID = d34b3d29-0085-4ab3-8be8-84188cc50489 # PcdSystemFmpCapsuleImageTypeIdGuid >>> >>> Use a fresh GUID here, and make sure you use a different one for D03/D05 etc. >>> >>> This is what identifies the platform when using fwupdmgr etc. >>> >>> >> >> IMAGE_TYPE_ID in D0x.fdf is need to equal to IMAGE_TYPE_ID_GUID in >> Silicon/Hisilicon/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc, >> so D0x is used the same guid. > > No. Instead, you need a different version of > SystemFirmwareDescriptor.aslc for D03 and D05, and use different GUIDs > for each. > > . > OK,I will move the SystemFirmwareDescriptor from Silicon/Hisilicon/Drivers/ to Platform/Hisilicon/D03/Drivers/and Platform/Hisilicon/D05/Drivers/. and use different guids for each. Thanks. -- Best Regards, Ming