From patchwork Wed Apr 15 18:31:34 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4541 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 7B71E3F2F2 for ; Wed, 15 Apr 2026 20:33:17 +0200 (CEST) Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43d03db814esf7313083f8f.2 for ; Wed, 15 Apr 2026 11:33:17 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1776277997; cv=pass; d=google.com; s=arc-20240605; b=fKAhuKGQX6MMFAMajBksra3mNCUzYa4INinkpWqWu8v6565bbjXiE+u1vc0kvu88S4 cJxSphM31im5g6BGNzwkNIaimFeuYbfhW495fk3NJphRu+vZLcDZv4+zN9AUI9JTbcni CrmE7UcxuafpYu7LBtroqWLpiRgvGhLUQKdmSp1FTZq+oEpMReZcEFYHTb4ZL1UK15WZ uZSMPlSMcuMSMZ+SEqX6weePZMHbIgSxDC0mkj2SF+g10KktFEPr+5h8OY0n6e44vGLW REa2vH9F0yOhQorvHuY7fknYplnWqp0tdB81tDbyispBAml4+XrGR3pmjeIxiFMq/YFl baEQ== 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=2m9fmwjAYIRKGpcQcgJJ0C41/EF475H2uTmKVu64Bac=; fh=1Eo4YN9Sd34gC2KR46/oW8nkVIV/S/6igFrH+Sfjlu0=; b=NuuCcQQOy6xLKeONca+ObKWBvgRoPIMaK/2cttIhxQ3F0Y+pbHc3mxf6C9Sv23TN9M 9jj7/m8YcJFCKaiFVcyR4tgjBAKxUgBLa/Wprg9UWKBCLDFb+0LFDsJt0pRqO3QshClh EPsUx6MCjUEIbco42jg+ngWEOu72k840/lJgURfEjgam4A7zP8jZknd3rNccTN0WjR6X fpSMbJ8kFHDuynpmJKNurMpFdKA3q1D6R069SetawbDEWsOfavZTTDsGMOEp0b/EQcWr sjdm8h4+u2+DLn8slMTH/6c7kwvvJVVtryEkkdbUMnEf2n7zEUdyAiH4iKx39R1iRdPf nJPQ==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=C+x+GLWm; 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=1776277997; x=1776882797; 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=2m9fmwjAYIRKGpcQcgJJ0C41/EF475H2uTmKVu64Bac=; b=kYX1y0G1iWqgjuZ+GfBzQmO3WGCfDTDsPHDAC1E2eyx/HXCSfPTKqEeZQpEG1PSk8D 09VcZUgGnVsN29XAFw8KDw+0fKHwF9D3uuZq2oNuB9wchQkQsjyHDlMsMONsQRDsrw7U mIkDqFuh9PDh0yu7/5Cj6jG56lHCugdYDDm+8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776277997; x=1776882797; 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=2m9fmwjAYIRKGpcQcgJJ0C41/EF475H2uTmKVu64Bac=; b=ff6rTBxEVd8/wBFQ5b2/8tgmmIYe/2zTjBm8vTv3E39BrLyh8AQ252KZiQULEs3l7w tO2QtPSbXKJpUuClNT+lS5H7gPCYF+CNnGt3Ort8Rx+WquHXpWQSSy0VJaoLry3CnADs x/EcfbVbjRgiwqqKYaqk0c5oxHh1iQHDstZM9jN6Y7IWFhV80R/OdWxWfeRj8tqaXQZe qRDGpwHseCendCkBGJZFY5K168rbIImp6XpnCqC8paVJ/L75CWKuLAx+ifpCcIuCZ1Lb WcDEfgdi0fggR0nqzmd0Dqm4ef9IJaEFeQ+G3cwS48NRdjuc1gp2pQ1VRPsR4CMrr25N NuYA== X-Forwarded-Encrypted: i=2; AFNElJ+/yr0r7oQVZml+EDPjG4MbSlK3lmKISFcdQNt76OKpDIsSN0N77q/NGhvQDJmZ1bDZ3Yerz7JGFMiEkYtn@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YzOYPFgQ9yx8/f2DkeZ9M6M1KzZ+obGT/zgY13cW2HPfEec7Tr3 OFblNT2N46mxiRI+thJ7dAtVqdcGA/rt8gDswcTspn74cSTQEUWHEHPaAyHZ0mo5XT7Mag== X-Received: by 2002:a05:600c:c08b:b0:488:bc6a:528d with SMTP id 5b1f17b1804b1-488d68867a0mr227519475e9.22.1776277997053; Wed, 15 Apr 2026 11:33:17 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="AYAyTiJO0nkpuvc9LwnBsQybXAYuijxC94809eDjlowZ6Nvn2g==" Received: by 2002:a05:600d:844f:20b0:486:fa9e:92eb with SMTP id 5b1f17b1804b1-488f4b1d8d9ls287815e9.2.-pod-prod-02-eu; Wed, 15 Apr 2026 11:33:15 -0700 (PDT) X-Received: by 2002:a05:600c:8706:b0:488:a62d:76d7 with SMTP id 5b1f17b1804b1-488d67df53cmr324174185e9.1.1776277995349; Wed, 15 Apr 2026 11:33:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776277995; cv=none; d=google.com; s=arc-20240605; b=CGS2QI2nM6H2XiFf56yChsAHH3mTwGidVOo1wNBxap/eG4W/yvJZFg4S5fz5CXus0V QE6g7QxaNEDCKLp6wH+2GEHQiq82CvAVndrSYmOaiHlAzINuJs39S3iGX1lQjqnDlF5H ihJOwronGjuIvFqH3DhveIB210hU0PAWHRHkT9tQyTt+kR7VS/QtH3D1Fkvgb7aVCNTY L8/QNZLlVUcMdTbvmU4oHY/esyCm2yW2Kg1f/uitnzj/ghPXLzkhsAzyAr4oPShQ+X1B fRHDiN7EeBYw/fdVr4GCvIS75AmppNgw3QSHQgfV4TYeHl8WSmMeJXGBPiEXMugf3ccO wFSw== 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=gEPs0fGJ6OgadP+ub4aVqo1ljemvKjXa6np+zn4X2AI=; fh=A7b4Lcg6d42EDiThJT5tK+BuJbQ+NoCE2BQ6B+bO/SE=; b=OK4g2m7wYogrDqy9A2KGib7hO8nZx3Z3S9YM3ILkBBqMJSd821TWHhlxnyNs35VZVo I4unDfnJI81hX49AflwkRu52tykhH015N9Cjcz/ZTWPosbmf7xmDh5sCqXU+y/yaTIsx ThYokVSLC5CYigay4vZCcEcp/H3TIGBU4MzT5xjd2WZlsbsZ44itKgNV6pi58KKhZZ8K gDVcK7Mt5pD8VTc2KIm46iNRgrznd0dt44Sw7NoeZ/PZDj0oEJIK06IjD2YuCQXJ0mtf cG3d1AO94wdeFF31zISAN8NIAku9Y01ocUlNdhEm8eM6oTYSPsQWoQN57jm46Hxsfumc Pb4g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=C+x+GLWm; 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-488f1e51509sor4501865e9.10.2026.04.15.11.33.15 for (Google Transport Security); Wed, 15 Apr 2026 11:33:15 -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: AeBDiet9sALdK1RElgExvTJWnluXlfL2P98Oh+Y4MM/xNH8N51SmoOSBtsLXluhQ1P6 oy+u/f5MqVSuczpnlAMN4b79MwfBHI3+S/fmIB87vljh8+MqEAc2kVDkiVrz5HoU7lngjBOWXVO PMSRhe/XldOGQ7A0wboa7uuoYLrcPbSPtEjlWMo44Pdtf4O85yHva86uMU6TWjV0EwSOkx6QBn7 D3EMYFWyS4U8poyA+DAMf3t/302ng7VMG5jprEpLxEtJ316puxhcVnRNda8R6TdBAYpQkOrAtb3 rLdnj/txmE0W+gDQMEYZRNcJOkevohJqcL0TUC5YRGxuiPDhCAFhFOrwZTymmxximnDcLGqwigo 4PBHrYWGPBTNTWhnCi1YY+ZqfCf3IKZPrCsQkJdX6s9uUFCFiYYk0vRaIIedRa0gchlWgPKAJA5 1UGVeP6s2Mm54p+8XJrm9B4k++Kkx9p5uYl1GxjQs/0tnmTxSqVXzsoHx+ALWn8qRzuQrx9/erb mmn6Nl34L+M9edDbGJkXnpdvN9wef0msadIkW4a6GQisGI96/wM6eAvHA== X-Received: by 2002:a05:600c:c0da:b0:488:b187:d898 with SMTP id 5b1f17b1804b1-488d685b6e8mr276633475e9.14.1776277994818; Wed, 15 Apr 2026 11:33:14 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.amarulasolutions.com ([2.196.40.93]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f0e72980sm34953115e9.5.2026.04.15.11.33.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 11:33:14 -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 , Quentin Schulz , Tom Rini , uboot-stm32@st-md-mailman.stormreply.com Subject: [PATCH v3 7/7] board: st: stm32mp25: support dynamic A/B bank bootup Date: Wed, 15 Apr 2026 20:31:34 +0200 Message-ID: <20260415183250.3031030-8-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260415183250.3031030-1-dario.binacchi@amarulasolutions.com> References: <20260415183250.3031030-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=C+x+GLWm; 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 v3: - 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"