All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Sughosh Ganu <sughosh.ganu@linaro.org>
Cc: u-boot@lists.denx.de, Heinrich Schuchardt <xypron.glpk@gmx.de>,
	AKASHI Takahiro <takahiro.akashi@linaro.org>,
	Ying-Chun Liu <paul.liu@linaro.org>,
	Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>,
	Heiko Thiery <heiko.thiery@gmail.com>,
	Frieder Schrempf <frieder.schrempf@kontron.de>,
	Michael Walle <michael@walle.cc>,
	Masami Hiramatsu <masami.hiramatsu@linaro.org>,
	Jassi Brar <jaswinder.singh@linaro.org>,
	Michal Simek <monstr@monstr.eu>,
	Michal Simek <michal.simek@xilinx.com>
Subject: Re: [PATCH v4 1/8] capsule: Add Image GUIDs and image index for platforms using capsule updates
Date: Thu, 31 Mar 2022 17:03:41 +0300	[thread overview]
Message-ID: <YkW0vbXXnlsb0QHW@hades> (raw)
In-Reply-To: <20220331132750.1532722-2-sughosh.ganu@linaro.org>

On Thu, Mar 31, 2022 at 06:57:43PM +0530, Sughosh Ganu wrote:
> 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.
> 
> Also add the image index value associated with a particular
> image. This is the value that should match with the image_index value
> that is part of the capsule header. The capsule update code will check
> if the two values match, and the update will only proceed on a match.
> 
> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> Reviewed-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
> Acked-by: Michal Simek <michal.simek@xilinx.com>
> ---
> 
> Changes since V3: None
> 
>  .../imx8mp_rsb3720a1/imx8mp_rsb3720a1.c       | 20 +++++++++++++
>  .../imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c   | 19 +++++++++++++
>  board/emulation/qemu-arm/qemu-arm.c           | 20 +++++++++++++
>  board/kontron/pitx_imx8m/pitx_imx8m.c         | 16 ++++++++++-
>  board/kontron/sl-mx8mm/sl-mx8mm.c             | 15 ++++++++++
>  board/kontron/sl28/sl28.c                     | 15 ++++++++++
>  board/sandbox/sandbox.c                       | 28 +++++++++++++++++++
>  board/socionext/developerbox/developerbox.c   | 26 +++++++++++++++++
>  board/xilinx/common/board.c                   | 24 ++++++++++++++++
>  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                     | 14 ++++++++++
>  include/configs/synquacer.h                   | 14 ++++++++++
>  include/configs/xilinx_versal.h               |  6 ++++
>  include/configs/xilinx_zynqmp.h               | 10 +++++++
>  include/configs/zynq-common.h                 | 10 +++++++
>  include/efi_loader.h                          | 18 ++++++++++++
>  21 files changed, 302 insertions(+), 1 deletion(-)
> 
> diff --git a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c
> index 16566092bd..1c953ba195 100644
> --- a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c
> +++ b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c
> @@ -6,6 +6,8 @@
>  
>  #include <common.h>
>  #include <dwc3-uboot.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <errno.h>
>  #include <miiphy.h>
>  #include <netdev.h>
> @@ -21,6 +23,7 @@
>  #include <asm/arch/clock.h>
>  #include <asm/mach-imx/dma.h>
>  #include <linux/delay.h>
> +#include <linux/kernel.h>
>  #include <power/pmic.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
> @@ -44,6 +47,23 @@ static void setup_gpmi_nand(void)
>  }
>  #endif
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +#if defined(CONFIG_TARGET_IMX8MP_RSB3720A1_4G)
> +		.image_type_id = IMX8MP_RSB3720A1_4G_FIT_IMAGE_GUID,
> +#elif defined(CONFIG_TARGET_IMX8MP_RSB3720A1_6G)
> +		.image_type_id = IMX8MP_RSB3720A1_6G_FIT_IMAGE_GUID,
> +#endif
> +		.fw_name = u"IMX8MP-RSB3720-FIT",
> +		.image_index = 1
> +	},
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
> +
>  int board_early_init_f(void)
>  {
>  	struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR;
> diff --git a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c
> index 7e2d88f449..f5b89a5ddc 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 <common.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <env.h>
>  #include <extension_board.h>
>  #include <hang.h>
> @@ -21,11 +23,28 @@
>  #include <asm/mach-imx/gpio.h>
>  #include <asm/mach-imx/mxc_i2c.h>
>  #include <asm/sections.h>
> +#include <linux/kernel.h>
>  
>  #include "ddr/ddr.h"
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +#if defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE)
> +		.image_type_id = IMX8MM_CL_IOT_GATE_FIT_IMAGE_GUID,
> +#elif defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE)
> +		.image_type_id = IMX8MM_CL_IOT_GATE_OPTEE_FIT_IMAGE_GUID,
> +#endif
> +		.fw_name = u"IMX8MM-CL-IOT-GATE-FIT",
> +		.image_index = 1
> +	},
> +};
> +
> +u8 num_image_type_guids = 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 =
> diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c
> index 16d5a97167..ef77d0dc14 100644
> --- a/board/emulation/qemu-arm/qemu-arm.c
> +++ b/board/emulation/qemu-arm/qemu-arm.c
> @@ -6,15 +6,35 @@
>  #include <common.h>
>  #include <cpu_func.h>
>  #include <dm.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <fdtdec.h>
>  #include <init.h>
>  #include <log.h>
>  #include <virtio_types.h>
>  #include <virtio.h>
>  
> +#include <linux/kernel.h>
> +
>  #ifdef CONFIG_ARM64
>  #include <asm/armv8/mmu.h>
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +#if defined(CONFIG_TARGET_QEMU_ARM_32BIT)
> +		.image_type_id = QEMU_ARM_UBOOT_IMAGE_GUID,
> +#elif defined(CONFIG_TARGET_QEMU_ARM_64BIT)
> +		.image_type_id = QEMU_ARM64_UBOOT_IMAGE_GUID,
> +#endif
> +		.fw_name = u"Qemu-Arm-UBOOT",
> +		.image_index = 1
> +	},
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  static struct mm_region qemu_arm64_mem_map[] = {
>  	{
>  		/* Flash */
> diff --git a/board/kontron/pitx_imx8m/pitx_imx8m.c b/board/kontron/pitx_imx8m/pitx_imx8m.c
> index d655fe099b..8dc04411cc 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 <common.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <init.h>
>  #include <mmc.h>
>  #include <miiphy.h>
> @@ -12,7 +14,7 @@
>  #include <asm/mach-imx/gpio.h>
>  #include <asm/mach-imx/iomux-v3.h>
>  #include <linux/delay.h>
> -
> +#include <linux/kernel.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -30,6 +32,18 @@ static iomux_v3_cfg_t const uart_pads[] = {
>  	IMX8MQ_PAD_ECSPI1_MISO__UART3_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
>  };
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +		.image_type_id = KONTRON_PITX_IMX8M_FIT_IMAGE_GUID,
> +		.fw_name = u"KONTRON-PITX-IMX8M-UBOOT",
> +		.image_index = 1
> +	},
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  int board_early_init_f(void)
>  {
>  	struct wdog_regs *wdog = (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..834588af3a 100644
> --- a/board/kontron/sl-mx8mm/sl-mx8mm.c
> +++ b/board/kontron/sl-mx8mm/sl-mx8mm.c
> @@ -6,12 +6,27 @@
>  #include <asm/arch/imx-regs.h>
>  #include <asm/global_data.h>
>  #include <asm/io.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <fdt_support.h>
>  #include <linux/errno.h>
> +#include <linux/kernel.h>
>  #include <net.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +		.image_type_id = KONTRON_SL_MX8MM_FIT_IMAGE_GUID,
> +		.fw_name = u"KONTROL-SL-MX8MM-UBOOT",
> +		.image_index = 1
> +	},
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  int board_phys_sdram_size(phys_size_t *size)
>  {
>  	u32 ddr_size = readl(M4_BOOTROM_BASE_ADDR);
> diff --git a/board/kontron/sl28/sl28.c b/board/kontron/sl28/sl28.c
> index 3c48a9141d..7d3635da45 100644
> --- a/board/kontron/sl28/sl28.c
> +++ b/board/kontron/sl28/sl28.c
> @@ -3,11 +3,14 @@
>  #include <common.h>
>  #include <dm.h>
>  #include <malloc.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <errno.h>
>  #include <fsl_ddr.h>
>  #include <fdt_support.h>
>  #include <asm/global_data.h>
>  #include <linux/libfdt.h>
> +#include <linux/kernel.h>
>  #include <env_internal.h>
>  #include <asm/arch-fsl-layerscape/soc.h>
>  #include <asm/arch-fsl-layerscape/fsl_icid.h>
> @@ -23,6 +26,18 @@
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +		.image_type_id = KONTRON_SL28_FIT_IMAGE_GUID,
> +		.fw_name = u"KONTRON-SL28-FIT",
> +		.image_index = 1
> +	},
> +};
> +
> +u8 num_image_type_guids = 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..c5e6e3d2a0 100644
> --- a/board/sandbox/sandbox.c
> +++ b/board/sandbox/sandbox.c
> @@ -7,6 +7,8 @@
>  #include <cpu_func.h>
>  #include <cros_ec.h>
>  #include <dm.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <env_internal.h>
>  #include <init.h>
>  #include <led.h>
> @@ -14,6 +16,7 @@
>  #include <asm/global_data.h>
>  #include <asm/test.h>
>  #include <asm/u-boot-sandbox.h>
> +#include <linux/kernel.h>
>  #include <malloc.h>
>  
>  #include <extension_board.h>
> @@ -25,6 +28,31 @@
>   */
>  gd_t *gd;
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +#if defined(CONFIG_EFI_CAPSULE_FIRMWARE_RAW)
> +	{
> +		.image_type_id = SANDBOX_UBOOT_IMAGE_GUID,
> +		.fw_name = u"SANDBOX-UBOOT",
> +		.image_index = 1
> +	},
> +	{
> +		.image_type_id = SANDBOX_UBOOT_ENV_IMAGE_GUID,
> +		.fw_name = u"SANDBOX-UBOOT-ENV",
> +		.image_index = 2
> +	},
> +#elif defined(CONFIG_EFI_CAPSULE_FIRMWARE_FIT)
> +	{
> +		.image_type_id = SANDBOX_FIT_IMAGE_GUID,
> +		.fw_name = u"SANDBOX-FIT",
> +		.image_index = 1
> +	},
> +#endif
> +};
> +
> +u8 num_image_type_guids = 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 interferes with
> diff --git a/board/socionext/developerbox/developerbox.c b/board/socionext/developerbox/developerbox.c
> index 9552bfcdc3..ae4b2d6ed8 100644
> --- a/board/socionext/developerbox/developerbox.c
> +++ b/board/socionext/developerbox/developerbox.c
> @@ -10,10 +10,36 @@
>  #include <asm/global_data.h>
>  #include <asm/io.h>
>  #include <common.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <env_internal.h>
>  #include <fdt_support.h>
>  #include <log.h>
>  
> +#include <linux/kernel.h>
> +
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +	{
> +		.image_type_id = DEVELOPERBOX_UBOOT_IMAGE_GUID,
> +		.fw_name = u"DEVELOPERBOX-UBOOT",
> +		.image_index = 1
> +	},
> +	{
> +		.image_type_id = DEVELOPERBOX_FIP_IMAGE_GUID,
> +		.fw_name = u"DEVELOPERBOX-FIP",
> +		.image_index = 2
> +	},
> +	{
> +		.image_type_id = DEVELOPERBOX_OPTEE_IMAGE_GUID,
> +		.fw_name = u"DEVELOPERBOX-OPTEE",
> +		.image_index = 3
> +	},
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  static struct mm_region sc2a11_mem_map[] = {
>  	{
>  		.virt = 0x0UL,
> diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
> index 0068cb8792..2e63bb4d4f 100644
> --- a/board/xilinx/common/board.c
> +++ b/board/xilinx/common/board.c
> @@ -5,6 +5,8 @@
>   */
>  
>  #include <common.h>
> +#include <efi.h>
> +#include <efi_loader.h>
>  #include <env.h>
>  #include <log.h>
>  #include <asm/global_data.h>
> @@ -20,9 +22,31 @@
>  #include <generated/dt.h>
>  #include <soc.h>
>  #include <linux/ctype.h>
> +#include <linux/kernel.h>
>  
>  #include "fru.h"
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_images fw_images[] = {
> +#if defined(XILINX_BOOT_IMAGE_GUID)
> +	{
> +		.image_type_id = XILINX_BOOT_IMAGE_GUID,
> +		.fw_name = u"XILINX-BOOT",
> +		.image_index = 1
> +	},
> +#endif
> +#if defined(XILINX_UBOOT_IMAGE_GUID)
> +	{
> +		.image_type_id = XILINX_UBOOT_IMAGE_GUID,
> +		.fw_name = u"XILINX-UBOOT",
> +		.image_index = 2
> +	},
> +#endif
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  #if defined(CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET)
>  int zynq_board_read_rom_ethaddr(unsigned char *ethaddr)
>  {
> diff --git a/include/configs/imx8mm-cl-iot-gate.h b/include/configs/imx8mm-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/kontron-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/kontron_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_sl28.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..e951d08056 100644
> --- a/include/configs/sandbox.h
> +++ b/include/configs/sandbox.h
> @@ -14,6 +14,20 @@
>  
>  #define CONFIG_SYS_CBSIZE		1024	/* Console I/O Buffer Size */
>  
> +#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)
> +
> +#define SANDBOX_FIT_IMAGE_GUID \
> +	EFI_GUID(0x3673b45d, 0x6a7c, 0x46f3, 0x9e, 0x60, \
> +		 0xad, 0xab, 0xb0, 0x3f, 0x79, 0x37)
> +#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/configs/xilinx_versal.h b/include/configs/xilinx_versal.h
> index bc72f5f35f..95218962f7 100644
> --- a/include/configs/xilinx_versal.h
> +++ b/include/configs/xilinx_versal.h
> @@ -31,6 +31,12 @@
>  #define CONFIG_BOOTP_BOOTFILESIZE
>  #define CONFIG_BOOTP_MAY_FAIL
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +#define XILINX_BOOT_IMAGE_GUID \
> +	EFI_GUID(0x20c5fba5, 0x0171, 0x457f, 0xb9, 0xcd, \
> +		 0xf5, 0x12, 0x9c, 0xd0, 0x72, 0x28)
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  /* Miscellaneous configurable options */
>  
>  /* Monitor Command Prompt */
> diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
> index e51d92ffe4..942f004b15 100644
> --- a/include/configs/xilinx_zynqmp.h
> +++ b/include/configs/xilinx_zynqmp.h
> @@ -31,6 +31,16 @@
>  #define CONFIG_BOOTP_BOOTFILESIZE
>  #define CONFIG_BOOTP_MAY_FAIL
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +#define XILINX_BOOT_IMAGE_GUID \
> +	EFI_GUID(0xde6066e8, 0x0256, 0x4fad, 0x82, 0x38, \
> +		 0xe4, 0x06, 0xe2, 0x74, 0xc4, 0xcf)
> +
> +#define XILINX_UBOOT_IMAGE_GUID \
> +	EFI_GUID(0xcf9ecfd4, 0x938b, 0x41c5, 0x85, 0x51, \
> +		 0x1f, 0x88, 0x3a, 0xb7, 0xdc, 0x18)
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  #ifdef CONFIG_NAND_ARASAN
>  # define CONFIG_SYS_MAX_NAND_DEVICE	1
>  #endif
> diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
> index 780952cf5f..d116947d25 100644
> --- a/include/configs/zynq-common.h
> +++ b/include/configs/zynq-common.h
> @@ -20,6 +20,16 @@
>  #define CONFIG_SYS_TIMER_COUNTS_DOWN
>  #define CONFIG_SYS_TIMER_COUNTER	(CONFIG_SYS_TIMERBASE + 0x4)
>  
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +#define XILINX_BOOT_IMAGE_GUID \
> +	EFI_GUID(0x1ba29a15, 0x9969, 0x40aa, 0xb4, 0x24, \
> +		 0xe8, 0x61, 0x21, 0x61, 0x86, 0x64)
> +
> +#define XILINX_UBOOT_IMAGE_GUID \
> +	EFI_GUID(0x1a5178f0, 0x87d3, 0x4f36, 0xac, 0x63, \
> +		 0x3b, 0x31, 0xa2, 0x3b, 0xe3, 0x05)
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>  /* Serial drivers */
>  /* The following table includes the supported baudrates */
>  #define CONFIG_SYS_BAUDRATE_TABLE  \
> diff --git a/include/efi_loader.h b/include/efi_loader.h
> index af36639ec6..284d64547b 100644
> --- a/include/efi_loader.h
> +++ b/include/efi_loader.h
> @@ -979,6 +979,24 @@ 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 capsule
> + *                        update
> + *
> + * This structure gives information about the firmware images on the platform
> + * which can be updated through the capsule update mechanism
> + *
> + * @image_type_id:	Image GUID. Same value is to be used in the capsule
> + * @fw_name:		Name of the firmware image
> + * @image_index:	Image Index, same as value passed to SetImage FMP
> + *                      function
> + */
> +struct efi_fw_images {
> +	efi_guid_t image_type_id;
> +	const u16 *fw_name;
> +	u8 image_index;
> +};
> +
>  /**
>   * Install the ESRT system table.
>   *
> -- 
> 2.25.1
> 
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>


  reply	other threads:[~2022-03-31 14:04 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-31 13:27 [PATCH v4 0/8] efi: capsule: Capsule Update fixes and enhancements Sughosh Ganu
2022-03-31 13:27 ` [PATCH v4 1/8] capsule: Add Image GUIDs and image index for platforms using capsule updates Sughosh Ganu
2022-03-31 14:03   ` Ilias Apalodimas [this message]
2022-03-31 13:27 ` [PATCH v4 2/8] capsule: FMP: Populate the image descriptor array from platform data Sughosh Ganu
2022-03-31 15:08   ` Ilias Apalodimas
2022-03-31 16:29     ` Sughosh Ganu
2022-03-31 13:27 ` [PATCH v4 3/8] capsule: Put a check for image index before the update Sughosh Ganu
2022-03-31 18:47   ` Ilias Apalodimas
2022-03-31 13:27 ` [PATCH v4 4/8] board: Define set_dfu_alt_info() for boards with UEFI capsule update enabled Sughosh Ganu
2022-03-31 14:08   ` Masami Hiramatsu
2022-03-31 19:35   ` Ilias Apalodimas
2022-04-01  6:58     ` Sughosh Ganu
2022-04-01  9:55       ` Ilias Apalodimas
2022-03-31 13:27 ` [PATCH v4 5/8] test: capsule: Modify the capsule tests to use GUID values for sandbox Sughosh Ganu
2022-03-31 13:27 ` [PATCH v4 6/8] FMP: Remove GUIDs for FIT and raw images Sughosh Ganu
2022-03-31 18:10   ` Ilias Apalodimas
2022-03-31 13:27 ` [PATCH v4 7/8] mkeficapsule: Remove raw and FIT GUID types Sughosh Ganu
2022-03-31 18:10   ` Ilias Apalodimas
2022-03-31 13:27 ` [PATCH v4 8/8] doc: uefi: Update the capsule update related documentation Sughosh Ganu
2022-03-31 18:14   ` Ilias Apalodimas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YkW0vbXXnlsb0QHW@hades \
    --to=ilias.apalodimas@linaro.org \
    --cc=frieder.schrempf@kontron.de \
    --cc=heiko.thiery@gmail.com \
    --cc=jaswinder.singh@linaro.org \
    --cc=masami.hiramatsu@linaro.org \
    --cc=michael@walle.cc \
    --cc=michal.simek@xilinx.com \
    --cc=monstr@monstr.eu \
    --cc=paul.liu@linaro.org \
    --cc=sughosh.ganu@linaro.org \
    --cc=takahiro.akashi@linaro.org \
    --cc=tuomas.tynkkynen@iki.fi \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.