From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4001:c0b::243; helo=mail-it0-x243.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-it0-x243.google.com (mail-it0-x243.google.com [IPv6:2607:f8b0:4001:c0b::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 723F9222A335C for ; Wed, 24 Jan 2018 03:15:44 -0800 (PST) Received: by mail-it0-x243.google.com with SMTP id 196so4788867iti.5 for ; Wed, 24 Jan 2018 03:21:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=xILbweIK5RmQFvb7Or757HG6lVgpRKFT6rRvW17EUfU=; b=Fx2nrgdW/dZAn2fIKfzDmeB76/DaotdMyCQ2BBTFmuuDm4Kg5dxmHmboYHLnVC6zgD tVg2xfcrMp8zpym+XdB7aDNFtUV1XPSSi1E07XXB0WAjyxpH6mVZ7OzjBzoHsXK9hvHQ fMxVgROp1M76oQTT0twKgVOjYDtwXqDTY+jVM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=xILbweIK5RmQFvb7Or757HG6lVgpRKFT6rRvW17EUfU=; b=BEPwMCFXOxxipPN59wq3McAkjifAjkIVxNe+z1yi3zbDT6BZzun3cTiuSuKk7jzLXF 3bWb1i7oNV5qxDfidjUFkB+18PfnjOR3Uj1SxoxVtuA7tdSg5gcuZXLYIIzNPm6TQJ/6 S0AM1pukhbgHkGRa83I5aWwTc2KCU+wivPXvaAEHEjcvqL3S0Hgtx9xwan5Yytok1CYW Ar7D6AymEMqa+cYpxvMk+amHlqlMUBZHB/7mUwMusiL9T9n3+2K3VsmROYiMmJPocbOK kyAia2LBdi94MMMOjFU5bPkqkYb+tP3yVd+VT9uWyzNb/Xk+ieJBvW06+x2SHRkkyHVA +hLg== X-Gm-Message-State: AKwxytc1ReFX1+O+rG1kQKDpyD+dS1B7kfUyzZsDBBiN2souoIoYWA+H s2DZexDefqvJdftA1WCpm/xiZ47LmqPSZDxuws40pw== X-Google-Smtp-Source: AH8x224Cx/Ay2N39ra25oCtwHPD6xfzDzGiBm2Y10BFg0uq/QbrA8KLEm8vDXB01AL/j0Ae2SYEMrtZiXVcmI9ie6vU= X-Received: by 10.36.207.87 with SMTP id y84mr7706236itf.59.1516792871523; Wed, 24 Jan 2018 03:21:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.112.13 with HTTP; Wed, 24 Jan 2018 03:21:11 -0800 (PST) In-Reply-To: <856d5109-3a75-ddda-9c82-9b21a71b6e35@huawei.com> 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> From: Ard Biesheuvel Date: Wed, 24 Jan 2018 11:21:11 +0000 Message-ID: To: "Huangming (Mark)" Cc: Ming Huang , Leif Lindholm , linaro-uefi , "edk2-devel@lists.01.org" , Graeme Gregory , guoheyi@huawei.com, wanghuiqiang , Jason Zhang , Mengfanrong , waip23@126.com 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: Wed, 24 Jan 2018 11:15:45 -0000 Content-Type: text/plain; charset="UTF-8" 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.