From patchwork Sun Apr 19 14:31:48 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4551 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 422753F1C5 for ; Sun, 19 Apr 2026 16:33:11 +0200 (CEST) Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-488d3eec9bcsf13802235e9.3 for ; Sun, 19 Apr 2026 07:33:11 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1776609191; cv=pass; d=google.com; s=arc-20240605; b=Sn9p2cnCjNpPaRjg4D1NSgbpSQaTr4wCeEDpNyx5l2bzDt5VU3ct84Bj84ARkZK+cH ioLPsiUaRqrt7x1GX86sXfUtwNhT2kC6QuppmtzAJ7NELYBVdhT5mX7vG/+ZSGP65Kvl qPbOXMk0dKs3JmuXpqFKfEy9+Jk7lQx7KtBb1VTZlqM/2ciucon26ZKTVOv+9IuhgR8g dg56euzO+G43fUWdddo0aeK2O/untQvHBRz4QSugToJMBAfIxkvPM+8SthegbhBI3jPN Y2P/5GNP/ivWPzMqu8UsyFl+EPfqTzfycrf6Y/2GbbLCJF/SiEFf8S3cCaMwoQMsVi7v wV5A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=39EAlQHjG6mRtr8pLJ5XxAGL7ihsAVGjUUBw+xpU5q0=; fh=1lOHYMNf9IVjUhGZFIy//qhJm446Ok859WDqO1SkpMk=; b=QBkKVJPu9w0j86lfH134QmSPXIknyxb29P04laHZc0FJw66CDfRnOpK2KaCJTLBMvU Q4cDs1fs/emMFu/QmlKKCz+1EgJ9iK9qDMcDAAaiAtv93/m3VmKcymYVwssLJPCdpalq WxBQdmJuQbDt0/1hZrrHJig/QBZwDdMjK/+2FkwmR90fJBVlIGOjcYe1AieFGphj0UxA jyWxSKJr/nFxqmgBgSFdhR7UN42CR0uqKvo2cUY9cFDajjG2Pnq47tXmIMMv3+ROPV9n fqErj8zXDCEvhJwG+i27tvShj+XQEef6wMsSdMKuTCyRPGHvuC5uLOkY76/24Eo6msAq LoxA==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=VdhSGfhD; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1776609191; x=1777213991; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=39EAlQHjG6mRtr8pLJ5XxAGL7ihsAVGjUUBw+xpU5q0=; b=WR7T+EO+EexU9D5lFyr/piOSfs+xe/TRmqeSMpXDfx8p+UiJTcp5bH/YCvRVeTK3Ek LEl0EVh62kvlFm4kco18z3TgIcASk+pY9o/89+3rlHDBZXIP8l/PQu1f01Np9LnPZM6z l7uAcbasW1SrMbWEAjETyWdApTVuAzUvtq29s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776609191; x=1777213991; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=39EAlQHjG6mRtr8pLJ5XxAGL7ihsAVGjUUBw+xpU5q0=; b=ISoJfGy73TrAefF0cASR1fE06WjqHl7b2rLcmdG0xIUnbUnM2KhUYZySMs6oKeb+u1 cTjumwdUjurc3hOSjh45sHehDCEa+VM261Op//R8W3465o4pIxPBcoXQrnLMoVstqDUs O6cObkMKcE1mifd1xeCjL+i9htB8P5QR6MIYlZCm3QHQyMbdGbxGb3PTCEti0rh6vpjS b3XPXfcxk4KaruEZXj4I2S38dcDNRakia1FsVTjMBsSqYI4CbhIADGLvVDPRovJNeYZ8 Z+sS7PRMOu8BgpxGJeEsr0fwT0Hypy4Qzwya4KzH9+xbW43wKT1o+XMQtejU2nJaR9GB VYcA== X-Forwarded-Encrypted: i=2; AFNElJ+OWtflx90U9Qcn4zqxr9AAdA3gnXFGz1eRG6sS18IRccuOdt438RvLymY1QDPjFHzO+o2Lw9U8PbaWjVrZ@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YxgLD5fMHmunt+ealyHlarXgN9bCPbnMuc98SEdNzCOlhW/rkFc +j5GoR/4PTJxCICfUciFUB79GTH7TNq5I483MZO17P1kBS6EgNfigKkV54vF/kKvgl+ncTMg7P8 hrQ== X-Received: by 2002:a05:600c:34c7:b0:489:1c32:210d with SMTP id 5b1f17b1804b1-4891c32266amr6130595e9.15.1776609190783; Sun, 19 Apr 2026 07:33:10 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="AYAyTiIkoRvMWKDio0Y+PorwPlCH3F8iEPBLmAf4MIYqu7B1Yg==" Received: by 2002:a05:600c:548f:b0:488:ab54:fc08 with SMTP id 5b1f17b1804b1-488f4a77b0fls39124335e9.0.-pod-prod-02-eu; Sun, 19 Apr 2026 07:33:09 -0700 (PDT) X-Received: by 2002:a05:600c:8584:b0:488:a14d:3d8e with SMTP id 5b1f17b1804b1-488fb74aadbmr107564055e9.11.1776609189184; Sun, 19 Apr 2026 07:33:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776609189; cv=none; d=google.com; s=arc-20240605; b=JOb44cHkyQS18ZqeOzB+syUKaRQ+cJq+ZpDvwSgXeqmYqsfrNExd36XQ9nPJaC57A7 5PEeSD/83fS/kz10S7soUkOBpzlBI814uAfdFU4Hjf3YP3hZdSoeG55Ej3OZ8s9hBJAs kL1n3qThWIpx7bkZGb/vMDBVwF0Se3mlOXJjTvjWd387l9HCRjF4C7Fa68GTXNXBVCfs 0pvT8KdODhxnlsUQfEk8s0ExCldKKSFmres+FPXrNejYfhegfiYntDOk/cBpjpT+Bix4 zz/JpnsXuYhMrsqpPMWuLSmI4Zd77T3mpwjH3gc9N40CxJQ9kFQVLIJgsAxBdQPb8nZ7 5blA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Z0aGuMwDclvcyPdUtza4RjG7PG1o+7vRHLMxYH5Ix6Q=; fh=4lcPrNiBHn41j4ogF7mwB7ucqwr435pDYMtBJaLxbIw=; b=dmZFd5fcU7t9oYpB6qaQVTYBiIcfUhZ772NjQxL9f0AiaVpg6bVwM7MC3wMaPv5xN0 8Cq/NRSDjFI0WmRQINex8Cmo3wstSFMc6+3QrwmlvgXzmyvY0YLGddTG3YpnQyC3gW0y MYeE0THleLX2+XWh8dLcozAf2gJJW/vQvqvUdCpJmKtnsKf96mXPP2KR4lpYCEiHIqlo s54ClBybSWB8fsrdTlRMQJIbcSjxAelhIAe9dBLGsWKFvPlY0ca9ao9VStES7Lkjqv55 gVDbBSU2mL9NjuiWe1JgTmyWJFhKlU6Rs6JWdbSno7IABym02Ml72PUmJbks8zy84sJ6 /B9g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=VdhSGfhD; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id 5b1f17b1804b1-488fc103530sor10872425e9.6.2026.04.19.07.33.09 for (Google Transport Security); Sun, 19 Apr 2026 07:33:09 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Gm-Gg: AeBDievBuNs3tN9lgX54KePVFA4Tga3pNjY+fFdyDSzfjHUPY5CIbWeEDbxPKeujF0J b/NrF3uk15ezlfpmZxJuTm3nXA3VrfW379WCeU1NlS99OFV/tXJuGAjKFxUg6SJLTg7Wp+yaBzb scVqxed/JSoE+WPZ32su5Ei4X1OrZEmnADlQKcqaKoUkm9VFU40WNya4rwcG0kXOo9fw+apPUjF m3xNJwL8GaNT+b+ywkNUpzt5ff72Rf4O/m95fKjqJjkz8y9O6ivMCptRiQb99Q39Es0A/FTugXE j3zr+zdt8Cqt+mxdpPpHoGavD4R8N3B45BNdcfulrlGmqmbd9MvaNoHdJWZrbeM5MXUkdbB8BSq gV22ml7pCOK7BEthGIFDjFj7r6feU5h8s+OYTAVLOoGbp5kBzRnJgjaiVOv1bln5FklNmp5sa8J FvFABWbZS0fr2a4JRz9tfoVfL1mmPfXMNJfE1FqM8JoTUFMUDg4Wk1vwA8yn+NHK9GVOcp11f0K xqx97Khq+kmK7IgFohq0GGt5gfv/44/g6gLesifStzZXYvoRkRQUed5Y7r0MMhYzES/FmtcAKaR 8G+F2wp+MniT/imQyGUKdWr0stddkoOG X-Received: by 2002:a05:600d:1b:b0:483:8062:b43 with SMTP id 5b1f17b1804b1-488fb771438mr123463775e9.19.1776609188736; Sun, 19 Apr 2026 07:33:08 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.homenet.telecomitalia.it (host-79-20-97-39.retail.telecomitalia.it. [79.20.97.39]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488fb755938sm86864245e9.3.2026.04.19.07.33.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Apr 2026 07:33:08 -0700 (PDT) From: Dario Binacchi To: u-boot@lists.denx.de Cc: linux-amarula@amarulasolutions.com, Dario Binacchi , Simon Glass , Marek Vasut , Patrice Chotard , Patrick Delaunay , Tom Rini , uboot-stm32@st-md-mailman.stormreply.com Subject: [PATCH v4 8/8] board: st: stm32mp25: support dynamic A/B bank bootup Date: Sun, 19 Apr 2026 16:31:48 +0200 Message-ID: <20260419143247.437733-9-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260419143247.437733-1-dario.binacchi@amarulasolutions.com> References: <20260419143247.437733-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=VdhSGfhD; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Enable automatic detection of the active A/B bank by retrieving partition GUIDs from FWU metadata. This ensures the system correctly identifies the bootable partitions even in multi-bank scenarios, falling back to a standard bootable flag scan if the UUIDs are missing. To enable A/B bank bootup on stm32mp25 boards, add the following Kconfig options to the stm32mp25_defconfig: CONFIG_FWU_MULTI_BANK_UPDATE=y CONFIG_FWU_MDATA=y CONFIG_FWU_NUM_BANKS=2 CONFIG_FWU_NUM_IMAGES_PER_BANK=3 CONFIG_CMD_FWU_METADATA=y CONFIG_FWU_MDATA_V2=y Signed-off-by: Dario Binacchi Reviewed-by: Simon Glass --- Changes in v4: - Add patch 7/8 test: dm: fwu_mdata: add test for fwu_mdata_get_image_guid Changes in v3: - Wrap lines exceeding 80 columns in test/cmd/part.c file. - Combine run_command() and ut_asserteq() -> ut_asserteq(1, run_command( - Add kerneldoc comment for fwu_mdata_get_image_guid() above its declaration in fwu.h. - Add log_warning() messages to fwu_platform_hook() to catch inconsistent FWU metadata (boot GUID found but root GUID missing or viceversa), as suggested by Simon Glass. - Add Reviewed-by tag of Simon Glass. Changes in v2: - Add links to the XBOOTLDR specification in the commit message of patch 1/7 lib: uuid: add partition type GUID for extended bootloader. - Update help for 'part start', 'part size' to mention UUID. - Add kerneldoc comment for fwu_mdata_get_image_guid(). - Pass efi_guid_t by pointer in fwu_mdata_get_image_guid(). - Add patches: 5/7 test: cmd: part: add UUID lookup tests 3/7 test: cmd: add unit tests for part command 2/7 test: dm: part: add test for part_get_info_by_uuid - Pass efi_guid_t by pointer in fwu_mdata_get_image_guid() calls. board/st/stm32mp2/stm32mp2.c | 32 +++++++++++++++++++++++++++ include/configs/stm32mp25_st_common.h | 15 +++++++++++++ 2 files changed, 47 insertions(+) diff --git a/board/st/stm32mp2/stm32mp2.c b/board/st/stm32mp2/stm32mp2.c index 43bc583378e6..5cbbbc322a3a 100644 --- a/board/st/stm32mp2/stm32mp2.c +++ b/board/st/stm32mp2/stm32mp2.c @@ -208,4 +208,36 @@ void fwu_plat_get_bootidx(uint *boot_idx) *boot_idx = (readl(TAMP_FWU_BOOT_INFO_REG) >> TAMP_FWU_BOOT_IDX_OFFSET) & TAMP_FWU_BOOT_IDX_MASK; } + +int fwu_platform_hook(struct udevice *dev, struct fwu_data *data) +{ + uint boot_idx; + efi_guid_t boot_uuid, root_uuid; + const efi_guid_t boot_type_guid = PARTITION_XBOOTLDR; + const efi_guid_t root_type_guid = + PARTITION_LINUX_FILE_SYSTEM_DATA_GUID; + char uuidbuf[UUID_STR_LEN + 1]; + int retb, retr; + + fwu_plat_get_bootidx(&boot_idx); + + retb = fwu_mdata_get_image_guid(&boot_uuid, &boot_type_guid, boot_idx); + retr = fwu_mdata_get_image_guid(&root_uuid, &root_type_guid, boot_idx); + + if (!retb && !retr) { + uuid_bin_to_str(boot_uuid.b, uuidbuf, UUID_STR_FORMAT_GUID); + env_set("boot_partuuid", uuidbuf); + + uuid_bin_to_str(root_uuid.b, uuidbuf, UUID_STR_FORMAT_GUID); + env_set("root_partuuid", uuidbuf); + } else if (!retb && retr) { + log_warning("%s: found boot GUID but missing root GUID (%d)\n", + __func__, retr); + } else if (!retr && retb) { + log_warning("%s: found root GUID but missing boot GUID (%d)\n", + __func__, retb); + } + + return 0; +} #endif /* CONFIG_FWU_MULTI_BANK_UPDATE */ diff --git a/include/configs/stm32mp25_st_common.h b/include/configs/stm32mp25_st_common.h index cb679eb1be22..0b0267ae99b0 100644 --- a/include/configs/stm32mp25_st_common.h +++ b/include/configs/stm32mp25_st_common.h @@ -8,7 +8,22 @@ #ifndef __CONFIG_STM32MP25_ST_COMMON_H__ #define __CONFIG_STM32MP25_ST_COMMON_H__ +#ifdef CONFIG_FWU_MULTI_BANK_UPDATE +#define SCAN_DEV_FOR_BOOT_PARTS \ + "setenv devplist; " \ + "env exists boot_partuuid && " \ + "part number ${devtype} ${devnum} ${boot_partuuid} devplist; " \ + "env exists devplist || " \ + "part list ${devtype} ${devnum} -bootable devplist; " + +#define ST_STM32MP25_FWU_ENV \ + "altbootcmd=${bootcmd}\0" +#else +#define ST_STM32MP25_FWU_ENV +#endif + #define STM32MP_BOARD_EXTRA_ENV \ + ST_STM32MP25_FWU_ENV \ "usb_pgood_delay=2000\0" \ "console=ttySTM0\0"