From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=2607:f8b0:4001:c06::244; helo=mail-io0-x244.google.com; envelope-from=mw@semihalf.com; receiver=edk2-devel@lists.01.org Received: from mail-io0-x244.google.com (mail-io0-x244.google.com [IPv6:2607:f8b0:4001:c06::244]) (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 E20D2207DF298 for ; Mon, 4 Jun 2018 04:44:30 -0700 (PDT) Received: by mail-io0-x244.google.com with SMTP id l19-v6so27834504ioj.5 for ; Mon, 04 Jun 2018 04:44:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=3kpm9oQmiMysGlOmZLyFY+OM7FJzIw3rZk79H7ZnYtA=; b=l1vuTzIJa8u+hKQ9wlbbtEcQabyuPXPPszI7tcq6ageezS868YDhFXaRMmuVsRp2qx os1PgBEDdGiYcfSB1HA/lk2BwzCj9rrHW6vqGGZUoLTnzseVjJBZkS8IE1k8FvEWaHeb ZXiadxJIPuGpB3vEuc4vcGG4zr/FbZgoDggG0tOasNVjA87OhCvo+WddlRUBihiYdatQ T4xFjB0HyJRjIbl59bBcXr63xqp25FvxEJ+TusAFpathci8yxE44Ser8u+Fb8ChGd1RS Bqu7pzLDIGPvO3uo3FmOuBO90oj9uRt2hvIZhO06pmh+Xur8i6/L2h8Ra2SpJ1nQwySO uRSA== 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=3kpm9oQmiMysGlOmZLyFY+OM7FJzIw3rZk79H7ZnYtA=; b=j2IHhMiSumWnxX32QT6/dYTNFKTdmQ8yn8ehtRJyWffoPS0vjnBGiQ4gfyK8aNJvvg ooQcR6ALY8QaD6eRX23zsEVTh1Hkts8oNDy+5W//AVGIbb3wZK2uGGLV3EZ/XtuT9OBf //3snVHN5kkutK0F4Gnf4v7sapfGe4M5PSCYErItvkSS2V8RW4HFaNBMdX8IzhJsi0Qi 3YhWaHjdy3qQAaZ3FElPK2qp7HI1HF0O/LFEoevQZ6Fsy/DilNi48uYSXvewd7UxLHco mPvTox8o6qxXZgrls3z/w8sxzxQ4awiQW8fQ/sONqjMKpeDL8awlerp9ZXNEuJcw/4Qc r4sw== X-Gm-Message-State: APt69E2NleIUzIzRx1whHvJqAGJwMWTH/v18+riQ3NBPt3NTBoGPI/mx KqRCR2q/DXVFInzD1TTy30+FAxdOj6nBLbZdyLMXaw== X-Google-Smtp-Source: ADUXVKK9yt62GCQMv/oLBYBv3UPqY5Y5TC4X39ntCJ+TQsYKO+lWS1addJouJB9ikMAHBMns2JfjiG27X4TVkl4KI4c= X-Received: by 2002:a6b:8e96:: with SMTP id q144-v6mr20686405iod.248.1528112669726; Mon, 04 Jun 2018 04:44:29 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a6b:c6cc:0:0:0:0:0 with HTTP; Mon, 4 Jun 2018 04:44:29 -0700 (PDT) In-Reply-To: <20180604100817.2of3p2bbxairankc@bivouac.eciton.net> References: <1528090175-15791-1-git-send-email-mw@semihalf.com> <1528090175-15791-6-git-send-email-mw@semihalf.com> <20180604100817.2of3p2bbxairankc@bivouac.eciton.net> From: Marcin Wojtas Date: Mon, 4 Jun 2018 13:44:29 +0200 Message-ID: To: Leif Lindholm Cc: edk2-devel-01 , Ard Biesheuvel , semihalf-dabros-jan , Hua Jing , Grzegorz Jaszczyk , David Sniatkiwicz Subject: Re: [platforms PATCH v2 5/5] Marvell/Armada7k8k: Wire up capsule support 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: Mon, 04 Jun 2018 11:44:31 -0000 Content-Type: text/plain; charset="UTF-8" Hi Leif, 2018-06-04 12:08 GMT+02:00 Leif Lindholm : > > On Mon, Jun 04, 2018 at 07:29:35AM +0200, Marcin Wojtas wrote: > > All required components are in place, so we can now > > add all necessary dependencies to build and use capsule support > > for Armada7k8k platforms. It is conditionally enabled > > with '-D CAPSULE_ENABLE' flag added during build time. > > > > Because the capsule generation must be sequential, > > due to boot requirements and glueing all binaries > > (BLE, ARM-TF, BL33) externally, introduce additional > > .dsc and .fdf file solely for creating the capsule. > > Prior to this step 'flash-image.bin' binary must be placed > > under Platform/Marvell path. > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Marcin Wojtas > > Signed-off-by: David Sniatkiwicz > > --- > > Platform/Marvell/Armada70x0Db/Armada70x0Db.fdf | 66 ++++++++++++++++++ > > Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.dsc | 46 +++++++++++++ > > Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.fdf | 70 ++++++++++++++++++++ > > Silicon/Marvell/Armada7k8k/Armada7k8k.dsc.inc | 41 ++++++++++++ > > 4 files changed, 223 insertions(+) > > > > diff --git a/Platform/Marvell/Armada70x0Db/Armada70x0Db.fdf b/Platform/Marvell/Armada70x0Db/Armada70x0Db.fdf > > index bf04f4d..e5e5443 100644 > > --- a/Platform/Marvell/Armada70x0Db/Armada70x0Db.fdf > > +++ b/Platform/Marvell/Armada70x0Db/Armada70x0Db.fdf > > @@ -201,6 +201,15 @@ FvNameGuid = 5eda4200-2c5f-43cb-9da3-0baf74b1b30c > > INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf > > INF MdeModulePkg/Application/UiApp/UiApp.inf > > > > +!if $(CAPSULE_ENABLE) > > + # Firmware update > > + INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf > > + INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf > > + FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiPkcs7TestPublicKeyFileGuid) { > > + SECTION RAW = BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer > > + SECTION UI = "Pkcs7TestRoot" > > + } > > +!endif > > > > # PEI phase firmware volume > > [FV.FVMAIN_COMPACT] > > @@ -228,6 +237,11 @@ READ_LOCK_STATUS = TRUE > > INF ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf > > INF ArmPkg/Drivers/CpuPei/CpuPei.inf > > INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf > > +!if $(CAPSULE_ENABLE) > > + INF MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf > > + INF MdeModulePkg/Universal/CapsulePei/CapsulePei.inf > > + INF RuleOverride = FMP_IMAGE_DESC Silicon/Marvell/Armada7k8k/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf > > +!endif > > INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > > > FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { > > @@ -236,6 +250,49 @@ READ_LOCK_STATUS = TRUE > > } > > } > > > > +!if $(CAPSULE_ENABLE) > > +[FV.SystemFirmwareDescriptor] > > +FvAlignment = 8 > > +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 RuleOverride = FMP_IMAGE_DESC Silicon/Marvell/Armada7k8k/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf > > + > > +[FV.CapsuleDispatchFv] > > +FvAlignment = 8 > > +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 > > + > > +!endif > > + > > ################################################################################ > > # > > # Rules are use with the [FV] section's module INF type to define > > @@ -331,3 +388,12 @@ READ_LOCK_STATUS = TRUE > > UI STRING ="$(MODULE_NAME)" Optional > > PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi > > } > > + > > +[Rule.Common.PEIM.FMP_IMAGE_DESC] > > + FILE PEIM = $(NAMED_GUID) { > > + RAW BIN |.acpi > > + PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex > > + PE32 PE32 Align=4K $(INF_OUTPUT)/$(MODULE_NAME).efi > > + UI STRING="$(MODULE_NAME)" Optional > > + VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) > > + } > > diff --git a/Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.dsc b/Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.dsc > > new file mode 100644 > > index 0000000..a7d1382 > > --- /dev/null > > +++ b/Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.dsc > > @@ -0,0 +1,46 @@ > > +#Copyright (C) 2018 Marvell International Ltd. > > +# > > +#Marvell BSD License Option > > +# > > +#If you received this File from Marvell, you may opt to use, redistribute and/or > > +#modify this File under the following licensing terms. > > +#Redistribution and use in source and binary forms, with or without modification, > > +#are permitted provided that the following conditions are met: > > +# > > +# * Redistributions of source code must retain the above copyright notice, > > +# this list of conditions and the following disclaimer. > > +# > > +# * Redistributions in binary form must reproduce the above copyright > > +# notice, this list of conditions and the following disclaimer in the > > +# documentation and/or other materials provided with the distribution. > > +# > > +# * Neither the name of Marvell nor the names of its contributors may be > > +# used to endorse or promote products derived from this software without > > +# specific prior written permission. > > +# > > +#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND > > +#ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED > > +#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > > +#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR > > +#ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > > +#(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; > > +#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON > > +#ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > > +#(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS > > +#SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > > +# > > +################################################################################ > > +# > > +# Defines Section - statements that will be processed to create a Makefile. > > +# > > +################################################################################ > > +[Defines] > > + PLATFORM_NAME = Armada70x0Db > > + PLATFORM_GUID = 982e2ab1-26ca-4617-92e6-061bd6ba9ae3 > > + PLATFORM_VERSION = 0.1 > > + DSC_SPECIFICATION = 0x00010019 > > + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME)-$(ARCH) > > + SUPPORTED_ARCHITECTURES = AARCH64|ARM > > + BUILD_TARGETS = DEBUG|RELEASE > > + SKUID_IDENTIFIER = DEFAULT > > + FLASH_DEFINITION = Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.fdf > > diff --git a/Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.fdf b/Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.fdf > > new file mode 100644 > > index 0000000..e5a9c68 > > --- /dev/null > > +++ b/Platform/Marvell/Armada70x0Db/Armada70x0DbCapsule.fdf > > @@ -0,0 +1,70 @@ > > +# > > +# Copyright (C) Marvell International Ltd. and its affiliates > > +# > > +# 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. > > +# > > + > > +[FD.Armada_Capsule] > > +BaseAddress = 0x00000000 #|gArmTokenSpaceGuid.PcdFdBaseAddress # The base address of the Firmware in NOR Flash. > > +Size = 0x00400000 #|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device > > +ErasePolarity = 1 > > + > > +0x00000000|0x00010000 > > +FILE = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREDESCRIPTOR.Fv > > + > > +0x00100000|0x00300000 > > +FILE = Platform/Marvell/flash-image.bin > > So, I'm happy with everything in this set other than the line above. > (You can take this as Reviewed-by: Leif Lindholm > for 1-4/5.) > > Mandating magic copying into the source tree of special binaries (that > can then not be used to build separate DEBUG/RELEASE images in one > session without deleting them in the meantime) is out. > > When I integrated arm-tf build support into uefi-tools, I did the > following, to allow the build artefacts to all reside within the Build > directory: > https://git.linaro.org/uefi/uefi-tools.git/tree/atf-build.sh#n201 > > Ard hates this, because it makes assumptions about the internals of > the EDK2 build environment not overriding things in Conf/target.txt > (which is admittedly valid when then turning edk2 back into a consumer > of the output - the above was only ever used for publishing purposes). > > His preference is replacing the "Platform/Marvell/" bit with a -D > option to tell the build system in which directory to look for the > file. I could go along with that. > > So the question remaining is what do we call the option? > Since this situation is likely to reappear for other platforms, let's > keep it generic. ARM_TRUSTED_FIRMWARE_IMAGE_PREFIX or suchlike. > Sure, I think -D ARM_TRUSTED_FIRMWARE_IMAGE_PREFIX= would work. Also after internal review I was asked for a change - how about making a common Armada7k8kCapsule.dsc / .fdf and simply pick the platform with -D PLATFORM_NAME option? Thanks, Marcin