From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 92403C433EF for ; Thu, 24 Mar 2022 14:40:27 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A3194840AB; Thu, 24 Mar 2022 15:40:24 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="K2qWBVV1"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 479F483BA1; Thu, 24 Mar 2022 15:40:22 +0100 (CET) Received: from mail-qk1-x72b.google.com (mail-qk1-x72b.google.com [IPv6:2607:f8b0:4864:20::72b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6438983BA1 for ; Thu, 24 Mar 2022 15:40:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sughosh.ganu@linaro.org Received: by mail-qk1-x72b.google.com with SMTP id i65so3645656qkd.7 for ; Thu, 24 Mar 2022 07:40:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=VYsBswiR9b5HkJ4eDf8DrLmlFHcZbydGkIVoKkV+Mf4=; b=K2qWBVV1UDJjvPkmu0kGqvGHY3BkRyUv7axITu4TdLgSPa+7OCfpG6DR6vEDnhzhqS tJxc1Hy9gpQ/A5VcaXY6xf2emZy+erp1zqwOV06Fnppbm/TPQ1RsThsSi5zWL+oHRc4/ UUmzP/4GumPk2WYdVMw+mH0UYNGez+wp3oFjP8b6Qyes4H752+51k6amNZu1xxt6dDGt Pa+WdSmBWO17SnpKtB0O6OFfYw/rjet7+ylUCveTHtjSURiZuVKBYevG9JX/wabk4Vax 6QvlEKimCmUiEkmIKZZYH93FtoZDoqoj9D7UXMWX6xFCJXCpo0AiB5VId6WNRJWswP2J J2EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=VYsBswiR9b5HkJ4eDf8DrLmlFHcZbydGkIVoKkV+Mf4=; b=ftzDRqeFaDSys0kVsvv1UtA4DAH7u/xbD2klBuA4iLpUe18okNIw31eZ8S+mF89Y/U We+oZqFeDbZZsiyplM0KBgNqw4rkwoqf2iYxcH/eE0fMhIROYJ9C7fdM79sU7pQLrzvi 6EvutHqBNiVCBYtaQkPOvEXw7vstYm6wzsFTu3wmBQ1kLWmgA3ghlOBZRGoVEvsRnKJ7 HEtrj3tONj8qp3qOdhexqPUhqbj7rE4a56MFsFK5xZKsu67qP1NimUsFC61PH0ckxqI1 0RC+hv6nJguqlhe92HvOC82UcgX87TTtM3YQ+ZojU7Og63RSFOx1HHOjkpQ7mQQ2v1s6 UXMg== X-Gm-Message-State: AOAM531EQi7AtHLYABVb/RZfCveephG9efBnEfZl/iZ4pJaOwde3DPAn TlPhOfsJKoKobFmJvDQy6kZLwPZW+x73yrNuHVjzvw== X-Google-Smtp-Source: ABdhPJz1mSnuHLKh7STzR93jBQV8rLa0+6u/NrISh2vZB6eHLPP8n9lltC1Bjt0CvqzeX/9RXg/7qfP3YvmvRYqAnRk= X-Received: by 2002:a05:620a:2892:b0:67e:be24:e5d7 with SMTP id j18-20020a05620a289200b0067ebe24e5d7mr3511628qkp.762.1648132815781; Thu, 24 Mar 2022 07:40:15 -0700 (PDT) MIME-Version: 1.0 References: <20220324123901.429472-1-sughosh.ganu@linaro.org> <20220324123901.429472-2-sughosh.ganu@linaro.org> In-Reply-To: From: Sughosh Ganu Date: Thu, 24 Mar 2022 20:10:04 +0530 Message-ID: Subject: Re: [RFC PATCH 1/6] capsule: Add Image GUIDs for platforms using capsule updates To: Masami Hiramatsu Cc: u-boot@lists.denx.de, Heinrich Schuchardt , Ilias Apalodimas , AKASHI Takahiro , Ying-Chun Liu , Tuomas Tynkkynen , Heiko Thiery , Frieder Schrempf , Michael Walle , Jassi Brar , Michal Simek , Michal Simek Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean hi Masami, On Thu, 24 Mar 2022 at 19:14, Masami Hiramatsu wrote: > > Hi Sughosh, > > 2022=E5=B9=B43=E6=9C=8824=E6=97=A5(=E6=9C=A8) 21:39 Sughosh Ganu : > > > > Currently, all platforms that enable capsule updates do so using > > either EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID or > > EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID. This is based on the Firmware > > Management Protocol(FMP) instance used on the platform. However, this > > means that all platforms that enable a particular FMP instance have > > the same GUID value for all the updatable images, either the FIT image > > GUID or the raw image GUID, and that an image for some platform can be > > updated on any other platform which uses the same FMP instance. Another > > issue with this implementation is that the ESRT table shows the same > > GUID value for all images on the platform and also across platforms, > > which is not in compliance with the UEFI specification. > > > > Fix this by defining image GUID values and firmware names for > > individual images per platform. The GetImageInfo FMP hook would then > > populate these values in the image descriptor array. > > OK, so you have generated GUIDs for each "dfu_alt_info" entry on the > platforms, correct? No, I have generated the fw_images array based on the information that I found in the dfu_alt_info variable for the platform. But this is not correlated to the dfu_alt_info variable. If you think that the array should have more/different entries for your platform, please let me know, and I will change it. > I think you should explain that those GUIDs (fw_images[] entries) must > be corresponding to the dfu_alt_info entries, in the same order. The dfu_alt_info can have more entries than the firmware images that are updatable through capsule update. One example is the ST platforms which have additional entries in the dfu_alt_info. The image descriptor array should only contain entries of images which are updatable through capsule update, since the same information is also used for generating the ESRT. Which is why I have changed the logic to populate the image descriptors through the fw_images array rather than the dfu_alt_info. -sughosh > Without that, it is hard to understand why the next patch ([2/6]) works := -) > > Thank you, > > > > > Signed-off-by: Sughosh Ganu > > --- > > .../imx8mp_rsb3720a1/imx8mp_rsb3720a1.c | 19 +++++++++++++++ > > .../imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c | 18 +++++++++++++++ > > board/emulation/qemu-arm/qemu-arm.c | 20 ++++++++++++++++ > > board/kontron/pitx_imx8m/pitx_imx8m.c | 15 +++++++++++- > > board/kontron/sl-mx8mm/sl-mx8mm.c | 14 +++++++++++ > > board/kontron/sl28/sl28.c | 14 +++++++++++ > > board/sandbox/sandbox.c | 17 ++++++++++++++ > > board/socionext/developerbox/developerbox.c | 23 +++++++++++++++++++ > > board/xilinx/common/board.h | 18 +++++++++++++++ > > board/xilinx/zynq/board.c | 18 +++++++++++++++ > > board/xilinx/zynqmp/zynqmp.c | 18 +++++++++++++++ > > include/configs/imx8mm-cl-iot-gate.h | 10 ++++++++ > > include/configs/imx8mp_rsb3720.h | 10 ++++++++ > > include/configs/kontron-sl-mx8mm.h | 6 +++++ > > include/configs/kontron_pitx_imx8m.h | 6 +++++ > > include/configs/kontron_sl28.h | 6 +++++ > > include/configs/qemu-arm.h | 10 ++++++++ > > include/configs/sandbox.h | 10 ++++++++ > > include/configs/synquacer.h | 14 +++++++++++ > > include/efi_loader.h | 15 ++++++++++++ > > 20 files changed, 280 insertions(+), 1 deletion(-) > > > > diff --git a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c b/boar= d/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c > > index 16566092bd..6b534660fe 100644 > > --- a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c > > +++ b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c > > @@ -6,6 +6,8 @@ > > > > #include > > #include > > +#include > > +#include > > #include > > #include > > #include > > @@ -21,6 +23,7 @@ > > #include > > #include > > #include > > +#include > > #include > > > > DECLARE_GLOBAL_DATA_PTR; > > @@ -44,6 +47,22 @@ static void setup_gpmi_nand(void) > > } > > #endif > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > +#if defined(CONFIG_TARGET_IMX8MP_RSB3720A1_4G) > > + .image_type_id =3D IMX8MP_RSB3720A1_4G_FIT_IMAGE_GUID, > > +#elif defined(CONFIG_TARGET_IMX8MP_RSB3720A1_6G) > > + .image_type_id =3D IMX8MP_RSB3720A1_6G_FIT_IMAGE_GUID, > > +#endif > > + .fw_name =3D u"IMX8MP-RSB3720-FIT" > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > + > > int board_early_init_f(void) > > { > > struct wdog_regs *wdog =3D (struct wdog_regs *)WDOG1_BASE_ADDR; > > diff --git a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c b/b= oard/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c > > index 7e2d88f449..ec73d75db3 100644 > > --- a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c > > +++ b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c > > @@ -5,6 +5,8 @@ > > */ > > > > #include > > +#include > > +#include > > #include > > #include > > #include > > @@ -21,11 +23,27 @@ > > #include > > #include > > #include > > +#include > > > > #include "ddr/ddr.h" > > > > DECLARE_GLOBAL_DATA_PTR; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > +#if defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) > > + .image_type_id =3D IMX8MM_CL_IOT_GATE_FIT_IMAGE_GUID, > > +#elif defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE) > > + .image_type_id =3D IMX8MM_CL_IOT_GATE_OPTEE_FIT_IMAGE_G= UID, > > +#endif > > + .fw_name =3D u"IMX8MM-CL-IOT-GATE-FIT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > int board_phys_sdram_size(phys_size_t *size) > > { > > struct lpddr4_tcm_desc *lpddr4_tcm_desc =3D > > diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu= -arm/qemu-arm.c > > index 16d5a97167..99872ce0b8 100644 > > --- a/board/emulation/qemu-arm/qemu-arm.c > > +++ b/board/emulation/qemu-arm/qemu-arm.c > > @@ -6,15 +6,35 @@ > > #include > > #include > > #include > > +#include > > +#include > > +#include > > #include > > #include > > #include > > #include > > #include > > > > +#include > > + > > #ifdef CONFIG_ARM64 > > #include > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > +#if defined(CONFIG_TARGET_QEMU_ARM_32BIT) > > + .image_type_id =3D QEMU_ARM_UBOOT_IMAGE_GUID, > > +#elif defined(CONFIG_TARGET_QEMU_ARM_64BIT) > > + .image_type_id =3D QEMU_ARM64_UBOOT_IMAGE_GUID, > > +#endif > > + .fw_name =3D u"Qemu-Arm-UBOOT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > static struct mm_region qemu_arm64_mem_map[] =3D { > > { > > /* Flash */ > > diff --git a/board/kontron/pitx_imx8m/pitx_imx8m.c b/board/kontron/pitx= _imx8m/pitx_imx8m.c > > index d655fe099b..c3af951b14 100644 > > --- a/board/kontron/pitx_imx8m/pitx_imx8m.c > > +++ b/board/kontron/pitx_imx8m/pitx_imx8m.c > > @@ -2,6 +2,8 @@ > > > > #include "pitx_misc.h" > > #include > > +#include > > +#include > > #include > > #include > > #include > > @@ -12,7 +14,7 @@ > > #include > > #include > > #include > > - > > +#include > > > > DECLARE_GLOBAL_DATA_PTR; > > > > @@ -30,6 +32,17 @@ static iomux_v3_cfg_t const uart_pads[] =3D { > > IMX8MQ_PAD_ECSPI1_MISO__UART3_CTS_B | MUX_PAD_CTRL(UART_PAD_CTR= L), > > }; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D KONTRON_PITX_IMX8M_FIT_IMAGE_GUID, > > + .fw_name =3D u"KONTRON-PITX-IMX8M-UBOOT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > int board_early_init_f(void) > > { > > struct wdog_regs *wdog =3D (struct wdog_regs *)WDOG1_BASE_ADDR; > > diff --git a/board/kontron/sl-mx8mm/sl-mx8mm.c b/board/kontron/sl-mx8mm= /sl-mx8mm.c > > index 48376cb826..4d25618895 100644 > > --- a/board/kontron/sl-mx8mm/sl-mx8mm.c > > +++ b/board/kontron/sl-mx8mm/sl-mx8mm.c > > @@ -6,12 +6,26 @@ > > #include > > #include > > #include > > +#include > > +#include > > #include > > #include > > +#include > > #include > > > > DECLARE_GLOBAL_DATA_PTR; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D KONTRON_SL_MX8MM_FIT_IMAGE_GUID, > > + .fw_name =3D u"KONTROL-SL-MX8MM-UBOOT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > int board_phys_sdram_size(phys_size_t *size) > > { > > u32 ddr_size =3D readl(M4_BOOTROM_BASE_ADDR); > > diff --git a/board/kontron/sl28/sl28.c b/board/kontron/sl28/sl28.c > > index 3c48a9141d..a4985df4ea 100644 > > --- a/board/kontron/sl28/sl28.c > > +++ b/board/kontron/sl28/sl28.c > > @@ -3,11 +3,14 @@ > > #include > > #include > > #include > > +#include > > +#include > > #include > > #include > > #include > > #include > > #include > > +#include > > #include > > #include > > #include > > @@ -23,6 +26,17 @@ > > > > DECLARE_GLOBAL_DATA_PTR; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D KONTRON_SL28_FIT_IMAGE_GUID, > > + .fw_name =3D u"KONTRON-SL28-FIT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > int board_early_init_f(void) > > { > > fsl_lsch3_early_init_f(); > > diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c > > index 5d9a945d64..8b0f3de1ea 100644 > > --- a/board/sandbox/sandbox.c > > +++ b/board/sandbox/sandbox.c > > @@ -7,6 +7,8 @@ > > #include > > #include > > #include > > +#include > > +#include > > #include > > #include > > #include > > @@ -25,6 +27,21 @@ > > */ > > gd_t *gd; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D SANDBOX_UBOOT_IMAGE_GUID, > > + .fw_name =3D u"SANDBOX-UBOOT", > > + }, > > + { > > + .image_type_id =3D SANDBOX_UBOOT_ENV_IMAGE_GUID, > > + .fw_name =3D u"SANDBOX-UBOOT-ENV", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > #if !CONFIG_IS_ENABLED(OF_PLATDATA) > > /* > > * Add a simple GPIO device (don't use with of-platdata as it interfer= es with > > diff --git a/board/socionext/developerbox/developerbox.c b/board/socion= ext/developerbox/developerbox.c > > index 9552bfcdc3..4df26f4019 100644 > > --- a/board/socionext/developerbox/developerbox.c > > +++ b/board/socionext/developerbox/developerbox.c > > @@ -10,10 +10,33 @@ > > #include > > #include > > #include > > +#include > > +#include > > #include > > #include > > #include > > > > +#include > > + > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D DEVELOPERBOX_UBOOT_IMAGE_GUID, > > + .fw_name =3D u"DEVELOPERBOX-UBOOT", > > + }, > > + { > > + .image_type_id =3D DEVELOPERBOX_FIP_IMAGE_GUID, > > + .fw_name =3D u"DEVELOPERBOX-FIP", > > + }, > > + { > > + .image_type_id =3D DEVELOPERBOX_OPTEE_IMAGE_GUID, > > + .fw_name =3D u"DEVELOPERBOX-OPTEE", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > static struct mm_region sc2a11_mem_map[] =3D { > > { > > .virt =3D 0x0UL, > > diff --git a/board/xilinx/common/board.h b/board/xilinx/common/board.h > > index 69e642429b..9bcac14946 100644 > > --- a/board/xilinx/common/board.h > > +++ b/board/xilinx/common/board.h > > @@ -7,6 +7,24 @@ > > #ifndef _BOARD_XILINX_COMMON_BOARD_H > > #define _BOARD_XILINX_COMMON_BOARD_H > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define ZYNQ_BOOT_IMAGE_GUID \ > > + EFI_GUID(0x1ba29a15, 0x9969, 0x40aa, 0xb4, 0x24, \ > > + 0xe8, 0x61, 0x21, 0x61, 0x86, 0x64) > > + > > +#define ZYNQ_UBOOT_IMAGE_GUID \ > > + EFI_GUID(0x1a5178f0, 0x87d3, 0x4f36, 0xac, 0x63, \ > > + 0x3b, 0x31, 0xa2, 0x3b, 0xe3, 0x05) > > + > > +#define ZYNQMP_BOOT_IMAGE_GUID \ > > + EFI_GUID(0xde6066e8, 0x0256, 0x4fad, 0x82, 0x38, \ > > + 0xe4, 0x06, 0xe2, 0x74, 0xc4, 0xcf) > > + > > +#define ZYNQMP_UBOOT_IMAGE_GUID \ > > + EFI_GUID(0xcf9ecfd4, 0x938b, 0x41c5, 0x85, 0x51, \ > > + 0x1f, 0x88, 0x3a, 0xb7, 0xdc, 0x18) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > int board_late_init_xilinx(void); > > > > int xilinx_read_eeprom(void); > > diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c > > index 26ef048835..0aa51a3e6d 100644 > > --- a/board/xilinx/zynq/board.c > > +++ b/board/xilinx/zynq/board.c > > @@ -8,6 +8,8 @@ > > #include > > #include > > #include > > +#include > > +#include > > #include > > #include > > #include > > @@ -21,10 +23,26 @@ > > #include > > #include > > #include > > +#include > > #include "../common/board.h" > > > > DECLARE_GLOBAL_DATA_PTR; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D ZYNQ_BOOT_IMAGE_GUID, > > + .fw_name =3D u"ZYNQ-BOOT-IMAGE", > > + }, > > + { > > + .image_type_id =3D ZYNQ_UBOOT_IMAGE_GUID, > > + .fw_name =3D u"ZYNQ-UBOOT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_DEBUG_UART_BOARD_INIT= ) > > void board_debug_uart_init(void) > > { > > diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.= c > > index 70b3c81f12..b232f7ac4f 100644 > > --- a/board/xilinx/zynqmp/zynqmp.c > > +++ b/board/xilinx/zynqmp/zynqmp.c > > @@ -9,6 +9,8 @@ > > #include > > #include > > #include > > +#include > > +#include > > #include > > #include > > #include > > @@ -40,6 +42,7 @@ > > #include > > #include > > #include > > +#include > > #include "../common/board.h" > > > > #include "pm_cfg_obj.h" > > @@ -54,6 +57,21 @@ > > > > DECLARE_GLOBAL_DATA_PTR; > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +struct efi_fw_images fw_images[] =3D { > > + { > > + .image_type_id =3D ZYNQMP_BOOT_IMAGE_GUID, > > + .fw_name =3D u"ZYNQMP-BOOT-IMAGE", > > + }, > > + { > > + .image_type_id =3D ZYNQMP_UBOOT_IMAGE_GUID, > > + .fw_name =3D u"ZYNQMP-UBOOT", > > + }, > > +}; > > + > > +u8 num_image_type_guids =3D ARRAY_SIZE(fw_images); > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > #if CONFIG_IS_ENABLED(FPGA) && defined(CONFIG_FPGA_ZYNQMPPL) > > static xilinx_desc zynqmppl =3D XILINX_ZYNQMP_DESC; > > > > diff --git a/include/configs/imx8mm-cl-iot-gate.h b/include/configs/imx= 8mm-cl-iot-gate.h > > index 7e6be6050c..35df2e755e 100644 > > --- a/include/configs/imx8mm-cl-iot-gate.h > > +++ b/include/configs/imx8mm-cl-iot-gate.h > > @@ -31,6 +31,16 @@ > > > > #endif > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define IMX8MM_CL_IOT_GATE_FIT_IMAGE_GUID \ > > + EFI_GUID(0x7a32a939, 0xab92, 0x467b, 0x91, 0x52, \ > > + 0x74, 0x77, 0x1b, 0x95, 0xe6, 0x46) > > + > > +#define IMX8MM_CL_IOT_GATE_OPTEE_FIT_IMAGE_GUID \ > > + EFI_GUID(0x0bf1165c, 0x1831, 0x4864, 0x94, 0x5e, \ > > + 0xac, 0x3d, 0x38, 0x48, 0xf4, 0x99) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > #if CONFIG_IS_ENABLED(CMD_MMC) > > # define BOOT_TARGET_MMC(func) \ > > func(MMC, mmc, 2) \ > > diff --git a/include/configs/imx8mp_rsb3720.h b/include/configs/imx8mp_= rsb3720.h > > index ac4a7d0cb3..a5a845c2da 100644 > > --- a/include/configs/imx8mp_rsb3720.h > > +++ b/include/configs/imx8mp_rsb3720.h > > @@ -21,6 +21,16 @@ > > #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 > > #define CONFIG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW= _MODE_U_BOOT_SECTOR * 512) > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define IMX8MP_RSB3720A1_4G_FIT_IMAGE_GUID \ > > + EFI_GUID(0xb1251e89, 0x384a, 0x4635, 0xa8, 0x06, \ > > + 0x3a, 0xa0, 0xb0, 0xe9, 0xf9, 0x65) > > + > > +#define IMX8MP_RSB3720A1_6G_FIT_IMAGE_GUID \ > > + EFI_GUID(0xb5fb6f08, 0xe142, 0x4db1, 0x97, 0xea, \ > > + 0x5f, 0xd3, 0x6b, 0x9b, 0xe5, 0xb9) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT*/ > > + > > #ifdef CONFIG_SPL_BUILD > > #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.= lds" > > #define CONFIG_SPL_STACK 0x960000 > > diff --git a/include/configs/kontron-sl-mx8mm.h b/include/configs/kontr= on-sl-mx8mm.h > > index 788ae77cd3..aff1b90010 100644 > > --- a/include/configs/kontron-sl-mx8mm.h > > +++ b/include/configs/kontron-sl-mx8mm.h > > @@ -38,6 +38,12 @@ > > #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 > > #endif > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define KONTRON_SL_MX8MM_FIT_IMAGE_GUID \ > > + EFI_GUID(0xd488e45a, 0x4929, 0x4b55, 0x8c, 0x14, \ > > + 0x86, 0xce, 0xa2, 0xcd, 0x66, 0x29) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > #ifndef CONFIG_SPL_BUILD > > #define BOOT_TARGET_DEVICES(func) \ > > func(MMC, mmc, 1) \ > > diff --git a/include/configs/kontron_pitx_imx8m.h b/include/configs/kon= tron_pitx_imx8m.h > > index 0f96b905ab..678364e367 100644 > > --- a/include/configs/kontron_pitx_imx8m.h > > +++ b/include/configs/kontron_pitx_imx8m.h > > @@ -14,6 +14,12 @@ > > #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR > > #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define KONTRON_PITX_IMX8M_FIT_IMAGE_GUID \ > > + EFI_GUID(0xc898e959, 0x5b1f, 0x4e6d, 0x88, 0xe0, \ > > + 0x40, 0xd4, 0x5c, 0xca, 0x13, 0x99) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > #ifdef CONFIG_SPL_BUILD > > #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.= lds" > > #define CONFIG_SPL_STACK 0x187FF0 > > diff --git a/include/configs/kontron_sl28.h b/include/configs/kontron_s= l28.h > > index 448749a7f8..97d0d365f6 100644 > > --- a/include/configs/kontron_sl28.h > > +++ b/include/configs/kontron_sl28.h > > @@ -57,6 +57,12 @@ > > #define CONFIG_SYS_SPL_MALLOC_START 0x80200000 > > #define CONFIG_SYS_MONITOR_LEN (1024 * 1024) > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define KONTRON_SL28_FIT_IMAGE_GUID \ > > + EFI_GUID(0x86ebd44f, 0xfeb8, 0x466f, 0x8b, 0xb8, \ > > + 0x89, 0x06, 0x18, 0x45, 0x6d, 0x8b) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > /* environment */ > > /* see include/configs/ti_armv7_common.h */ > > #define ENV_MEM_LAYOUT_SETTINGS \ > > diff --git a/include/configs/qemu-arm.h b/include/configs/qemu-arm.h > > index d45f606860..2f2abc746d 100644 > > --- a/include/configs/qemu-arm.h > > +++ b/include/configs/qemu-arm.h > > @@ -17,6 +17,16 @@ > > > > #define CONFIG_SYS_BOOTM_LEN SZ_64M > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define QEMU_ARM_UBOOT_IMAGE_GUID \ > > + EFI_GUID(0xf885b085, 0x99f8, 0x45af, 0x84, 0x7d, \ > > + 0xd5, 0x14, 0x10, 0x7a, 0x4a, 0x2c) > > + > > +#define QEMU_ARM64_UBOOT_IMAGE_GUID \ > > + EFI_GUID(0x058b7d83, 0x50d5, 0x4c47, 0xa1, 0x95, \ > > + 0x60, 0xd8, 0x6a, 0xd3, 0x41, 0xc4) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > /* For timer, QEMU emulates an ARMv7/ARMv8 architected timer */ > > > > /* Environment options */ > > diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h > > index 75efbf3448..d06c3de2e0 100644 > > --- a/include/configs/sandbox.h > > +++ b/include/configs/sandbox.h > > @@ -14,6 +14,16 @@ > > > > #define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer S= ize */ > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define SANDBOX_UBOOT_IMAGE_GUID \ > > + EFI_GUID(0x09d7cf52, 0x0720, 0x4710, 0x91, 0xd1, \ > > + 0x08, 0x46, 0x9b, 0x7f, 0xe9, 0xc8) > > + > > +#define SANDBOX_UBOOT_ENV_IMAGE_GUID \ > > + EFI_GUID(0x5a7021f5, 0xfef2, 0x48b4, 0xaa, 0xba, \ > > + 0x83, 0x2e, 0x77, 0x74, 0x18, 0xc0) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > /* Size of our emulated memory */ > > #define SB_CONCAT(x, y) x ## y > > #define SB_TO_UL(s) SB_CONCAT(s, UL) > > diff --git a/include/configs/synquacer.h b/include/configs/synquacer.h > > index 8dd092fc59..07e1f56e3d 100644 > > --- a/include/configs/synquacer.h > > +++ b/include/configs/synquacer.h > > @@ -51,6 +51,20 @@ > > "fip.bin raw 180000 78000;" = \ > > "optee.bin raw 500000 100000\0" > > > > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) > > +#define DEVELOPERBOX_UBOOT_IMAGE_GUID \ > > + EFI_GUID(0x53a92e83, 0x4ef4, 0x473a, 0x8b, 0x0d, \ > > + 0xb5, 0xd8, 0xc7, 0xb2, 0xd6, 0x00) > > + > > +#define DEVELOPERBOX_FIP_IMAGE_GUID \ > > + EFI_GUID(0x880866e9, 0x84ba, 0x4793, 0xa9, 0x08, \ > > + 0x33, 0xe0, 0xb9, 0x16, 0xf3, 0x98) > > + > > +#define DEVELOPERBOX_OPTEE_IMAGE_GUID \ > > + EFI_GUID(0xc1b629f1, 0xce0e, 0x4894, 0x82, 0xbf, \ > > + 0xf0, 0xa3, 0x83, 0x87, 0xe6, 0x30) > > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ > > + > > /* Distro boot settings */ > > #ifndef CONFIG_SPL_BUILD > > #ifdef CONFIG_CMD_USB > > diff --git a/include/efi_loader.h b/include/efi_loader.h > > index af36639ec6..1965b5a28f 100644 > > --- a/include/efi_loader.h > > +++ b/include/efi_loader.h > > @@ -979,6 +979,21 @@ efi_status_t efi_capsule_authenticate(const void *= capsule, > > > > #define EFI_CAPSULE_DIR u"\\EFI\\UpdateCapsule\\" > > > > +/** > > + * struct efi_fw_images - List of firmware images updatable through ca= psule > > + * update > > + * > > + * This structure gives information about the firmware images on the p= latform > > + * which can be updated through the capsule update mechanism > > + * > > + * @image_type_id: Image GUID. Same value is to be used in the cap= sule > > + * @fw_name: Name of the firmware image > > + */ > > +struct efi_fw_images { > > + efi_guid_t image_type_id; > > + const u16 *fw_name; > > +}; > > + > > /** > > * Install the ESRT system table. > > * > > -- > > 2.25.1 > > > > > -- > Masami Hiramatsu