| Message ID | 20260426154724.2042569-1-dario.binacchi@amarulasolutions.com |
|---|---|
| Headers |
Return-Path:
<linux-amarula+bncBCQ4XFG47UFRBEXHXDHQMGQES35AWXY@amarulasolutions.com>
X-Original-To: linux-amarula@patchwork.amarulasolutions.com
Delivered-To: linux-amarula@patchwork.amarulasolutions.com
Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com
[209.85.128.69])
by ganimede.amarulasolutions.com (Postfix) with ESMTPS id A70663F206
for <linux-amarula@patchwork.amarulasolutions.com>;
Sun, 26 Apr 2026 17:47:31 +0200 (CEST)
Received: by mail-wm1-f69.google.com with SMTP id
5b1f17b1804b1-48a548b585csf39791685e9.2
for <linux-amarula@patchwork.amarulasolutions.com>;
Sun, 26 Apr 2026 08:47:31 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; t=1777218451; cv=pass;
d=google.com; s=arc-20240605;
b=aVFnP4d4zFKO3gvTYMgti6NVM/ynLM6Btjndwwpo4A12tFRcdz+9NWgq4WX+FmrBns
gSLx9ZW8w2e7hI3EDXw+KfzU29wenoSmU6I6yWCy5D2QE6xb9BP6S0XhYzXnDWgTtvKD
82uKPiWIMs5Qr4trVWubp2TCoeRtYZufDA1PSQblgNS/k1koMbj56WXx/dR0gm3wcMXF
mYWhCwuXE4J9F7YIVTSUJPr9JD4F7Jl15N5ziROiinTIZLZU2PuK94wagjTjb1W9Ab0L
aXqN/lkfDspNRVT0iiaWhXW8isjZ0c1XFFe40O1YClrwXL2OEGD1j8ZxdGVsSTJ0YIbn
qRJA==
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:message-id:date:subject:cc:to
:from:dkim-signature;
bh=UKtMyoi0sbcuwpCzMbo8WrgaoZyv4hxafMRorLngD7g=;
fh=YCsuwcrmaN0PBm8QGuG9nz3VGYLFCGgW1dTowr9P75I=;
b=N5MAYTM1BqzGyO99SLLxCvVTyejid7nFVvJm+Zo3ziUbju6pdMFt1bMrCQycs5G1/2
13WSjAmIP6yfAUufiWbLxGfAlSCSsRDcsFuwJ+4awYqxOxgfUUneDkk2cAgrmRsyfkdQ
5SmxBM6tJoI4jYVSm+y/B1JFAU9Q1QMIG34J8zC12UWTrMMfTPdQ/HPc7Gfq8XbmVtuT
VJTZ6IcF5a6Cd4hTckjy1jcM0IWfRm5YMtMYrhZat3Wa06CHU0T76WhY0KeDRDOe35mf
uQHVuWfWypRVnFVdHmAzfFiMRoX+WUkFKBH9zA5JkZA6+7bS3vAtKWKh8W9F5ERBEuLZ
4i3w==;
darn=patchwork.amarulasolutions.com
ARC-Authentication-Results: i=2; mx.google.com;
dkim=pass header.i=@amarulasolutions.com header.s=google
header.b=Mw8H+Rzv;
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=1777218451; x=1777823251;
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:message-id:date:subject:cc:to:from
:from:to:cc:subject:date:message-id:reply-to;
bh=UKtMyoi0sbcuwpCzMbo8WrgaoZyv4hxafMRorLngD7g=;
b=iUrK+fkarkgkLBnplG+Q4BLxAAhGH2EhAR/wr8UUeyxjv3i2XVR7b+9JPomuxe9vbD
UKq4BBvFNIkooOm1nidypRrwIlQYprf5/44sLiFvFt1FKBDR4wAPUxnf3ebszG2tnqfx
Aiegiwvi5sjGyPicVtxXtGBmQo8CH+nrKxivQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1777218451; x=1777823251;
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
: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=UKtMyoi0sbcuwpCzMbo8WrgaoZyv4hxafMRorLngD7g=;
b=EdhuKHvSJl7tn9bj18wqlhm/VW+QU39rEtQ3tjSwZwiCJfK/PqyxCC9+ghlpz4zS8I
NJ6tVaywyrws4TKxgMNtJM+Q59Z8/NjBs0qrvZnE1DWeyVqcIyPV15+YYMvXeNcrLCT5
LUbf+T0PjkBeJDYgilflUrQL/zk9rZ/S5atYibe0BfNF9+daK0WFkqgK4n4tG0PgOoW1
I3iz1r6uPX0wv+4Ul+iiMKp6j2GSWdGlrvh1EZnNdbEJne2zY/vkmsr02rJipgFZOmk9
SvlubPDbqxPLzkQrDruQVZraHicUyTRRTpH0XHyY6poAKe7yFkMzbjVORShKZZTVBpQ1
GLYQ==
X-Forwarded-Encrypted: i=2;
AFNElJ+KkkKM25r1rZ8S1ADnrhVVEjQowOP1VO40lsbv0worDWEzAAhAeDCSSpf7sdP/dhGB10DTRYXqowsx2ay9@patchwork.amarulasolutions.com
X-Gm-Message-State: AOJu0Yx2hoNIfod2iu4KC5/BON8xsv2ANwYkZfu+0xCogFUU+Srqx+Ce
V/wCpKkkEubt86JpkoNURFExwd0ty4i2xTSSqSf6ZMnGjbOBDH0kLGK7UoyeMZSAMU9amSUHI1Q
w4g==
X-Received: by 2002:a05:600c:4f13:b0:489:1a65:dd6e with SMTP id
5b1f17b1804b1-4891a65de3emr474009645e9.8.1777218451134;
Sun, 26 Apr 2026 08:47:31 -0700 (PDT)
X-BeenThere: linux-amarula@amarulasolutions.com;
h="AYAyTiKrs5fR7VUpQOSKzWAt+jbVN/4H97Om4X5r6P8IKKZOsg=="
Received: by 2002:a05:600c:687:b0:48a:58a1:abad with SMTP id
5b1f17b1804b1-48a58a1ad0bls23467235e9.0.-pod-prod-07-eu; Sun, 26 Apr 2026
08:47:29 -0700 (PDT)
X-Received: by 2002:a05:600c:37c6:b0:48a:65a5:750f with SMTP id
5b1f17b1804b1-48a65a57563mr149082665e9.21.1777218449469;
Sun, 26 Apr 2026 08:47:29 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1777218449; cv=none;
d=google.com; s=arc-20240605;
b=N86mNIUm8Rbx/RPZ95tp+vRSpgSJ6OeRLo5plWdsnKEvpQPNm+/4o6STCxfEfldwYH
qaqT0BKA74ZPPb3SLbviKWMst77AnPxOFrO4ezGPlqL14/hQ1uBcN13B1Z5WpiTR9f26
pw/OhsrMujn5ZHaHo0vzm954u3TApqGE0QBmwj+UZcJXT8qsPm6ZAVFPooYmyYPAFU4w
rNlfk2d9hb/R0O9UCQyXZJSe9ypVIyMk75+XtjZb8iVAQofBR2IYy5O85eIyZd/h/ydN
BI/RK6WsBVRwQN8oHENpx0UU6N/DqCCVSlLyQLFOSRldit/OkxHQKxlm5DDUuIm5S6WE
b/dg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:dkim-signature;
bh=Ay5BWKMwp9o/rxZeYsRX2pfTyaEApr2HS5FZb4AfA/Y=;
fh=mt5GTj5JmZ2CtV6OBXgC7VsSU6VhF6iFjoJEbDMF2qg=;
b=MdSkBgkFkB2UmCy83/P9rbbu34Gq1qLU5SUnJ/HQrnTAJZijfPIYVsoGj4H8z48iJI
U3zHfs0z1wa2M+agGV6QQZVYR5hxOU7x0tXgUZxXowMgkERmDCMDKcIt5l5o3Dsb536J
Qdb097xxn0KgcX7FaPg0GkkLCS0dzK6Swb2nmtKXyf6kez0NOB7F22wq17uOFNS1LBue
9PbjvQIdMNgDYVvrD0hLofUcE0aWHhGrC1gbb9o0rHrgKVPaIw4yZTGe+xHLuuZdTP35
0I83i0NzzvHo2s6R1EGg7ac74KqNzDpmY4pi6Q1F3UpHGc/awGWxU/EBY9ilEjSwAXc8
ePYw==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@amarulasolutions.com header.s=google
header.b=Mw8H+Rzv;
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
ffacd0b85a97d-43fe4e170cesor3870124f8f.15.2026.04.26.08.47.29
for <linux-amarula@amarulasolutions.com>
(Google Transport Security);
Sun, 26 Apr 2026 08:47:29 -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: AeBDiesExT9EzKbnaekUan46D0xer7MmjTIP0jebuHBTh6lQqWuv4FvWWbLOJDTnDk4
cgJv0kUAX3K2miOt9anyb3a/RpIKzzQyp+/h8OsKGVxr3iSZMpd5UnVm9wLkeDf6CN4zKQ5aTQM
PoeomZ6c0m9S+pwGx2xRsJKgoh/btuLwKwL7qHn3zS5wIqUUrCe7LnYNXf5zvNO1bSavP/BEC3l
lveJThWqLts7KPPftzwgRQrGWMVikU6V8rNPIjMN/rQ4aElumOrwhMERQBew9CKsv5hZivB9w3/
tEdWDFiUDfSi5FKPt/Nb93mz26w+ahYXG4EidPXnjCHypPvfGNvaRm3o4oULv1BQJ3PlzeFYte8
XvsGf3c7K5+gdGBRBFSXnqgYZdDXXk62gFaYdkzkZnWMuQ+9STaQdETLsWNFlstMoKT45bdUi+l
JaZlN5jA3h2FQl9TQr9sNE9euBBEcy4jeSMZrI4krtpkdKYjEi7w3LZ+Q02sHMsnYZ/FrgFVaUG
pPzQp+UCVyPWHnzDL44J6du2cvkZAXzSFxmjAbs7st+LyZL2QwoJrEsMQ15wm3OlSWcUFRqEZw7
twB4P3qMeY4auPJ4Aywdoqkf7lBhJw==
X-Received: by 2002:a05:6000:25c4:b0:43b:8f56:1e1d with SMTP id
ffacd0b85a97d-43fe3dc10demr61510778f8f.13.1777218448919;
Sun, 26 Apr 2026 08:47:28 -0700 (PDT)
Received: from dario-ThinkPad-P14s-Gen-5.amarulasolutions.com
(host-82-56-22-134.retail.telecomitalia.it. [82.56.22.134])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-44123d23e0bsm34489985f8f.15.2026.04.26.08.47.27
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 26 Apr 2026 08:47:28 -0700 (PDT)
From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
To: u-boot@lists.denx.de
Cc: linux-amarula@amarulasolutions.com,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
Bin Meng <bmeng.cn@gmail.com>, Dinesh Maniyam <dinesh.maniyam@altera.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Javier Martinez Canillas <javierm@redhat.com>,
Jerome Forissier <jerome.forissier@arm.com>,
Jonathan GUILLOT <jonathan@joggee.fr>,
Kory Maincent <kory.maincent@bootlin.com>,
Marek Vasut <marek.vasut+renesas@mailbox.org>,
Mattijs Korpershoek <mkorpershoek@kernel.org>,
Michal Simek <michal.simek@amd.com>,
Padmarao Begari <padmarao.begari@amd.com>,
Patrice Chotard <patrice.chotard@foss.st.com>,
Patrick Delaunay <patrick.delaunay@foss.st.com>,
Quentin Schulz <quentin.schulz@cherry.de>, Rasmus Villemoes <ravi@prevas.dk>,
Simon Glass <sjg@chromium.org>, Sughosh Ganu <sughosh.ganu@arm.com>,
Tom Rini <trini@konsulko.com>,
=?utf-8?q?Vincent_Stehl=C3=A9?= <vincent.stehle@arm.com>,
uboot-stm32@st-md-mailman.stormreply.com
Subject: [PATCH v7 0/8] Support metadata-driven A/B boot for STM32MP25
Date: Sun, 26 Apr 2026 17:46:53 +0200
Message-ID: <20260426154724.2042569-1-dario.binacchi@amarulasolutions.com>
X-Mailer: git-send-email 2.43.0
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=Mw8H+Rzv;
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: <linux-amarula.amarulasolutions.com>
X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com
X-Google-Group-Id: 476853432473
List-Post:
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/post>,
<mailto:linux-amarula@amarulasolutions.com>
List-Help:
<https://support.google.com/a/amarulasolutions.com/bin/topic.py?topic=25838>,
<mailto:linux-amarula+help@amarulasolutions.com>
List-Archive:
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/>
List-Unsubscribe:
<mailto:googlegroups-manage+476853432473+unsubscribe@googlegroups.com>,
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/subscribe>
|
| Series |
Support metadata-driven A/B boot for STM32MP25
|
|
Message
Dario Binacchi
April 26, 2026, 3:46 p.m. UTC
This series, the mainline version of [1], provides the necessary changes in U-Boot to support the metadata-driven A/B update flow for STM32MP25 boards. It implements the logic required to dynamically select the boot bank based on FWU metadata. These changes are designed to be backward compatible while providing the necessary infrastructure for the A/B scheme. The series has been tested on the STM32MP257F-EV1 board. Additionally, some patches in the series propose changes with general-purpose utility: 1/7 lib: uuid: add partition type GUID for extended bootloader 4/7 cmd: part: support lookup by UUID in 'part number' 6/7 fwu: add helper to get image GUID by type and bank index [1] https://github.com/STMicroelectronics/u-boot/pull/6 Changes in v7: - Add Reviewed-by of Simon Glass for patc 7/8 of "test: dm: fwu_mdata: add test for fwu_mdata_get_image_guid". Changes in v6: - Add Reviewed-by of Simon Glass to patch 3/8 "test: cmd: add unit tests for part command" Changes in v5: - Update doc/usage/cmd/part.rst to reflect the changes related to the part command. - Add Acked-by of Ilias Apalodimas to patch 6/8 "fwu: add helper to get image GUID by type and bank index" Changes in v4: - Place the part command tests in the cmd suite rather than the dm suite. - Order the include files according the U-Boot coding style. - 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. 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 Dario Binacchi (8): lib: uuid: add partition type GUID for extended bootloader test: dm: part: add test for part_get_info_by_uuid test: cmd: add unit tests for part command cmd: part: support lookup by UUID test: cmd: part: add UUID lookup tests fwu: add helper to get image GUID by type and bank index test: dm: fwu_mdata: add test for fwu_mdata_get_image_guid board: st: stm32mp25: support dynamic A/B bank bootup board/st/stm32mp2/stm32mp2.c | 32 ++++ cmd/part.c | 12 +- doc/README.gpt | 2 + doc/usage/cmd/part.rst | 6 +- include/configs/stm32mp25_st_common.h | 15 ++ include/fwu.h | 11 ++ include/part_efi.h | 3 + lib/fwu_updates/fwu.c | 33 ++++ lib/uuid.c | 1 + test/cmd/Makefile | 1 + test/cmd/part.c | 209 ++++++++++++++++++++++++++ test/dm/fwu_mdata.c | 48 ++++++ test/dm/part.c | 53 +++++++ 13 files changed, 419 insertions(+), 7 deletions(-) create mode 100644 test/cmd/part.c
Comments
On 4/26/26 17:46, Dario Binacchi wrote: > This series, the mainline version of [1], provides the necessary changes > in U-Boot to support the metadata-driven A/B update flow for STM32MP25 > boards. It implements the logic required to dynamically select the boot > bank based on FWU metadata. > > These changes are designed to be backward compatible while providing > the necessary infrastructure for the A/B scheme. > > The series has been tested on the STM32MP257F-EV1 board. > > Additionally, some patches in the series propose changes with > general-purpose utility: > > 1/7 lib: uuid: add partition type GUID for extended bootloader > 4/7 cmd: part: support lookup by UUID in 'part number' > 6/7 fwu: add helper to get image GUID by type and bank index > > [1] https://github.com/STMicroelectronics/u-boot/pull/6 > > Changes in v7: > - Add Reviewed-by of Simon Glass for patc 7/8 of "test: dm: > fwu_mdata: add test for fwu_mdata_get_image_guid". > > Changes in v6: > - Add Reviewed-by of Simon Glass to patch 3/8 "test: cmd: add unit > tests for part command" > > Changes in v5: > - Update doc/usage/cmd/part.rst to reflect the changes related to the > part command. > - Add Acked-by of Ilias Apalodimas to patch 6/8 "fwu: add helper to get > image GUID by type and bank index" > > Changes in v4: > - Place the part command tests in the cmd suite rather than the dm > suite. > - Order the include files according the U-Boot coding style. > - 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. > > 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 > > Dario Binacchi (8): > lib: uuid: add partition type GUID for extended bootloader > test: dm: part: add test for part_get_info_by_uuid > test: cmd: add unit tests for part command > cmd: part: support lookup by UUID > test: cmd: part: add UUID lookup tests > fwu: add helper to get image GUID by type and bank index > test: dm: fwu_mdata: add test for fwu_mdata_get_image_guid > board: st: stm32mp25: support dynamic A/B bank bootup > > board/st/stm32mp2/stm32mp2.c | 32 ++++ > cmd/part.c | 12 +- > doc/README.gpt | 2 + > doc/usage/cmd/part.rst | 6 +- > include/configs/stm32mp25_st_common.h | 15 ++ > include/fwu.h | 11 ++ > include/part_efi.h | 3 + > lib/fwu_updates/fwu.c | 33 ++++ > lib/uuid.c | 1 + > test/cmd/Makefile | 1 + > test/cmd/part.c | 209 ++++++++++++++++++++++++++ > test/dm/fwu_mdata.c | 48 ++++++ > test/dm/part.c | 53 +++++++ > 13 files changed, 419 insertions(+), 7 deletions(-) > create mode 100644 test/cmd/part.c > Hi Dario I am preparing a pull request for STM32 including this series. Unfortunately, there is an error linked to tests test/cmd/part.c You can use my temporary pull request tag u-boot-stm32-20260429 You will find the error logs here encountered with qemu test : https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/29932 Thanks Patrice To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
Hello Patrice, Sorry, but I can't log in. My Custodian account has expired, and that might be the reason. I need to ask Tom Rini to reactivate it. In the meantime, can you please give me some information about the error? Thanks and regards, Dario On Wed, Apr 29, 2026 at 11:14 AM Patrice CHOTARD < patrice.chotard@foss.st.com> wrote: > > > On 4/26/26 17:46, Dario Binacchi wrote: > > This series, the mainline version of [1], provides the necessary changes > > in U-Boot to support the metadata-driven A/B update flow for STM32MP25 > > boards. It implements the logic required to dynamically select the boot > > bank based on FWU metadata. > > > > These changes are designed to be backward compatible while providing > > the necessary infrastructure for the A/B scheme. > > > > The series has been tested on the STM32MP257F-EV1 board. > > > > Additionally, some patches in the series propose changes with > > general-purpose utility: > > > > 1/7 lib: uuid: add partition type GUID for extended bootloader > > 4/7 cmd: part: support lookup by UUID in 'part number' > > 6/7 fwu: add helper to get image GUID by type and bank index > > > > [1] https://github.com/STMicroelectronics/u-boot/pull/6 > > > > Changes in v7: > > - Add Reviewed-by of Simon Glass for patc 7/8 of "test: dm: > > fwu_mdata: add test for fwu_mdata_get_image_guid". > > > > Changes in v6: > > - Add Reviewed-by of Simon Glass to patch 3/8 "test: cmd: add unit > > tests for part command" > > > > Changes in v5: > > - Update doc/usage/cmd/part.rst to reflect the changes related to the > > part command. > > - Add Acked-by of Ilias Apalodimas to patch 6/8 "fwu: add helper to get > > image GUID by type and bank index" > > > > Changes in v4: > > - Place the part command tests in the cmd suite rather than the dm > > suite. > > - Order the include files according the U-Boot coding style. > > - 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. > > > > 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 > > > > Dario Binacchi (8): > > lib: uuid: add partition type GUID for extended bootloader > > test: dm: part: add test for part_get_info_by_uuid > > test: cmd: add unit tests for part command > > cmd: part: support lookup by UUID > > test: cmd: part: add UUID lookup tests > > fwu: add helper to get image GUID by type and bank index > > test: dm: fwu_mdata: add test for fwu_mdata_get_image_guid > > board: st: stm32mp25: support dynamic A/B bank bootup > > > > board/st/stm32mp2/stm32mp2.c | 32 ++++ > > cmd/part.c | 12 +- > > doc/README.gpt | 2 + > > doc/usage/cmd/part.rst | 6 +- > > include/configs/stm32mp25_st_common.h | 15 ++ > > include/fwu.h | 11 ++ > > include/part_efi.h | 3 + > > lib/fwu_updates/fwu.c | 33 ++++ > > lib/uuid.c | 1 + > > test/cmd/Makefile | 1 + > > test/cmd/part.c | 209 ++++++++++++++++++++++++++ > > test/dm/fwu_mdata.c | 48 ++++++ > > test/dm/part.c | 53 +++++++ > > 13 files changed, 419 insertions(+), 7 deletions(-) > > create mode 100644 test/cmd/part.c > > > > > > Hi Dario > > I am preparing a pull request for STM32 including this series. > Unfortunately, there is an error linked to tests test/cmd/part.c > > You can use my temporary pull request tag u-boot-stm32-20260429 > > You will find the error logs here encountered with qemu test : > https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/29932 > > Thanks > Patrice > >
Hi Dario Please find the log of test.py execution for qemu-riscv32 test which triggers the error mentioned. For information, 9 qemu tests are failed with the same error. qemu-riscv32 test.py qemu-riscv32_spl test.py qemu-riscv64 test.py qemu-riscv64_smode test.py qemu-riscv64_smode_acpi test.py qemu-riscv64_spl test.py qemu-x86_64 test.py qemu_arm64 test.py qemu_arm test.py Thanks Patrice On 4/29/26 11:19, Dario Binacchi wrote: > Hello Patrice, > > Sorry, but I can't log in. My Custodian account has expired, and that might > be the reason. I need to ask Tom Rini to reactivate it. > In the meantime, can you please give me some information about the error? > > Thanks and regards, > Dario > > On Wed, Apr 29, 2026 at 11:14 AM Patrice CHOTARD < > patrice.chotard@foss.st.com> wrote: > >> >> >> On 4/26/26 17:46, Dario Binacchi wrote: >>> This series, the mainline version of [1], provides the necessary changes >>> in U-Boot to support the metadata-driven A/B update flow for STM32MP25 >>> boards. It implements the logic required to dynamically select the boot >>> bank based on FWU metadata. >>> >>> These changes are designed to be backward compatible while providing >>> the necessary infrastructure for the A/B scheme. >>> >>> The series has been tested on the STM32MP257F-EV1 board. >>> >>> Additionally, some patches in the series propose changes with >>> general-purpose utility: >>> >>> 1/7 lib: uuid: add partition type GUID for extended bootloader >>> 4/7 cmd: part: support lookup by UUID in 'part number' >>> 6/7 fwu: add helper to get image GUID by type and bank index >>> >>> [1] https://github.com/STMicroelectronics/u-boot/pull/6 >>> >>> Changes in v7: >>> - Add Reviewed-by of Simon Glass for patc 7/8 of "test: dm: >>> fwu_mdata: add test for fwu_mdata_get_image_guid". >>> >>> Changes in v6: >>> - Add Reviewed-by of Simon Glass to patch 3/8 "test: cmd: add unit >>> tests for part command" >>> >>> Changes in v5: >>> - Update doc/usage/cmd/part.rst to reflect the changes related to the >>> part command. >>> - Add Acked-by of Ilias Apalodimas to patch 6/8 "fwu: add helper to get >>> image GUID by type and bank index" >>> >>> Changes in v4: >>> - Place the part command tests in the cmd suite rather than the dm >>> suite. >>> - Order the include files according the U-Boot coding style. >>> - 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. >>> >>> 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 >>> >>> Dario Binacchi (8): >>> lib: uuid: add partition type GUID for extended bootloader >>> test: dm: part: add test for part_get_info_by_uuid >>> test: cmd: add unit tests for part command >>> cmd: part: support lookup by UUID >>> test: cmd: part: add UUID lookup tests >>> fwu: add helper to get image GUID by type and bank index >>> test: dm: fwu_mdata: add test for fwu_mdata_get_image_guid >>> board: st: stm32mp25: support dynamic A/B bank bootup >>> >>> board/st/stm32mp2/stm32mp2.c | 32 ++++ >>> cmd/part.c | 12 +- >>> doc/README.gpt | 2 + >>> doc/usage/cmd/part.rst | 6 +- >>> include/configs/stm32mp25_st_common.h | 15 ++ >>> include/fwu.h | 11 ++ >>> include/part_efi.h | 3 + >>> lib/fwu_updates/fwu.c | 33 ++++ >>> lib/uuid.c | 1 + >>> test/cmd/Makefile | 1 + >>> test/cmd/part.c | 209 ++++++++++++++++++++++++++ >>> test/dm/fwu_mdata.c | 48 ++++++ >>> test/dm/part.c | 53 +++++++ >>> 13 files changed, 419 insertions(+), 7 deletions(-) >>> create mode 100644 test/cmd/part.c >>> >> >> >> >> Hi Dario >> >> I am preparing a pull request for STM32 including this series. >> Unfortunately, there is an error linked to tests test/cmd/part.c >> >> You can use my temporary pull request tag u-boot-stm32-20260429 >> >> You will find the error logs here encountered with qemu test : >> https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/29932 >> >> Thanks >> Patrice >> >> > To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com. [0KRunning with gitlab-runner 17.8.1 (a1fca00e)[0;m [0K on konsulko-guru t2_5yocyD, system ID: s_99166040f6c2[0;m section_start:1777450862:prepare_executor [0K[0K[36;1mPreparing the "docker" executor[0;m[0;m [0KUsing Docker executor with image docker.io/trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 ...[0;m [0KPulling docker image docker.io/trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 ...[0;m [0KUsing docker image sha256:e118b97f1903bd9673d5b36dffcdd2b4c244aa5b9bb5993fd39c3443dc71ed78 for docker.io/trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 with digest trini/u-boot-gitlab-ci-runner@sha256:1b426dc40e93eebbc214d97b73f26ba394f5655c46b6d1eb4f14650b1efec4e8 ...[0;m section_end:1777450864:prepare_executor [0Ksection_start:1777450864:prepare_script [0K[0K[36;1mPreparing environment[0;m[0;m Running on runner-t25yocyd-project-543-concurrent-0 via guru... section_end:1777450864:prepare_script [0Ksection_start:1777450864:get_sources [0K[0K[36;1mGetting source from Git repository[0;m[0;m [32;1mFetching changes...[0;m Reinitialized existing Git repository in /builds/u-boot/custodians/u-boot-stm/.git/ [32;1mChecking out 33961ee1 as detached HEAD (ref is u-boot-stm32-20260429)...[0;m Removing test/py/.pytest_cache/ Removing test/py/__pycache__/ Removing test/py/tests/__pycache__/ Removing test/py/tests/test_android/__pycache__/ Removing test/py/tests/test_efi_capsule/__pycache__/ Removing test/py/tests/test_efi_secboot/__pycache__/ Removing test/py/tests/test_fs/__pycache__/ Removing test/py/tests/test_fs/test_squashfs/__pycache__/ Removing test/py/tests/test_semihosting/__pycache__/ Removing tools/buildman/__pycache__/ Removing tools/patman/__pycache__/ Removing tools/u_boot_pylib/__pycache__/ [32;1mSkipping Git submodules setup[0;m section_end:1777450869:get_sources [0Ksection_start:1777450869:step_script [0K[0K[36;1mExecuting "step_script" stage of the job script[0;m[0;m [0KUsing docker image sha256:e118b97f1903bd9673d5b36dffcdd2b4c244aa5b9bb5993fd39c3443dc71ed78 for docker.io/trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 with digest trini/u-boot-gitlab-ci-runner@sha256:1b426dc40e93eebbc214d97b73f26ba394f5655c46b6d1eb4f14650b1efec4e8 ...[0;m [32;1m$ git config --global --add safe.directory "${CI_PROJECT_DIR}"[0;m [32;1m$ git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks[0;m Cloning into '/tmp/uboot-test-hooks'... warning: redirecting to https://source.denx.de/u-boot/u-boot-test-hooks.git/ [32;1m$ ln -s conf.qemu_arm64 /tmp/uboot-test-hooks/bin/travis-ci/conf.qemu_arm64_lwip_na[0;m [32;1m$ ln -s u_boot_boardenv_qemu_arm64_na.py /tmp/uboot-test-hooks/py/travis-ci/u_boot_boardenv_qemu_arm64_lwip_na.py[0;m [32;1m$ ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`[0;m [32;1m$ ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`[0;m [32;1m$ if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]] || [[ "${TEST_PY_BD}" == "xilinx_mbv32_smode" ]]; then wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ; export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin; fi[0;m [32;1m$ if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "${TEST_PY_BD}" == "sifive_unleashed" ]] || [[ "${TEST_PY_BD}" == "xilinx_mbv64_smode" ]]; then wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ; export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin; fi[0;m [32;1m$ if [[ "${TEST_PY_BD}" == "qemu-arm-sbsa" ]]; then wget -O /tmp/bl1.bin https://artifacts.codelinaro.org/artifactory/linaro-419-sbsa-ref/latest/tf-a/bl1.bin; wget -O /tmp/fip.bin https://artifacts.codelinaro.org/artifactory/linaro-419-sbsa-ref/latest/tf-a/fip.bin; export BINMAN_INDIRS=/tmp; fi[0;m [32;1m$ python3 -m venv /tmp/venv; . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt -r tools/binman/requirements.txt -r tools/buildman/requirements.txt -r tools/u_boot_pylib/requirements.txt setuptools[0;m Collecting setuptools Downloading setuptools-82.0.1-py3-none-any.whl.metadata (6.5 kB) Collecting filelock==3.20.3 (from -r test/py/requirements.txt (line 1)) Using cached filelock-3.20.3-py3-none-any.whl.metadata (2.1 kB) Collecting pycryptodomex==3.21.0 (from -r test/py/requirements.txt (line 2)) Using cached pycryptodomex-3.21.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.4 kB) Collecting pytest==8.4.2 (from -r test/py/requirements.txt (line 3)) Using cached pytest-8.4.2-py3-none-any.whl.metadata (7.7 kB) Collecting pytest-xdist==2.5.0 (from -r test/py/requirements.txt (line 4)) Using cached pytest_xdist-2.5.0-py3-none-any.whl.metadata (21 kB) Collecting FATtools==1.0.42 (from -r test/py/requirements.txt (line 5)) Using cached FATtools-1.0.42-py3-none-any.whl.metadata (8.6 kB) Collecting coverage==7.8.0 (from -r tools/binman/requirements.txt (line 1)) Using cached coverage-7.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (8.5 kB) Collecting importlib_resources==6.5.2 (from -r tools/binman/requirements.txt (line 2)) Using cached importlib_resources-6.5.2-py3-none-any.whl.metadata (3.9 kB) Collecting jsonschema==4.23.0 (from -r tools/binman/requirements.txt (line 3)) Using cached jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB) Collecting pyelftools==0.31 (from -r tools/binman/requirements.txt (line 5)) Using cached pyelftools-0.31-py3-none-any.whl.metadata (381 bytes) Collecting yamllint==1.35.1 (from -r tools/binman/requirements.txt (line 6)) Using cached yamllint-1.35.1-py3-none-any.whl.metadata (4.2 kB) Collecting concurrencytest==0.1.2 (from -r tools/u_boot_pylib/requirements.txt (line 1)) Using cached concurrencytest-0.1.2-py3-none-any.whl Collecting iniconfig>=1 (from pytest==8.4.2->-r test/py/requirements.txt (line 3)) Using cached iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB) Collecting packaging>=20 (from pytest==8.4.2->-r test/py/requirements.txt (line 3)) Downloading packaging-26.2-py3-none-any.whl.metadata (3.5 kB) Collecting pluggy<2,>=1.5 (from pytest==8.4.2->-r test/py/requirements.txt (line 3)) Using cached pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) Collecting pygments>=2.7.2 (from pytest==8.4.2->-r test/py/requirements.txt (line 3)) Downloading pygments-2.20.0-py3-none-any.whl.metadata (2.5 kB) Collecting execnet>=1.1 (from pytest-xdist==2.5.0->-r test/py/requirements.txt (line 4)) Using cached execnet-2.1.2-py3-none-any.whl.metadata (2.9 kB) Collecting pytest-forked (from pytest-xdist==2.5.0->-r test/py/requirements.txt (line 4)) Using cached pytest_forked-1.6.0-py3-none-any.whl.metadata (3.5 kB) Collecting hexdump (from FATtools==1.0.42->-r test/py/requirements.txt (line 5)) Using cached hexdump-3.3-py3-none-any.whl Collecting attrs>=22.2.0 (from jsonschema==4.23.0->-r tools/binman/requirements.txt (line 3)) Downloading attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB) Collecting jsonschema-specifications>=2023.03.6 (from jsonschema==4.23.0->-r tools/binman/requirements.txt (line 3)) Using cached jsonschema_specifications-2025.9.1-py3-none-any.whl.metadata (2.9 kB) Collecting referencing>=0.28.4 (from jsonschema==4.23.0->-r tools/binman/requirements.txt (line 3)) Using cached referencing-0.37.0-py3-none-any.whl.metadata (2.8 kB) Collecting rpds-py>=0.7.1 (from jsonschema==4.23.0->-r tools/binman/requirements.txt (line 3)) Using cached rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (4.1 kB) Collecting pathspec>=0.5.3 (from yamllint==1.35.1->-r tools/binman/requirements.txt (line 6)) Downloading pathspec-1.1.1-py3-none-any.whl.metadata (14 kB) Collecting pyyaml (from yamllint==1.35.1->-r tools/binman/requirements.txt (line 6)) Using cached pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.metadata (2.4 kB) Collecting python-subunit (from concurrencytest==0.1.2->-r tools/u_boot_pylib/requirements.txt (line 1)) Using cached python_subunit-1.4.5-py3-none-any.whl.metadata (22 kB) Collecting testtools (from concurrencytest==0.1.2->-r tools/u_boot_pylib/requirements.txt (line 1)) Downloading testtools-2.9.1-py3-none-any.whl.metadata (5.4 kB) Collecting typing-extensions>=4.4.0 (from referencing>=0.28.4->jsonschema==4.23.0->-r tools/binman/requirements.txt (line 3)) Using cached typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB) Collecting py (from pytest-forked->pytest-xdist==2.5.0->-r test/py/requirements.txt (line 4)) Using cached py-1.11.0-py2.py3-none-any.whl.metadata (2.8 kB) Collecting iso8601 (from python-subunit->concurrencytest==0.1.2->-r tools/u_boot_pylib/requirements.txt (line 1)) Using cached iso8601-2.1.0-py3-none-any.whl.metadata (3.7 kB) Using cached filelock-3.20.3-py3-none-any.whl (16 kB) Using cached pycryptodomex-3.21.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB) Using cached pytest-8.4.2-py3-none-any.whl (365 kB) Using cached pytest_xdist-2.5.0-py3-none-any.whl (41 kB) Using cached FATtools-1.0.42-py3-none-any.whl (132 kB) Using cached coverage-7.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (245 kB) Using cached importlib_resources-6.5.2-py3-none-any.whl (37 kB) Using cached jsonschema-4.23.0-py3-none-any.whl (88 kB) Using cached pyelftools-0.31-py3-none-any.whl (180 kB) Using cached yamllint-1.35.1-py3-none-any.whl (66 kB) Downloading setuptools-82.0.1-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 7.4 MB/s eta 0:00:00 Downloading attrs-26.1.0-py3-none-any.whl (67 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 14.4 MB/s eta 0:00:00 Using cached execnet-2.1.2-py3-none-any.whl (40 kB) Using cached iniconfig-2.3.0-py3-none-any.whl (7.5 kB) Using cached jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB) Downloading packaging-26.2-py3-none-any.whl (100 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.2/100.2 kB 11.3 MB/s eta 0:00:00 Downloading pathspec-1.1.1-py3-none-any.whl (57 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.3/57.3 kB 9.8 MB/s eta 0:00:00 Using cached pluggy-1.6.0-py3-none-any.whl (20 kB) Downloading pygments-2.20.0-py3-none-any.whl (1.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 9.9 MB/s eta 0:00:00 Using cached referencing-0.37.0-py3-none-any.whl (26 kB) Using cached rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (390 kB) Using cached pytest_forked-1.6.0-py3-none-any.whl (4.9 kB) Using cached python_subunit-1.4.5-py3-none-any.whl (102 kB) Downloading testtools-2.9.1-py3-none-any.whl (110 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.3/110.3 kB 13.7 MB/s eta 0:00:00 Using cached pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (775 kB) Using cached typing_extensions-4.15.0-py3-none-any.whl (44 kB) Using cached iso8601-2.1.0-py3-none-any.whl (7.5 kB) Using cached py-1.11.0-py2.py3-none-any.whl (98 kB) Installing collected packages: pyelftools, hexdump, typing-extensions, testtools, setuptools, rpds-py, pyyaml, pygments, pycryptodomex, py, pluggy, pathspec, packaging, iso8601, iniconfig, importlib_resources, filelock, FATtools, execnet, coverage, attrs, yamllint, referencing, python-subunit, pytest, pytest-forked, jsonschema-specifications, concurrencytest, pytest-xdist, jsonschema Successfully installed FATtools-1.0.42 attrs-26.1.0 concurrencytest-0.1.2 coverage-7.8.0 execnet-2.1.2 filelock-3.20.3 hexdump-3.3 importlib_resources-6.5.2 iniconfig-2.3.0 iso8601-2.1.0 jsonschema-4.23.0 jsonschema-specifications-2025.9.1 packaging-26.2 pathspec-1.1.1 pluggy-1.6.0 py-1.11.0 pycryptodomex-3.21.0 pyelftools-0.31 pygments-2.20.0 pytest-8.4.2 pytest-forked-1.6.0 pytest-xdist-2.5.0 python-subunit-1.4.5 pyyaml-6.0.3 referencing-0.37.0 rpds-py-0.30.0 setuptools-82.0.1 testtools-2.9.1 typing-extensions-4.15.0 yamllint-1.35.1 [32;1m$ export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}[0;m [32;1m$ echo BUILD_ENV ${BUILD_ENV}[0;m BUILD_ENV [32;1m$ if [ -n "${BUILD_ENV}" ]; then export ${BUILD_ENV}; fi[0;m [32;1m$ tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e --board ${TEST_PY_BD} ${OVERRIDE}[0;m Building current source for 1 boards (1 thread, 8 jobs per thread) Starting build... 0 0 0 /1 -1 (starting) 1 0 0 /1 qemu-riscv32 Completed: 1 total built, 1 newly), duration 0:00:10, rate 0.10 [32;1m$ cp /opt/grub/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/[0;m [32;1m$ cp /opt/grub/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/[0;m [32;1m$ cp /opt/grub/grubriscv64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_riscv64.efi[0;m [32;1m$ cp /opt/grub/grubaa64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi[0;m [32;1m$ cp /opt/grub/grubarm.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi[0;m [32;1m$ if [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then mkdir -p root; cp ${UBOOT_TRAVIS_BUILD_DIR}/spl/u-boot-spl.bin .; cp ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.itb .; rm -rf tmp; genimage --inputpath . --config board/sifive/unleashed/genimage_sdcard.cfg; cp images/sdcard.img ${UBOOT_TRAVIS_BUILD_DIR}/; rm -rf tmp; genimage --inputpath . --config board/sifive/unleashed/genimage_spi-nor.cfg; cp images/spi-nor.img ${UBOOT_TRAVIS_BUILD_DIR}/; fi[0;m [32;1m$ if [[ "${TEST_PY_BD}" == "coreboot" ]]; then cp /opt/coreboot/coreboot.rom ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom; /opt/coreboot/cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom remove -n fallback/payload; /opt/coreboot/cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom add-flat-binary -f ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.bin -n fallback/payload -c LZMA -l 0x1110000 -e 0x1110000; fi[0;m [32;1m$ tfa_dir=""[0;m [32;1m$ rm -f /tmp/fip.bin[0;m [32;1m$ rm -f /tmp/bl1.bin[0;m [32;1m$ if [[ -d /opt/tf-a/"${TEST_PY_BD}${TEST_PY_ID//--id /_}" ]]; then tfa_dir="/opt/tf-a/${TEST_PY_BD}${TEST_PY_ID//--id /_}"; elif [[ -d /opt/tf-a/"${TEST_PY_BD}" ]]; then tfa_dir="/opt/tf-a/${TEST_PY_BD}"; fi[0;m [32;1m$ if [[ -n "$tfa_dir" ]]; then cp "$tfa_dir"/fip.bin "$tfa_dir"/bl1.bin /tmp/; fi[0;m [32;1m$ if [ -f /tmp/fip.bin ] && [ -f /tmp/bl1.bin ]; then export fip=/tmp/fip.bin; export bl1=/tmp/bl1.bin; export PATH=/opt/Base_RevC_AEMvA_pkg/models/Linux64_GCC-9.3:${PATH}; fi[0;m [32;1m$ export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; python3 -m http.server 80 --directory "${UBOOT_TRAVIS_BUILD_DIR}" > /dev/null 2>&1 & HTTP_PID=$!; sleep 1; if ps -p ${HTTP_PID} > /dev/null; then export HTTP_PID; else unset HTTP_PID; fi; ./test/py/test.py -ra --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_EXTRA} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR" --junitxml=/tmp/${TEST_PY_BD}/results.xml; if [[ -n "${HTTP_PID}" ]]; then kill ${HTTP_PID}; fi[0;m +u-boot-test-flash qemu-riscv32 na ============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-8.4.2, pluggy-1.6.0 rootdir: /builds/u-boot/custodians/u-boot-stm/test/py configfile: pytest.ini plugins: forked-1.6.0, xdist-2.5.0 collected 797 items / 2 deselected / 795 selected test/py/tests/test_000_version.py . [ 0%] test/py/tests/test_android/test_ab.py s [ 0%] test/py/tests/test_android/test_abootimg.py sss [ 0%] test/py/tests/test_android/test_avb.py ssssss [ 1%] test/py/tests/test_bind.py ss [ 1%] test/py/tests/test_bootmenu.py s [ 1%] test/py/tests/test_bootstage.py ss [ 2%] test/py/tests/test_button.py ss [ 2%] test/py/tests/test_cat.py s [ 2%] test/py/tests/test_cleanup_build.py .. [ 2%] test/py/tests/test_dfu.py s [ 2%] test/py/tests/test_distro.py s [ 2%] test/py/tests/test_dm.py ..... [ 3%] test/py/tests/test_efi_bootmgr.py s [ 3%] test/py/tests/test_efi_capsule/test_capsule_firmware_fit.py ssss [ 4%] test/py/tests/test_efi_capsule/test_capsule_firmware_raw.py sssss [ 4%] test/py/tests/test_efi_capsule/test_capsule_firmware_signed_fit.py sssss [ 5%] [ 5%] test/py/tests/test_efi_capsule/test_capsule_firmware_signed_raw.py sssss [ 6%] [ 6%] test/py/tests/test_efi_ecpt.py ss [ 6%] test/py/tests/test_efi_fit.py . [ 6%] test/py/tests/test_efi_loader.py ....s.s [ 7%] test/py/tests/test_efi_secboot/test_authvar.py sssss [ 7%] test/py/tests/test_efi_secboot/test_signed.py ssssssss [ 8%] test/py/tests/test_efi_secboot/test_signed_intca.py sss [ 9%] test/py/tests/test_efi_secboot/test_unsigned.py sss [ 9%] test/py/tests/test_efi_selftest.py .....s [ 10%] test/py/tests/test_eficonfig.py s [ 10%] test/py/tests/test_env.py s............ssss. [ 12%] test/py/tests/test_event_dump.py s [ 12%] test/py/tests/test_extension.py s [ 13%] test/py/tests/test_fit.py ssssss [ 13%] test/py/tests/test_fit_auto_signed.py s [ 13%] test/py/tests/test_fit_ecdsa.py s [ 14%] test/py/tests/test_fit_hashes.py . [ 14%] test/py/tests/test_fit_mkimage_validate.py ss [ 14%] test/py/tests/test_fpga.py ssssssssssssssssssssssssssss [ 17%] test/py/tests/test_fs/test_basic.py ssssssssssssssssssssssssssssssssssss [ 22%] sssssssssssssssssssssssssssss [ 26%] test/py/tests/test_fs/test_erofs.py s [ 26%] test/py/tests/test_fs/test_ext.py ssssssssssssssssssssssssssssssssssssss [ 31%] ssssssssssssssssssssss [ 33%] test/py/tests/test_fs/test_fs_cmd.py s [ 33%] test/py/tests/test_fs/test_fs_fat.py ss [ 34%] test/py/tests/test_fs/test_mkdir.py ssssssssssssssssssssssssssssss [ 37%] test/py/tests/test_fs/test_rename.py sssssssssssssssssssssssssssssssssss [ 42%] ssssssssssssssssssss [ 44%] test/py/tests/test_fs/test_squashfs/test_sqfs_load.py s [ 45%] test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py s [ 45%] test/py/tests/test_fs/test_symlink.py ssss [ 45%] test/py/tests/test_fs/test_unlink.py sssssssssssssssssssssssssssssssssss [ 50%] [ 50%] test/py/tests/test_fw_handoff.py ss [ 50%] test/py/tests/test_gpio.py ssssssssss [ 51%] test/py/tests/test_gpt.py sssssssssssssss [ 53%] test/py/tests/test_handoff.py s [ 53%] test/py/tests/test_help.py .ss [ 53%] test/py/tests/test_i2c.py sssss [ 54%] test/py/tests/test_kconfig.py ss [ 54%] test/py/tests/test_log.py ss [ 55%] test/py/tests/test_lsblk.py s [ 55%] test/py/tests/test_md.py .. [ 55%] test/py/tests/test_mdio.py sss [ 55%] test/py/tests/test_memtest.py ss [ 56%] test/py/tests/test_mii.py sssss [ 56%] test/py/tests/test_mmc.py ssssssssssssssss [ 58%] test/py/tests/test_mmc_rd.py ssss [ 59%] test/py/tests/test_mmc_wr.py s [ 59%] test/py/tests/test_net.py ..sss.s.sss [ 60%] test/py/tests/test_net_boot.py ssss [ 61%] test/py/tests/test_ofplatdata.py s [ 61%] test/py/tests/test_optee_rpmb.py s [ 61%] test/py/tests/test_part.py . [ 61%] test/py/tests/test_pinmux.py sssssss [ 62%] test/py/tests/test_pstore.py sss [ 62%] test/py/tests/test_qfw.py ss [ 63%] test/py/tests/test_reset.py ss [ 63%] test/py/tests/test_sandbox_exit.py ssss [ 63%] test/py/tests/test_sandbox_opts.py ss [ 64%] test/py/tests/test_saveenv.py s [ 64%] test/py/tests/test_scp03.py s [ 64%] test/py/tests/test_scsi.py ssss [ 64%] test/py/tests/test_semihosting/test_hostfs.py s [ 65%] test/py/tests/test_sf.py ssss [ 65%] test/py/tests/test_shell_basics.py .... [ 66%] test/py/tests/test_smbios.py ssss [ 66%] test/py/tests/test_source.py s [ 66%] test/py/tests/test_spi.py sssssss [ 67%] test/py/tests/test_spl.py ss [ 67%] test/py/tests/test_stackprotector.py s [ 67%] test/py/tests/test_tpm2.py sssssssss [ 69%] test/py/tests/test_trace.py s [ 69%] test/py/tests/test_ums.py s [ 69%] test/py/tests/test_unknown_cmd.py . [ 69%] test/py/tests/test_upl.py s [ 69%] test/py/tests/test_usb.py sssssssssssssssss [ 71%] test/py/tests/test_ut.py ss....FFF..............s.........s............. [ 77%] ........................................................................ [ 86%] .............................................................. [ 94%] test/py/tests/test_vbe.py s [ 94%] test/py/tests/test_vbe_vpl.py s [ 94%] test/py/tests/test_vboot.py ssssssssssssssssssssssssssssss [ 98%] test/py/tests/test_vpl.py s [ 98%] test/py/tests/test_xxd.py s [ 98%] test/py/tests/test_zynq_secure.py sssss [ 99%] test/py/tests/test_zynqmp_rpu.py sss [ 99%] test/py/tests/test_zynqmp_secure.py ss [100%] =================================== FAILURES =================================== _____________________ test_ut[ut_cmd_cmd_test_part_number] _____________________ test/py/tests/test_ut.py:659: in test_ut assert output.endswith('failures: 0') E assert False E + where False = <built-in method endswith of str object at 0xffff4d938b70>('failures: 0') E + where <built-in method endswith of str object at 0xffff4d938b70> = 'Test: part_number: part.c\r\r\ntest/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc"...mber\' failed 2 times\r\r\nTests run: 1, 1 ms, average: 1 ms, failures: 2\r\r\nexit not allowed from main input shell.'.endswith ----------------------------- Captured stdout call ----------------------------- => ut cmd cmd_test_part_number Test: part_number: part.c test/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc", dev_str, &mmc_dev_desc): Expected 0x2 (2), got 0xffffffed (-19) test/cmd/part.c:68, cmd_test_part_number(): 0 == setup_gpt_partitions(uts, mmc_dev_num): Expected 0x0 (0), got 0x1 (1) Test 'part_number' failed 2 times Tests run: 1, 1 ms, average: 1 ms, failures: 2 exit not allowed from main input shell. => ______________________ test_ut[ut_cmd_cmd_test_part_size] ______________________ test/py/tests/test_ut.py:659: in test_ut assert output.endswith('failures: 0') E assert False E + where False = <built-in method endswith of str object at 0xffff4e277dd0>('failures: 0') E + where <built-in method endswith of str object at 0xffff4e277dd0> = 'Test: part_size: part.c\r\r\ntest/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc", ...size\' failed 2 times\r\r\nTests run: 1, 1 ms, average: 1 ms, failures: 2\r\r\nexit not allowed from main input shell.'.endswith ---------------------------- Captured stdout setup ----------------------------- +u-boot-test-reset qemu-riscv32 na U-Boot 2026.07-rc1-g33961ee12e98 (Apr 29 2026 - 08:21:21 +0000) CPU: riscv Model: riscv-virtio,qemu DRAM: 1 GiB using memory 0xbeed9000-0xbf6f9000 for malloc() Core: 27 devices, 13 uclasses, devicetree: board Flash: 32 MiB Loading Environment from nowhere... OK In: serial,usbkbd Out: serial,vidconsole Err: serial,vidconsole No USB controllers found Net: eth0: virtio-net#0 [?25h [2K Hit any key to stop autoboot: 2[2K Hit any key to stop autoboot: 0 => ----------------------------- Captured stdout call ----------------------------- => ut cmd cmd_test_part_size Test: part_size: part.c test/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc", dev_str, &mmc_dev_desc): Expected 0x2 (2), got 0xffffffed (-19) test/cmd/part.c:162, cmd_test_part_size(): 0 == setup_gpt_partitions(uts, mmc_dev_num): Expected 0x0 (0), got 0x1 (1) Test 'part_size' failed 2 times Tests run: 1, 1 ms, average: 1 ms, failures: 2 exit not allowed from main input shell. => _____________________ test_ut[ut_cmd_cmd_test_part_start] ______________________ test/py/tests/test_ut.py:659: in test_ut assert output.endswith('failures: 0') E assert False E + where False = <built-in method endswith of str object at 0xffff4d9392f0>('failures: 0') E + where <built-in method endswith of str object at 0xffff4d9392f0> = 'Test: part_start: part.c\r\r\ntest/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc",...tart\' failed 2 times\r\r\nTests run: 1, 2 ms, average: 2 ms, failures: 2\r\r\nexit not allowed from main input shell.'.endswith ---------------------------- Captured stdout setup ----------------------------- +u-boot-test-reset qemu-riscv32 na U-Boot 2026.07-rc1-g33961ee12e98 (Apr 29 2026 - 08:21:21 +0000) CPU: riscv Model: riscv-virtio,qemu DRAM: 1 GiB using memory 0xbeed9000-0xbf6f9000 for malloc() Core: 27 devices, 13 uclasses, devicetree: board Flash: 32 MiB Loading Environment from nowhere... OK In: serial,usbkbd Out: serial,vidconsole Err: serial,vidconsole No USB controllers found Net: eth0: virtio-net#0 [?25h [2K Hit any key to stop autoboot: 2[2K Hit any key to stop autoboot: 0 => ----------------------------- Captured stdout call ----------------------------- => ut cmd cmd_test_part_start Test: part_start: part.c test/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc", dev_str, &mmc_dev_desc): Expected 0x2 (2), got 0xffffffed (-19) test/cmd/part.c:107, cmd_test_part_start(): 0 == setup_gpt_partitions(uts, mmc_dev_num): Expected 0x0 (0), got 0x1 (1) Test 'part_start' failed 2 times Tests run: 1, 2 ms, average: 2 ms, failures: 2 exit not allowed from main input shell. => -------------- generated xml file: /tmp/qemu-riscv32/results.xml --------------- =========================== short test summary info ============================ SKIPPED [389] test/py/conftest.py:698: board "qemu-riscv32" not supported SKIPPED [17] test/py/conftest.py:721: .config features "cmd_mmc" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_avb" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "optee_ta_avb" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_bootmenu" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_bootstage" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "bootstage_stash" not enabled SKIPPED [1] test/py/tests/test_dfu.py:114: got empty parameter set for (env__usb_dev_port) SKIPPED [2] test/py/conftest.py:721: .config features "cmd_efidebug" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_wget" not enabled SKIPPED [1] test/py/tests/test_efi_loader.py:133: No env__efi_loader_grub_file binary specified in environment SKIPPED [1] test/py/conftest.py:721: .config features "efi_tcg2_protocol" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_nvedit_info" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "fit_signature" not enabled SKIPPED [13] test/py/conftest.py:721: .config features "cmd_fpga" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_fpga_loadp" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_fpga_loadbp" not enabled SKIPPED [11] test/py/conftest.py:721: .config features "cmd_fpga_loadmk" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_fpga_load_secure" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_bloblist" not enabled SKIPPED [7] test/py/conftest.py:721: .config features "cmd_gpio" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_gpt_rename" not enabled SKIPPED [5] test/py/conftest.py:721: .config features "cmd_i2c" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_log" not enabled SKIPPED [3] test/py/conftest.py:721: .config features "phylib" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_memtest" not enabled SKIPPED [6] test/py/conftest.py:721: .config features "cmd_mii" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "ext4_write" not enabled SKIPPED [1] test/py/tests/test_mmc_rd.py:134: got empty parameter set for (env__mmc_dev_config) SKIPPED [1] test/py/tests/test_mmc_rd.py:155: got empty parameter set for (env__mmc_dev_config) SKIPPED [1] test/py/tests/test_mmc_rd.py:181: got empty parameter set for (env__mmc_dev_config) SKIPPED [1] test/py/tests/test_mmc_rd.py:218: got empty parameter set for (env__mmc_rd_config) SKIPPED [1] test/py/tests/test_mmc_wr.py:38: got empty parameter set for (env__mmc_wr_config) SKIPPED [1] test/py/conftest.py:721: .config features "cmd_dhcp6" not enabled SKIPPED [2] test/py/tests/test_net.py:214: No static network configuration is defined SKIPPED [1] test/py/conftest.py:721: .config features "IPV6_ROUTER_DISCOVERY" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_nfs" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "cmd_tftpput" not enabled SKIPPED [1] test/py/tests/test_net_boot.py:196: TFTP boot test is not enabled! SKIPPED [1] test/py/tests/test_net_boot.py:252: PXE boot test is not enabled! SKIPPED [1] test/py/tests/test_net_boot.py:303: PXE boot test is not enabled! SKIPPED [1] test/py/tests/test_net_boot.py:382: PXE boot test is not enabled! SKIPPED [1] test/py/conftest.py:721: .config features "cmd_optee_rpmb" not enabled SKIPPED [3] test/py/conftest.py:721: .config features "cmd_pinmux" not enabled SKIPPED [3] test/py/conftest.py:721: .config features "cmd_pstore" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_qfw" not enabled SKIPPED [2] test/py/tests/test_reset.py:37: bootmode cannot be determined SKIPPED [1] test/py/tests/test_saveenv.py:41: bootmode cannot be determined SKIPPED [1] test/py/conftest.py:721: .config features "cmd_scp03" not enabled SKIPPED [4] test/py/tests/test_scsi.py:25: No SCSI device to test SKIPPED [1] test/py/conftest.py:721: .config features "semihosting" not enabled SKIPPED [1] test/py/tests/test_sf.py:167: got empty parameter set for (env__sf_config) SKIPPED [1] test/py/tests/test_sf.py:174: got empty parameter set for (env__sf_config) SKIPPED [1] test/py/tests/test_sf.py:186: got empty parameter set for (env__sf_config) SKIPPED [1] test/py/tests/test_sf.py:209: got empty parameter set for (env__sf_config) SKIPPED [1] test/py/conftest.py:721: .config features "cmd_smbios" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "qfw_smbios" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "sandbox" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "generate_smbios_table_verbose" not enabled SKIPPED [7] test/py/conftest.py:721: .config features "cmd_sf" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "spl_unit_test" not enabled SKIPPED [1] test/py/tests/test_spl.py: got empty parameter set for (ut_spl_subtest) SKIPPED [1] test/py/conftest.py:721: .config features "cmd_stackprotector_test" not enabled SKIPPED [9] test/py/conftest.py:721: .config features "cmd_tpm_v2" not enabled SKIPPED [1] test/py/tests/test_ums.py:76: got empty parameter set for (env__usb_dev_port) SKIPPED [14] test/py/tests/test_usb.py:25: USB device test is not enabled SKIPPED [3] test/py/conftest.py:721: .config features "cmd_ext4_write" not enabled SKIPPED [1] test/py/conftest.py:721: .config features "ut_dm" not enabled SKIPPED [1] test/py/tests/test_ut.py:665: Test common test_event_probe has 1 skipped sub-test(s). SKIPPED [1] test/py/tests/test_ut.py:665: Test fdt fdt_test_apply has 1 skipped sub-test(s). SKIPPED [1] test/py/tests/test_vpl.py: got empty parameter set for (ut_vpl_subtest) SKIPPED [3] test/py/conftest.py:721: .config features "cmd_zynq_aes" not enabled SKIPPED [2] test/py/conftest.py:721: .config features "cmd_zynq_rsa" not enabled SKIPPED [5] test/py/conftest.py:721: .config features "cmd_zynqmp" not enabled FAILED test/py/tests/test_ut.py::test_ut[ut_cmd_cmd_test_part_number] - assert False + where False = <built-in method endswith of str object at 0xffff4d938b70>('failures: 0') + where <built-in method endswith of str object at 0xffff4d938b70> = 'Test: part_number: part.c\r\r\ntest/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc"...mber\' failed 2 times\r\r\nTests run: 1, 1 ms, average: 1 ms, failures: 2\r\r\nexit not allowed from main input shell.'.endswith FAILED test/py/tests/test_ut.py::test_ut[ut_cmd_cmd_test_part_size] - assert False + where False = <built-in method endswith of str object at 0xffff4e277dd0>('failures: 0') + where <built-in method endswith of str object at 0xffff4e277dd0> = 'Test: part_size: part.c\r\r\ntest/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc", ...size\' failed 2 times\r\r\nTests run: 1, 1 ms, average: 1 ms, failures: 2\r\r\nexit not allowed from main input shell.'.endswith FAILED test/py/tests/test_ut.py::test_ut[ut_cmd_cmd_test_part_start] - assert False + where False = <built-in method endswith of str object at 0xffff4d9392f0>('failures: 0') + where <built-in method endswith of str object at 0xffff4d9392f0> = 'Test: part_start: part.c\r\r\ntest/cmd/part.c:46, setup_gpt_partitions(): mmc_dev_num == blk_get_device_by_str("mmc",...tart\' failed 2 times\r\r\nTests run: 1, 2 ms, average: 2 ms, failures: 2\r\r\nexit not allowed from main input shell.'.endswith ========== 3 failed, 220 passed, 572 skipped, 2 deselected in 32.37s =========== +u-boot-test-release qemu-riscv32 na section_end:1777450922:step_script [0Ksection_start:1777450922:after_script [0K[0K[36;1mRunning after_script[0;m[0;m [32;1mRunning after script...[0;m [32;1m$ cp -v /tmp/${TEST_PY_BD}/*.{html,css,xml} .[0;m cp: cannot stat '/tmp/qemu-riscv32/*.html': No such file or directory cp: cannot stat '/tmp/qemu-riscv32/*.css': No such file or directory cp: cannot stat '/tmp/qemu-riscv32/*.xml': No such file or directory section_end:1777450922:after_script [0K[0;33mWARNING: after_script failed, but job will continue unaffected: exit code 1[0;m section_start:1777450922:upload_artifacts_on_failure [0K[0K[36;1mUploading artifacts for failed job[0;m[0;m [32;1mUploading artifacts...[0;m [0;33mWARNING: *.html: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm)[0;m [0;33mWARNING: *.css: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm)[0;m [0;33mWARNING: results.xml: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm)[0;m [31;1mERROR: No files to upload [0;m [32;1mUploading artifacts...[0;m [0;33mWARNING: results.xml: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm)[0;m [31;1mERROR: No files to upload [0;m section_end:1777450922:upload_artifacts_on_failure [0Ksection_start:1777450922:cleanup_file_variables [0K[0K[36;1mCleaning up project directory and file based variables[0;m[0;m section_end:1777450922:cleanup_file_variables [0K[31;1mERROR: Job failed: exit code 1 [0;m