From: Tom Rini Date: Tue, 22 Apr 2025 19:36:56 +0000 (-0600) Subject: Docker, CI: Add vexpress_fvp / vexpress_fvp_bloblist support X-Git-Tag: v2025.07-rc2~55 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d75998b476de439a05b2f7ec95d426410bcaae18;p=pandora-u-boot.git Docker, CI: Add vexpress_fvp / vexpress_fvp_bloblist support This adds the vexpress_fvp and vexpress_fvp_bloblist platforms to the list of platforms we test via emulator in CI. In order to do this we need to first have our container runtime have TF-A builds for the vexpress_fvp platform, both with and without transfer list support as well as installing "telnet" so that we can access console. In the CI files we check for the existence of /opt/tf-a/${TEST_PY_BD} and if found, copy bl1.bin and fip.bin to /tmp and set the variables so that we can later run FVP to run. Note that we currently disable the hostfs (semihosting) tests as they trigger a bug in FVP. This has been reported upstream, and can be enabled when fixed. Reviewed-by: Harrison Mutai Acked-by: Ilias Apalodimas Signed-off-by: Tom Rini --- diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index a00ee67f297..5e1938b0526 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -2,7 +2,7 @@ variables: windows_vm: windows-2022 ubuntu_vm: ubuntu-24.04 macos_vm: macOS-14 - ci_runner_image: trini/u-boot-gitlab-ci-runner:jammy-20250404-24Apr2025 + ci_runner_image: trini/u-boot-gitlab-ci-runner:jammy-20250404-29Apr2025 # Add '-u 0' options for Azure pipelines, otherwise we get "permission # denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer", # since our $(ci_runner_image) user is not root. @@ -307,6 +307,13 @@ stages: /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 + # If we have TF-A binaries, we need to use them. + if [[ -d /opt/tf-a/"\${TEST_PY_BD}" ]]; then + cp /opt/tf-a/"\${TEST_PY_BD}"/fip.bin /opt/tf-a/"\${TEST_PY_BD}"/bl1.bin /tmp; + 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 # "\${var:+"-k \$var"}" expands to "" if \$var is empty, "-k \$var" if not @@ -430,6 +437,12 @@ stages: TEST_PY_BD: "vexpress_ca9x4" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" + vexpress_fvp: + TEST_PY_BD: "vexpress_fvp" + TEST_PY_TEST_SPEC: "not sleep and not hostfs" + vexpress_fvp_bloblist: + TEST_PY_BD: "vexpress_fvp_bloblist" + TEST_PY_TEST_SPEC: "not sleep and not hostfs" integratorcp_cm926ejs: TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_ID: "--id qemu" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b22a0aa376..6f11331514b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,7 @@ workflow: # Grab our configured image. The source for this is found # in the u-boot tree at tools/docker/Dockerfile -image: ${MIRROR_DOCKER}/trini/u-boot-gitlab-ci-runner:jammy-20250404-24Apr2025 +image: ${MIRROR_DOCKER}/trini/u-boot-gitlab-ci-runner:jammy-20250404-29Apr2025 # We run some tests in different order, to catch some failures quicker. stages: @@ -96,6 +96,13 @@ stages: /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 + # If we have TF-A binaries, we need to use them. + - if [[ -d /opt/tf-a/"${TEST_PY_BD}" ]]; then + cp /opt/tf-a/"${TEST_PY_BD}"/fip.bin /opt/tf-a/"${TEST_PY_BD}"/bl1.bin /tmp/; + export fip=/tmp/fip.bin; + export bl1=/tmp/bl1.bin; + export PATH=/opt/Base_RevC_AEMvA_pkg/models/Linux64_GCC-9.3:${PATH}; + fi # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not - export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; @@ -515,6 +522,22 @@ sifive_unleashed_spi-nor test.py: TEST_PY_ID: "--id spi-nor_qemu" <<: *buildman_and_testpy_dfn +vexpress_fvp test.py: + variables: + TEST_PY_BD: "vexpress_fvp" + TEST_PY_TEST_SPEC: "not sleep and not hostfs" + tags: + - ${DEFAULT_AMD64_TAG} + <<: *buildman_and_testpy_dfn + +vexpress_fvp_bloblist test.py: + variables: + TEST_PY_BD: "vexpress_fvp_bloblist" + TEST_PY_TEST_SPEC: "not sleep and not hostfs" + tags: + - ${DEFAULT_AMD64_TAG} + <<: *buildman_and_testpy_dfn + xilinx_zynq_virt test.py: variables: TEST_PY_BD: "xilinx_zynq_virt" diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index dec1d516a6c..1d7d2a1877e 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -90,6 +90,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ help2man \ iasl \ imagemagick \ + inetutils-telnet \ iputils-ping \ libconfuse-dev \ libgit2-dev \ @@ -232,10 +233,18 @@ RUN git clone https://gitlab.com/qemu-project/qemu.git /tmp/qemu && \ RUN git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git /tmp/tf-a && \ cd /tmp/tf-a/ && \ git checkout v2.12.0 && \ - cd tools/fiptool && \ - make -j$(nproc) && \ - mkdir -p /usr/local/bin && \ - cp fiptool /usr/local/bin && \ + make CROSS_COMPILE=/opt/gcc-${TCVER}-nolibc/aarch64-linux/bin/aarch64-linux- \ + PLAT=fvp BL33=/dev/null -j$(nproc) all fip && \ + mkdir -p /usr/local/bin /opt/tf-a/vexpress_fvp && \ + cp tools/fiptool/fiptool /usr/local/bin && \ + cp build/fvp/release/fip.bin build/fvp/release/bl1.bin \ + /opt/tf-a/vexpress_fvp/ && \ + rm -rf build/fvp && \ + make CROSS_COMPILE=/opt/gcc-${TCVER}-nolibc/aarch64-linux/bin/aarch64-linux- \ + PLAT=fvp BL33=/dev/null TRANSFER_LIST=1 -j$(nproc) all fip && \ + mkdir -p /opt/tf-a/vexpress_fvp_bloblist && \ + cp build/fvp/release/fip.bin build/fvp/release/bl1.bin \ + /opt/tf-a/vexpress_fvp_bloblist/ && \ rm -rf /tmp/tf-a # Download the Arm Architecture FVP platform. This file is double compressed.