[v7,0/8] Support metadata-driven A/B boot for STM32MP25
mbox series

Message ID 20260426154724.2042569-1-dario.binacchi@amarulasolutions.com
Headers show
Series
  • Support metadata-driven A/B boot for STM32MP25
Related show

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

Patrice CHOTARD April 29, 2026, 9:14 a.m. UTC | #1
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.
Dario Binacchi April 29, 2026, 9:19 a.m. UTC | #2
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
>
>
Patrice CHOTARD April 29, 2026, 9:27 a.m. UTC | #3
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.
Running with gitlab-runner 17.8.1 (a1fca00e)
  on konsulko-guru t2_5yocyD, system ID: s_99166040f6c2
section_start:1777450862:prepare_executor
Preparing the "docker" executor
Using Docker executor with image docker.io/trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 ...
Pulling docker image docker.io/trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 ...
Using 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 ...
section_end:1777450864:prepare_executor
section_start:1777450864:prepare_script
Preparing environment
Running on runner-t25yocyd-project-543-concurrent-0 via guru...
section_end:1777450864:prepare_script
section_start:1777450864:get_sources
Getting source from Git repository
Fetching changes...
Reinitialized existing Git repository in /builds/u-boot/custodians/u-boot-stm/.git/
Checking out 33961ee1 as detached HEAD (ref is u-boot-stm32-20260429)...
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__/

Skipping Git submodules setup
section_end:1777450869:get_sources
section_start:1777450869:step_script
Executing "step_script" stage of the job script
Using 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 ...
$ git config --global --add safe.directory "${CI_PROJECT_DIR}"
$ git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks
Cloning into '/tmp/uboot-test-hooks'...
warning: redirecting to https://source.denx.de/u-boot/u-boot-test-hooks.git/
$ ln -s conf.qemu_arm64 /tmp/uboot-test-hooks/bin/travis-ci/conf.qemu_arm64_lwip_na
$ ln -s u_boot_boardenv_qemu_arm64_na.py /tmp/uboot-test-hooks/py/travis-ci/u_boot_boardenv_qemu_arm64_lwip_na.py
$ ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
$ ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
$ 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
$ 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
$ 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
$ 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
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
$ export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}
$ echo BUILD_ENV ${BUILD_ENV}
BUILD_ENV
$ if [ -n "${BUILD_ENV}" ]; then export ${BUILD_ENV}; fi
$ tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e --board ${TEST_PY_BD} ${OVERRIDE}
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
$ cp /opt/grub/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/
$ cp /opt/grub/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/
$ cp /opt/grub/grubriscv64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_riscv64.efi
$ cp /opt/grub/grubaa64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi
$ cp /opt/grub/grubarm.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi
$ 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
$ 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
$ tfa_dir=""
$ rm -f /tmp/fip.bin
$ rm -f /tmp/bl1.bin
$ 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
$ if [[ -n "$tfa_dir" ]]; then cp "$tfa_dir"/fip.bin "$tfa_dir"/bl1.bin /tmp/; fi
$ 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
$ 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
+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


Hit any key to stop autoboot: 2
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


Hit any key to stop autoboot: 2
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
section_start:1777450922:after_script
Running after_script
Running after script...
$ cp -v /tmp/${TEST_PY_BD}/*.{html,css,xml} .
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
WARNING: after_script failed, but job will continue unaffected: exit code 1
section_start:1777450922:upload_artifacts_on_failure
Uploading artifacts for failed job
Uploading artifacts...
WARNING: *.html: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm) 
WARNING: *.css: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm) 
WARNING: results.xml: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm) 
ERROR: No files to upload                          
Uploading artifacts...
WARNING: results.xml: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-stm) 
ERROR: No files to upload                          
section_end:1777450922:upload_artifacts_on_failure
section_start:1777450922:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1777450922:cleanup_file_variables
ERROR: Job failed: exit code 1