1b10b4515SJerome Forissiername: CI 2b10b4515SJerome Forissieron: [push, pull_request] 39c16bc95SAlexpermissions: 40960b676SJerome Forissier contents: read 50960b676SJerome Forissierconcurrency: 60960b676SJerome Forissier group: ci-${{ github.ref }} # unique per branch 70960b676SJerome Forissier cancel-in-progress: true # cancel previous runs on the same branch 8b10b4515SJerome Forissierjobs: 9b10b4515SJerome Forissier code_style: 10b10b4515SJerome Forissier name: Code style 11b10b4515SJerome Forissier runs-on: ubuntu-latest 12b10b4515SJerome Forissier container: jforissier/optee_os_ci 13b10b4515SJerome Forissier steps: 14b10b4515SJerome Forissier - name: Checkout 15c847c2c9SJerome Forissier uses: actions/checkout@v4 16b10b4515SJerome Forissier with: 173957cdc4SJerome Forissier fetch-depth: 0 # full history so checkpatch can check commit IDs in commit messages 18b10b4515SJerome Forissier - name: Update Git config 19b10b4515SJerome Forissier run: git config --global --add safe.directory ${GITHUB_WORKSPACE} 20b10b4515SJerome Forissier - name: Run checkpatch 21b10b4515SJerome Forissier shell: bash 22b10b4515SJerome Forissier run: | 23b10b4515SJerome Forissier # checkpatch task 24b10b4515SJerome Forissier set -e 25b10b4515SJerome Forissier pushd . >/dev/null 26b10b4515SJerome Forissier mkdir -p /tmp/linux/scripts 27b10b4515SJerome Forissier cd /tmp/linux/scripts 28b10b4515SJerome Forissier wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/plain/scripts/checkpatch.pl 29b10b4515SJerome Forissier chmod +x checkpatch.pl 30b10b4515SJerome Forissier wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/plain/scripts/spelling.txt 31b10b4515SJerome Forissier echo "invalid.struct.name" >const_structs.checkpatch 32b10b4515SJerome Forissier export PATH=/tmp/linux/scripts:$PATH 33b10b4515SJerome Forissier popd >/dev/null 34b10b4515SJerome Forissier source scripts/checkpatch_inc.sh 35b10b4515SJerome Forissier function _do() { echo '>>' $*; $*; } 36b10b4515SJerome Forissier # Run checkpatch.pl: 37b10b4515SJerome Forissier # - on the tip of the branch only if we're not in a pull request 38b10b4515SJerome Forissier # - otherwise: 39b10b4515SJerome Forissier # * on each commit in the development branch that is not in the target (merge to) branch 40b10b4515SJerome Forissier # * on the global diff if the PR contains more than one commit (useful to check if fixup 41b10b4515SJerome Forissier # commits do solve previous checkpatch errors) 42b10b4515SJerome Forissier if [ "${GITHUB_EVENT_NAME}" = "push" ]; then \ 43b10b4515SJerome Forissier _do checkpatch HEAD || failed=1; \ 44b10b4515SJerome Forissier else \ 45b10b4515SJerome Forissier for c in $(git rev-list HEAD^1..HEAD^2); do \ 46b10b4515SJerome Forissier _do checkpatch $c || failed=1; \ 47b10b4515SJerome Forissier done; \ 48b10b4515SJerome Forissier if [ "$(git rev-list --count HEAD^1..HEAD^2)" -gt 1 ]; then \ 49b10b4515SJerome Forissier _do checkdiff $(git rev-parse HEAD^1) $(git rev-parse HEAD^2) || failed=1; \ 50b10b4515SJerome Forissier fi; \ 51b10b4515SJerome Forissier fi 52b10b4515SJerome Forissier [ -z "$failed" ] 53b10b4515SJerome Forissier - name: Run pycodestyle 5432692b31SJerome Forissier if: success() || failure() 55b10b4515SJerome Forissier run: | 56b10b4515SJerome Forissier # pycodestyle task 57b10b4515SJerome Forissier sudo -E bash -c "apt update -qq -y && apt install -qq -y pycodestyle" 58b10b4515SJerome Forissier pycodestyle scripts/*.py core/arch/arm/plat-stm32mp1/scripts/stm32image.py 59b10b4515SJerome Forissier builds: 600960b676SJerome Forissier name: Build (${{ matrix.name }}) 61b10b4515SJerome Forissier runs-on: ubuntu-latest 62b10b4515SJerome Forissier container: jforissier/optee_os_ci 630960b676SJerome Forissier strategy: 640960b676SJerome Forissier fail-fast: false 650960b676SJerome Forissier matrix: 660960b676SJerome Forissier include: 670960b676SJerome Forissier - name: arm hikey 680960b676SJerome Forissier make_commands: | 69b10b4515SJerome Forissier _make PLATFORM=hikey 70b10b4515SJerome Forissier _make PLATFORM=hikey CFG_ARM64_core=y 710960b676SJerome Forissier - name: arm hikey-hikey960 720960b676SJerome Forissier make_commands: | 730960b676SJerome Forissier _make PLATFORM=hikey-hikey960 740960b676SJerome Forissier _make PLATFORM=hikey-hikey960 COMPILER=clang 750960b676SJerome Forissier _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y 760960b676SJerome Forissier _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y COMPILER=clang 770960b676SJerome Forissier _make PLATFORM=hikey-hikey960 CFG_SECURE_DATA_PATH=n 780960b676SJerome Forissier - name: arm imx-imx6* 1 790960b676SJerome Forissier make_commands: | 80b10b4515SJerome Forissier _make PLATFORM=imx-mx6ulevk 81b10b4515SJerome Forissier _make PLATFORM=imx-mx6ulevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 82b10b4515SJerome Forissier _make PLATFORM=imx-mx6ul9x9evk 83b10b4515SJerome Forissier _make PLATFORM=imx-mx6ullevk CFG_WITH_SOFTWARE_PRNG=n CFG_IMX_RNGB=y 84b10b4515SJerome Forissier _make PLATFORM=imx-mx6ulzevk 85b10b4515SJerome Forissier _make PLATFORM=imx-mx6slevk 86b10b4515SJerome Forissier _make PLATFORM=imx-mx6sllevk 87b10b4515SJerome Forissier _make PLATFORM=imx-mx6sxsabreauto 88b10b4515SJerome Forissier _make PLATFORM=imx-mx6sxsabresd 89b10b4515SJerome Forissier _make PLATFORM=imx-mx6sxsabresd CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 90b10b4515SJerome Forissier _make PLATFORM=imx-mx6solosabresd 91b10b4515SJerome Forissier _make PLATFORM=imx-mx6solosabreauto 92b10b4515SJerome Forissier _make PLATFORM=imx-mx6sxsabreauto 930960b676SJerome Forissier - name: arm imx-imx6* 2 940960b676SJerome Forissier make_commands: | 95b10b4515SJerome Forissier _make PLATFORM=imx-mx6qsabrelite 96b10b4515SJerome Forissier _make PLATFORM=imx-mx6qsabresd 97b10b4515SJerome Forissier _make PLATFORM=imx-mx6qsabresd CFG_RPMB_FS=y 98b10b4515SJerome Forissier _make PLATFORM=imx-mx6qsabreauto 99b10b4515SJerome Forissier _make PLATFORM=imx-mx6qsabreauto CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 100b10b4515SJerome Forissier _make PLATFORM=imx-mx6qpsabreauto 101b10b4515SJerome Forissier _make PLATFORM=imx-mx6qpsabresd 102b10b4515SJerome Forissier _make PLATFORM=imx-mx6dlsabresd 103b10b4515SJerome Forissier _make PLATFORM=imx-mx6dlsabreauto 104b10b4515SJerome Forissier _make PLATFORM=imx-mx6dapalis 105b10b4515SJerome Forissier _make PLATFORM=imx-mx6qapalis 1060960b676SJerome Forissier - name: arm imx-mx7* 1070960b676SJerome Forissier make_commands: | 108b10b4515SJerome Forissier _make PLATFORM=imx-mx7dsabresd 109b10b4515SJerome Forissier _make PLATFORM=imx-mx7dsabresd CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 110b10b4515SJerome Forissier _make PLATFORM=imx-mx7ulpevk 1110960b676SJerome Forissier - name: arm imx-mx8* 1120960b676SJerome Forissier make_commands: | 113b10b4515SJerome Forissier _make PLATFORM=imx-mx8mmevk 114b10b4515SJerome Forissier _make PLATFORM=imx-mx8mmevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 115b10b4515SJerome Forissier _make PLATFORM=imx-mx8mnevk 116b10b4515SJerome Forissier _make PLATFORM=imx-mx8mqevk 117b10b4515SJerome Forissier _make PLATFORM=imx-mx8mpevk 118b10b4515SJerome Forissier _make PLATFORM=imx-mx8qxpmek 11937f820d6SClement Faure _make PLATFORM=imx-mx8dxmek 120b10b4515SJerome Forissier _make PLATFORM=imx-mx8qmmek 121b10b4515SJerome Forissier _make PLATFORM=imx-mx8dxlevk 122b10b4515SJerome Forissier _make PLATFORM=imx-mx8ulpevk 123b10b4515SJerome Forissier _make PLATFORM=imx-mx8ulpevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 1240960b676SJerome Forissier - name: arm imx-mx9* 1250960b676SJerome Forissier make_commands: | 1260960b676SJerome Forissier _make PLATFORM=imx-mx91evk 127cb34c33eSClement Faure _make PLATFORM=imx-mx93evk 1285fe5dd14SSahil Malhotra _make PLATFORM=imx-mx95evk 1290960b676SJerome Forissier - name: arm k3 1300960b676SJerome Forissier make_commands: | 131b10b4515SJerome Forissier _make PLATFORM=k3-j721e 132b10b4515SJerome Forissier _make PLATFORM=k3-j721e CFG_ARM64_core=y 1330b28c65fSJayesh Choudhary _make PLATFORM=k3-j784s4 1340b28c65fSJayesh Choudhary _make PLATFORM=k3-j784s4 CFG_ARM64_core=y 135b10b4515SJerome Forissier _make PLATFORM=k3-am65x 136b10b4515SJerome Forissier _make PLATFORM=k3-am65x CFG_ARM64_core=y 137b10b4515SJerome Forissier _make PLATFORM=k3-am64x 138b10b4515SJerome Forissier _make PLATFORM=k3-am64x CFG_ARM64_core=y 139b10b4515SJerome Forissier _make PLATFORM=k3-am62x 140b10b4515SJerome Forissier _make PLATFORM=k3-am62x CFG_ARM64_core=y 141ef1ebdc2SVignesh Raghavendra _make PLATFORM=k3-am62lx 142ef1ebdc2SVignesh Raghavendra _make PLATFORM=k3-am62lx CFG_ARM64_core=y 1430960b676SJerome Forissier - name: arm ls 1440960b676SJerome Forissier make_commands: | 145b10b4515SJerome Forissier _make PLATFORM=ls-ls1043ardb 146b10b4515SJerome Forissier _make PLATFORM=ls-ls1046ardb 147b10b4515SJerome Forissier _make PLATFORM=ls-ls1012ardb 148b10b4515SJerome Forissier _make PLATFORM=ls-ls1028ardb 149b10b4515SJerome Forissier _make PLATFORM=ls-ls1088ardb 150b10b4515SJerome Forissier _make PLATFORM=ls-ls2088ardb 151b10b4515SJerome Forissier _make PLATFORM=ls-lx2160ardb 152b10b4515SJerome Forissier _make PLATFORM=ls-lx2160aqds 1530960b676SJerome Forissier - name: arm marvell 1540960b676SJerome Forissier make_commands: | 155b10b4515SJerome Forissier _make PLATFORM=marvell-armada7k8k 156b10b4515SJerome Forissier _make PLATFORM=marvell-armada3700 157b10b4515SJerome Forissier _make PLATFORM=marvell-otx2t96 158b10b4515SJerome Forissier _make PLATFORM=marvell-otx2f95 159b10b4515SJerome Forissier _make PLATFORM=marvell-otx2t98 1609115cdfaSGowthami _make PLATFORM=marvell-cn10ka 1619115cdfaSGowthami _make PLATFORM=marvell-cn10kb 1629115cdfaSGowthami _make PLATFORM=marvell-cnf10ka 1639115cdfaSGowthami _make PLATFORM=marvell-cnf10kb 1646945b368SAnil Kumar Reddy _make PLATFORM=marvell-cn20ka 1650960b676SJerome Forissier - name: arm mediatek 1660960b676SJerome Forissier make_commands: | 1670960b676SJerome Forissier _make PLATFORM=mediatek-mt8173 1680960b676SJerome Forissier _make PLATFORM=mediatek-mt8175 1690960b676SJerome Forissier _make PLATFORM=mediatek-mt8183 1700960b676SJerome Forissier _make PLATFORM=mediatek-mt8516 1710960b676SJerome Forissier - name: arm misc 1 1720960b676SJerome Forissier make_commands: | 1730960b676SJerome Forissier _make PLATFORM=d02 1740960b676SJerome Forissier _make PLATFORM=d02 CFG_ARM64_core=y 1750960b676SJerome Forissier _make PLATFORM=poplar 1760960b676SJerome Forissier _make PLATFORM=poplar CFG_ARM64_core=y 1770960b676SJerome Forissier _make PLATFORM=rcar 1780960b676SJerome Forissier _make PLATFORM=rzg 1790960b676SJerome Forissier _make PLATFORM=rzg CFG_ARM64_core=y 1800960b676SJerome Forissier _make PLATFORM=rpi3 1810960b676SJerome Forissier _make PLATFORM=rpi3 CFG_ARM64_core=y 182e1e6e2c6SVolodymyr Babchuk _make PLATFORM=rpi5 1830960b676SJerome Forissier _make PLATFORM=zynq7k-zc702 1846945b368SAnil Kumar Reddy _make PLATFORM=marvell-cnf20ka 185b10b4515SJerome Forissier _make PLATFORM=synquacer 186b10b4515SJerome Forissier _make PLATFORM=sunxi-bpi_zero 187b10b4515SJerome Forissier _make PLATFORM=sunxi-sun50i_a64 1880960b676SJerome Forissier - name: arm misc 2 1890960b676SJerome Forissier make_commands: | 190b10b4515SJerome Forissier _make PLATFORM=bcm-ns3 CFG_ARM64_core=y 191b10b4515SJerome Forissier _make PLATFORM=hisilicon-hi3519av100_demo 192b10b4515SJerome Forissier _make PLATFORM=amlogic 193b10b4515SJerome Forissier _make PLATFORM=rzn1 194d8d2e5e6SJorge Ramirez-Ortiz _make PLATFORM=versal CFG_VERSAL_FPGA_DDR_ADDR=0x40000000 19542f66171SVishnu Banavath _make PLATFORM=corstone1000 19628a029b5SMargarita Glushkin _make PLATFORM=nuvoton 197c25f5007Sloubaihui _make PLATFORM=d06 198a8cfcdf2Sloubaihui _make PLATFORM=d06 CFG_HISILICON_ACC_V3=y 199c1e65709SSungmin Han _make PLATFORM=telechips-tcc805x 20020d6b459SAkshay Belsare _make PLATFORM=versal2 20120d6b459SAkshay Belsare _make PLATFORM=versal2 CFG_AMD_PS_GPIO=y 2020960b676SJerome Forissier _make PLATFORM=sprd-sc9860 2030960b676SJerome Forissier _make PLATFORM=sprd-sc9860 CFG_ARM64_core=y 2040960b676SJerome Forissier - name: arm Plug and Trust 2050960b676SJerome Forissier make_commands: | 2060960b676SJerome Forissier function download_plug_and_trust() { mkdir -p $HOME/se050 && git clone --single-branch -b v0.4.2 https://github.com/foundriesio/plug-and-trust $HOME/se050/plug-and-trust || (rm -rf $HOME/se050 ; echo Nervermind); } 2070960b676SJerome Forissier download_plug_and_trust 208b10b4515SJerome Forissier 2090960b676SJerome Forissier if [ -d $HOME/se050/plug-and-trust ]; then _make PLATFORM=imx-mx6ullevk CFG_NXP_SE05X=y CFG_IMX_I2C=y CFG_STACK_{THREAD,TMP}_EXTRA=8192 CFG_CRYPTO_DRV_{CIPHER,ACIPHER}=y CFG_WITH_SOFTWARE_PRNG=n CFG_NXP_SE05X_{DIEID,RNG,RSA,ECC,CTR}_DRV=y CFG_NXP_SE05X_RSA_DRV_FALLBACK=y CFG_NXP_SE05X_ECC_DRV_FALLBACK=y CFG_NXP_SE05X_PLUG_AND_TRUST=$HOME/se050/plug-and-trust ; fi 2100960b676SJerome Forissier if [ -d $HOME/se050/plug-and-trust ]; then _make PLATFORM=imx-mx8mmevk CFG_NXP_CAAM=y CFG_NXP_CAAM_AE_{GCM,CCM}_DRV=y CFG_NXP_CAAM_RNG_DRV=y CFG_NXP_SE05X=y CFG_IMX_I2C=y CFG_STACK_{THREAD,TMP}_EXTRA=8192 CFG_CRYPTO_DRV_{CIPHER,ACIPHER,AUTHENC}=y CFG_NXP_SE05X_RNG_DRV=n CFG_WITH_SOFTWARE_PRNG=n CFG_NXP_SE05X_{DIEID,RSA,ECC,CTR}_DRV=y CFG_NXP_SE05X_RSA_DRV_FALLBACK=y CFG_NXP_SE05X_ECC_DRV_FALLBACK=y CFG_NXP_SE05X_PLUG_AND_TRUST=$HOME/se050/plug-and-trust ; fi 2111e219620SSumit Garg - name: arm qcom 2121e219620SSumit Garg make_commands: | 2131e219620SSumit Garg _make PLATFORM=qcom-kodiak 2140960b676SJerome Forissier - name: arm rockchip 2150960b676SJerome Forissier make_commands: | 2160960b676SJerome Forissier _make PLATFORM=rockchip-rk322x 2170960b676SJerome Forissier _make PLATFORM=rockchip-rk3399 2180960b676SJerome Forissier _make PLATFORM=rockchip-rk3588 2190960b676SJerome Forissier - name: arm sam 2200960b676SJerome Forissier make_commands: | 2210960b676SJerome Forissier _make PLATFORM=sam 2220960b676SJerome Forissier _make PLATFORM=sam-sama5d2_xplained 2230960b676SJerome Forissier _make PLATFORM=sam-sama5d27_som1_ek 2240960b676SJerome Forissier _make PLATFORM=sam-sama5d27_wlsom1_ek 2250960b676SJerome Forissier - name: arm SCP firmware 2260960b676SJerome Forissier make_commands: | 2270960b676SJerome Forissier function download_scp_firmware() { git clone --single-branch https://git.gitlab.arm.com/firmware/SCP-firmware.git $HOME/scp-firmware && git -C $HOME/scp-firmware checkout 0d48080449e3bd3e5218a31c5f24a6068004c5af || (rm -rf $HOME/scp-firmware ; echo Nervermind); } 2280960b676SJerome Forissier download_scp_firmware 2290960b676SJerome Forissier 2300960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=vexpress-qemu_armv8a CFG_SCMI_SCPFW=y CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2310960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp2 CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2320960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp2-235F_DK CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2330960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp2-215F_DK CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2340960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=vexpress-fvp CFG_SCMI_SCPFW=y CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2350960b676SJerome Forissier # if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp1-157C_DK2 CFG_SCMI_SCPFW=y CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2360960b676SJerome Forissier - name: arm stm 2370960b676SJerome Forissier make_commands: | 2380960b676SJerome Forissier _make PLATFORM=stm-b2260 2390960b676SJerome Forissier _make PLATFORM=stm-cannes 2400960b676SJerome Forissier - name: arm stm32mp1 2410960b676SJerome Forissier make_commands: | 2420960b676SJerome Forissier _make PLATFORM=stm32mp1 2430960b676SJerome Forissier _make PLATFORM=stm32mp1-135F_DK CFG_DRIVERS_CLK_PRINT_TREE=y CFG_DRIVERS_REGULATOR_PRINT_TREE=y 2440960b676SJerome Forissier _make PLATFORM=stm32mp1-135F_DK COMPILER=clang 2450960b676SJerome Forissier _make PLATFORM=stm32mp1 CFG_STM32MP1_OPTEE_IN_SYSRAM=y CFG_STM32MP_REMOTEPROC=y 2460960b676SJerome Forissier - name: arm ti 2470960b676SJerome Forissier make_commands: | 2480960b676SJerome Forissier _make PLATFORM=ti-dra7xx out/core/tee{,-pager,-pageable}.bin 2490960b676SJerome Forissier _make PLATFORM=ti-am57xx 2500960b676SJerome Forissier _make PLATFORM=ti-am43xx 2510960b676SJerome Forissier - name: arm vexpress-fvp 2520960b676SJerome Forissier make_commands: | 2530960b676SJerome Forissier _make PLATFORM=vexpress-fvp 2540960b676SJerome Forissier _make PLATFORM=vexpress-fvp CFG_ARM64_core=y 2550960b676SJerome Forissier _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_CORE_SEL1_SPMC=y CFG_SECURE_PARTITION=y 2560960b676SJerome Forissier - name: arm vexpress-juno 2570960b676SJerome Forissier make_commands: | 2580960b676SJerome Forissier _make PLATFORM=vexpress-juno 2590960b676SJerome Forissier _make PLATFORM=vexpress-juno CFG_ARM64_core=y 2600960b676SJerome Forissier - name: arm vexpress-qemu_armv8a 1 2610960b676SJerome Forissier make_commands: | 2620960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a 2630960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a COMPILER=clang 2640960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 CFG_DEBUG_INFO=n 2650960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_TEE_CORE_LOG_LEVEL=4 CFG_TEE_CORE_DEBUG=y CFG_TEE_TA_LOG_LEVEL=4 CFG_CC_OPT_LEVEL=0 CFG_DEBUG_INFO=y 2660960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_WITH_PAGER=y 2670960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 2680960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 2690960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_NS_VIRTUALIZATION=y 2700960b676SJerome Forissier - name: arm vexpress-qemu_armv8a 2 2710960b676SJerome Forissier make_commands: | 2720960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_PREALLOC_EL0_TBLS=y 2730960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_TRANSFER_LIST=y CFG_MAP_EXT_DT_SECURE=y 2740960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL1_SPMC=y 2750960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL2_SPMC=y CFG_CORE_PHYS_RELOCATABLE=y CFG_TZDRAM_START=0x0d304000 CFG_TZDRAM_SIZE=0x00cfc000 2760960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_{ATTESTATION,DEVICE_ENUM,RTC,SCMI,SECSTOR_TA_MGT,VERAISON_ATTESTATION}_PTA=y CFG_WITH_STATS=y CFG_TA_STATS=y 2770960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL1_SPMC=y CFG_NS_VIRTUALIZATION=y 2780960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CRYPTO_WITH_CE=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls 2790960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SANITIZE_UNDEFINED=y CFG_TA_SANITIZE_UNDEFINED=y CFG_TEE_RAM_VA_SIZE=0x00400000 2800960b676SJerome Forissier dd if=/dev/urandom of=BL32_AP_MM.fd bs=2621440 count=1 && _make PLATFORM=vexpress-qemu_armv8a CFG_STMM_PATH=BL32_AP_MM.fd CFG_RPMB_FS=y CFG_CORE_HEAP_SIZE=524288 CFG_TEE_RAM_VA_SIZE=0x00400000 281*574b1b2dSJens Wiklander _make PLATFORM=vexpress-qemu_armv8a CFG_SECURE_DATA_PATH=y CFG_CORE_DYN_PROTMEM=y 282*574b1b2dSJens Wiklander _make PLATFORM=vexpress-qemu_armv8a CFG_SECURE_DATA_PATH=y CFG_CORE_DYN_PROTMEM=y CFG_CORE_SEL1_SPMC=y 2830960b676SJerome Forissier - name: arm vexpress-qemu_sbsa 2840960b676SJerome Forissier make_commands: | 2850960b676SJerome Forissier _make PLATFORM=vexpress-qemu_sbsa CFG_CORE_SEL1_SPMC=y CFG_TZDRAM_START=0x20002000 CFG_TZDRAM_SIZE=0x1fbcf000 2860960b676SJerome Forissier - name: arm vexpress-qemu_virt 1 2870960b676SJerome Forissier make_commands: | 2880960b676SJerome Forissier _make 2890960b676SJerome Forissier _make COMPILER=clang 2900960b676SJerome Forissier _make CFG_TEE_CORE_LOG_LEVEL=4 CFG_TEE_CORE_DEBUG=y CFG_TEE_TA_LOG_LEVEL=4 CFG_CC_OPT_LEVEL=0 CFG_DEBUG_INFO=y 2910960b676SJerome Forissier _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 CFG_DEBUG_INFO=n CFG_ENABLE_EMBEDDED_TESTS=n 2920960b676SJerome Forissier _make CFG_TEE_CORE_MALLOC_DEBUG=y CFG_CORE_DEBUG_CHECK_STACKS=y 2930960b676SJerome Forissier _make CFG_CORE_SANITIZE_KADDRESS=y CFG_CORE_ASLR=n 2940960b676SJerome Forissier _make CFG_LOCKDEP=y 2950960b676SJerome Forissier _make CFG_CRYPTO=n 2960960b676SJerome Forissier _make CFG_CRYPTO_{AES,DES}=n 2970960b676SJerome Forissier _make CFG_CRYPTO_{DSA,RSA,DH}=n 2980960b676SJerome Forissier - name: arm vexpress-qemu_virt 2 2990960b676SJerome Forissier make_commands: | 3000960b676SJerome Forissier _make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n 3010960b676SJerome Forissier _make CFG_CRYPTO_{H,C,CBC_}MAC=n 3020960b676SJerome Forissier _make CFG_CRYPTO_{G,C}CM=n 3030960b676SJerome Forissier _make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512,512_256}}=n 3040960b676SJerome Forissier _make CFG_WITH_PAGER=y out/core/tee{,-pager,-pageable}.bin 3050960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls 3060960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y 3070960b676SJerome Forissier _make CFG_WITH_LPAE=y 3080960b676SJerome Forissier _make CFG_CORE_PREALLOC_EL0_TBLS=y 3090960b676SJerome Forissier _make CFG_RPMB_FS=y 3100960b676SJerome Forissier - name: arm vexpress-qemu_virt 3 3110960b676SJerome Forissier make_commands: | 3120960b676SJerome Forissier _make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y 3130960b676SJerome Forissier _make CFG_RPMB_FS=y CFG_RPMB_WRITE_KEY=y 3140960b676SJerome Forissier _make CFG_REE_FS=n CFG_RPMB_FS=y 3150960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y CFG_CC_OPT_LEVEL=0 CFG_DEBUG_INFO=y 3160960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0 3170960b676SJerome Forissier _make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y 3180960b676SJerome Forissier _make CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 3190960b676SJerome Forissier _make CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 3200960b676SJerome Forissier _make CFG_SECURE_DATA_PATH=y 3210960b676SJerome Forissier _make CFG_REE_FS_TA_BUFFERED=y 3220960b676SJerome Forissier _make CFG_WITH_USER_TA=n 3230960b676SJerome Forissier _make CFG_{ATTESTATION,DEVICE_ENUM,RTC,SCMI,SECSTOR_TA_MGT,VERAISON_ATTESTATION}_PTA=y CFG_WITH_STATS=y CFG_TA_STATS=y 3240960b676SJerome Forissier - name: arm zynqmp 3250960b676SJerome Forissier make_commands: | 3260960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 3270960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y 3280960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y CFG_WITH_SOFTWARE_PRNG=n CFG_XIPHERA_TRNG=y CFG_ZYNQMP_HUK=y 3290960b676SJerome Forissier - name: riscv 3300960b676SJerome Forissier make_commands: | 33127acbe2bSJerome Forissier export ARCH=riscv 33227acbe2bSJerome Forissier unset CROSS_COMPILE32 33327acbe2bSJerome Forissier export CROSS_COMPILE64="ccache riscv64-linux-gnu-" 33427acbe2bSJerome Forissier _make PLATFORM=virt 3351717e0d8SHuang Borong _make PLATFORM=virt CFG_RISCV_PLIC=n CFG_RISCV_APLIC=y 3361717e0d8SHuang Borong _make PLATFORM=virt CFG_RISCV_PLIC=n CFG_RISCV_APLIC_MSI=y CFG_RISCV_IMSIC=y 3379a37c47cSYu-Chien Peter Lin _make PLATFORM=sifive 338021a43d3SJerome Forissier steps: 339021a43d3SJerome Forissier - name: Checkout 340021a43d3SJerome Forissier uses: actions/checkout@v4 341835688acSJerome Forissier - name: Update Git config 342835688acSJerome Forissier run: git config --global --add safe.directory ${GITHUB_WORKSPACE} 3430960b676SJerome Forissier - name: Generate cache key 344021a43d3SJerome Forissier run: | 3450960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 3460960b676SJerome Forissier echo "CACHE_KEY=builds-cache-${HASH}-${GITHUB_SHA}" >> ${GITHUB_ENV} 3470960b676SJerome Forissier echo "CACHE_RESTORE_KEY=builds-cache-${HASH}" >> ${GITHUB_ENV} 3480960b676SJerome Forissier - name: Restore build cache 3490960b676SJerome Forissier uses: actions/cache@v4 3500960b676SJerome Forissier with: 3510960b676SJerome Forissier path: /github/home/.cache/ccache 3520960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 3530960b676SJerome Forissier restore-keys: | 3540960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 3550960b676SJerome Forissier - name: Build 3560960b676SJerome Forissier shell: bash 3570960b676SJerome Forissier env: 3580960b676SJerome Forissier MAKE_COMMANDS: ${{ matrix.make_commands }} 3590960b676SJerome Forissier run: | 360021a43d3SJerome Forissier set -e -v 361021a43d3SJerome Forissier 3620960b676SJerome Forissier export LC_ALL=C 3630960b676SJerome Forissier export PATH=/usr/local/bin:$PATH # clang 3640960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 # Prevent Buildroot error when building as root 3650960b676SJerome Forissier export CFG_DEBUG_INFO=n 3660960b676SJerome Forissier export CFG_WERROR=y 3670960b676SJerome Forissier export CROSS_COMPILE32="ccache arm-linux-gnueabihf-" 3680960b676SJerome Forissier export CROSS_COMPILE64="ccache aarch64-linux-gnu-" 3690960b676SJerome Forissier 370e1e6e2c6SVolodymyr Babchuk 3710960b676SJerome Forissier function _make() { make -j$(nproc) -s O=out $*; } 3720960b676SJerome Forissier 3730960b676SJerome Forissier ccache -s -v 3740960b676SJerome Forissier eval "$MAKE_COMMANDS" 3750960b676SJerome Forissier ccache -s -v 3762b5019c8SJerome Forissier QEMUv7_checks_image_build: 3772b5019c8SJerome Forissier name: Build QEMUv7 image 3782b5019c8SJerome Forissier runs-on: ubuntu-latest 3792b5019c8SJerome Forissier steps: 3802b5019c8SJerome Forissier - uses: actions/checkout@v4 3812b5019c8SJerome Forissier - name: Create Dockerfile 3822b5019c8SJerome Forissier run: | 3832b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 3842b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check 3852b5019c8SJerome Forissier RUN /root/get_optee.sh default /root/optee_repo_qemu 3862b5019c8SJerome Forissier EOF 3872b5019c8SJerome Forissier - name: Build Docker image 3882b5019c8SJerome Forissier run: | 3892b5019c8SJerome Forissier docker build -t qemuv7_image . 3902b5019c8SJerome Forissier docker save qemuv7_image | zstd -T0 -o qemuv7_image.tar.zst 3912b5019c8SJerome Forissier - name: Upload Docker image 3922b5019c8SJerome Forissier uses: actions/upload-artifact@v4 3932b5019c8SJerome Forissier with: 3942b5019c8SJerome Forissier name: qemuv7_image 3952b5019c8SJerome Forissier path: qemuv7_image.tar.zst 3962b5019c8SJerome Forissier retention-days: 5 3970960b676SJerome Forissier QEMUv7_checks: 3980960b676SJerome Forissier name: Run (QEMUv7) (${{ matrix.name }}) 3992b5019c8SJerome Forissier needs: QEMUv7_checks_image_build 4000960b676SJerome Forissier runs-on: ubuntu-latest 4010960b676SJerome Forissier strategy: 4020960b676SJerome Forissier fail-fast: false 4030960b676SJerome Forissier matrix: 4040960b676SJerome Forissier include: 4050960b676SJerome Forissier - name: 1 4060960b676SJerome Forissier make_commands: | 407cb034002SJerome Forissier make -j$(nproc) check CFG_LOCKDEP=y CFG_LOCKDEP_RECORD_STACK=n CFG_IN_TREE_EARLY_TAS=pkcs11/fd02c9da-306c-48c7-a49c-bbd827ae86ee CFG_PKCS11_TA=y CFG_CORE_UNSAFE_MODEXP=y XTEST_ARGS="-x pkcs11_1007" 4080960b676SJerome Forissier - name: 2 4090960b676SJerome Forissier make_commands: | 410c3d17445SJens Wiklander make -j$(nproc) check CFG_CORE_SANITIZE_KADDRESS=y CFG_CORE_ASLR=n CFG_ATTESTATION_PTA=n XTEST_ARGS="n_1001 n_1003 n_1004" 411c20ea3e2SJerome Forissier - name: 3 412c20ea3e2SJerome Forissier make_commands: | 413613f1196SAleksandr Iashchenko make -j$(nproc) check CFG_CORE_SANITIZE_KADDRESS=y CFG_CORE_ASLR=n CFG_ATTESTATION_PTA=n CFG_DYN_CONFIG=n XTEST_ARGS="n_1001 n_1003 n_1004" 414b10b4515SJerome Forissier steps: 415b10b4515SJerome Forissier - name: Checkout 416c847c2c9SJerome Forissier uses: actions/checkout@v4 417835688acSJerome Forissier - name: Update Git config 4180960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 4192b5019c8SJerome Forissier - name: Download Docker image 4202b5019c8SJerome Forissier uses: actions/download-artifact@v4 4212b5019c8SJerome Forissier with: 4222b5019c8SJerome Forissier name: qemuv7_image 4232b5019c8SJerome Forissier path: . 4242b5019c8SJerome Forissier - name: Load Docker image 4252b5019c8SJerome Forissier run: | 4262b5019c8SJerome Forissier zstd -d qemuv7_image.tar.zst -c | docker load 4270960b676SJerome Forissier - name: Generate cache key 428b10b4515SJerome Forissier run: | 4290960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 4300960b676SJerome Forissier echo "CACHE_KEY=qemuv7_check-cache-${HASH}-${GITHUB_SHA}" >> $GITHUB_ENV 4310960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv7_check-cache-${HASH}" >> ${GITHUB_ENV} 4320960b676SJerome Forissier - name: Restore build cache 4330960b676SJerome Forissier uses: actions/cache@v4 4340960b676SJerome Forissier with: 4350960b676SJerome Forissier path: /home/runner/work/ccache 4360960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 4370960b676SJerome Forissier restore-keys: | 4380960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 4390960b676SJerome Forissier - name: Host setup 4400960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 4410960b676SJerome Forissier - name: Run 'make check' tasks in container 4420960b676SJerome Forissier env: 4430960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 4440960b676SJerome Forissier run: | 4450960b676SJerome Forissier docker run --rm \ 4460960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 4470960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 4480960b676SJerome Forissier -w /root \ 4490960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 4502b5019c8SJerome Forissier qemuv7_image \ 4510960b676SJerome Forissier bash -c ' 452baa05d63SJerome Forissier set -e -v 453b10b4515SJerome Forissier 4540960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 4550960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 4560960b676SJerome Forissier export CFG_TEE_CORE_LOG_LEVEL=2 4570960b676SJerome Forissier 4580960b676SJerome Forissier TOP=/root/optee_repo_qemu 4592b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 4602b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 4612b5019c8SJerome Forissier cd $TOP/build 4620960b676SJerome Forissier 4630960b676SJerome Forissier ccache -s -v 4640960b676SJerome Forissier eval "$MAKE_COMMANDS" 4650960b676SJerome Forissier ccache -s -v 4660960b676SJerome Forissier ' 4672b5019c8SJerome Forissier QEMUv8_checks_image_build: 4682b5019c8SJerome Forissier name: Build QEMUv8 image 4692b5019c8SJerome Forissier runs-on: ubuntu-latest 4702b5019c8SJerome Forissier steps: 4712b5019c8SJerome Forissier - uses: actions/checkout@v4 4722b5019c8SJerome Forissier - name: Create Dockerfile 4732b5019c8SJerome Forissier run: | 4742b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 4752b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check 4762b5019c8SJerome Forissier RUN /root/get_optee.sh qemu_v8 /root/optee_repo_qemu_v8 4772b5019c8SJerome Forissier EOF 4782b5019c8SJerome Forissier - name: Build Docker image 4792b5019c8SJerome Forissier run: | 4802b5019c8SJerome Forissier docker build -t qemuv8_image . 4812b5019c8SJerome Forissier docker save qemuv8_image | zstd -T0 -o qemuv8_image.tar.zst 4822b5019c8SJerome Forissier - name: Upload Docker image 4832b5019c8SJerome Forissier uses: actions/upload-artifact@v4 4842b5019c8SJerome Forissier with: 4852b5019c8SJerome Forissier name: qemuv8_image 4862b5019c8SJerome Forissier path: qemuv8_image.tar.zst 4872b5019c8SJerome Forissier retention-days: 5 4880960b676SJerome Forissier QEMUv8_checks: 4890960b676SJerome Forissier name: Run (QEMUv8) (${{ matrix.name }}) 4902b5019c8SJerome Forissier needs: QEMUv8_checks_image_build 4910960b676SJerome Forissier runs-on: ubuntu-latest 4920960b676SJerome Forissier strategy: 4930960b676SJerome Forissier fail-fast: false 4940960b676SJerome Forissier matrix: 4950960b676SJerome Forissier include: 4960960b676SJerome Forissier - name: BTI+MTE+PAC 4970960b676SJerome Forissier make_commands: | 49829711e3bSJerome Forissier # The BTI-enabled toolchain is aarch64-unknown-linux-uclibc-gcc in /usr/local/bin 49929711e3bSJerome Forissier export PATH=/usr/local/bin:$PATH 50029711e3bSJerome Forissier export AARCH64_CROSS_COMPILE=aarch64-unknown-linux-uclibc- 50129711e3bSJerome Forissier 50229711e3bSJerome Forissier # xtest 1031 is excluded because 1031.4 (C++ exception from shared library) fails with this cross-compiler 503ce44b9dfSJerome Forissier # Rust is disabled because of a link error in the examples with this toolchain 504854b7c3bSJens Wiklander make -j$(nproc) CFG_CORE_BTI=y CFG_TA_BTI=y SEL0_SPS=y MEMTAG=y PAUTH=y RUST_ENABLE=n XTEST_ARGS="-x n_1031" check 505c20ea3e2SJerome Forissier - name: CE82 506c20ea3e2SJerome Forissier make_commands: | 507c20ea3e2SJerome Forissier make -j$(nproc) check CFG_CRYPTO_WITH_CE82=y 5080960b676SJerome Forissier - name: Clang 5090960b676SJerome Forissier make_commands: | 5100960b676SJerome Forissier export COMPILER=clang 5110960b676SJerome Forissier make -j$(nproc) check 512c20ea3e2SJerome Forissier - name: Clang ULIBS_SHARED=y 513c20ea3e2SJerome Forissier make_commands: | 514c20ea3e2SJerome Forissier export COMPILER=clang 5150960b676SJerome Forissier make -j$(nproc) check CFG_ULIBS_SHARED=y 516c20ea3e2SJerome Forissier - name: default 517c20ea3e2SJerome Forissier make_commands: | 518c20ea3e2SJerome Forissier make -j$(nproc) check 519c20ea3e2SJerome Forissier - name: DYN_CONFIG=n 520c20ea3e2SJerome Forissier make_commands: | 521c20ea3e2SJerome Forissier make -j$(nproc) check CFG_DYN_CONFIG=n 522c20ea3e2SJerome Forissier - name: ftrace 523c20ea3e2SJerome Forissier make_commands: | 524c20ea3e2SJerome Forissier make -j$(nproc) check CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y XTEST_ARGS=regression_1001 RUST_ENABLE=n MEASURED_BOOT_FTPM=n 5250960b676SJerome Forissier - name: FW handoff 5260960b676SJerome Forissier make_commands: | 5270960b676SJerome Forissier make -j$(nproc) check ARM_FIRMWARE_HANDOFF=y 528c20ea3e2SJerome Forissier - name: KASAN 529c20ea3e2SJerome Forissier make_commands: | 530c20ea3e2SJerome Forissier make -j$(nproc) check CFG_CORE_SANITIZE_KADDRESS=y CFG_CORE_ASLR=n CFG_ATTESTATION_PTA=n RUST_ENABLE=n MEASURED_BOOT_FTPM=n XTEST_ARGS="n_1001 n_1003 n_1004" 531c20ea3e2SJerome Forissier - name: pager 532c20ea3e2SJerome Forissier make_commands: | 533c20ea3e2SJerome Forissier make -j$(nproc) check CFG_WITH_PAGER=y MEASURED_BOOT_FTPM=n 534c20ea3e2SJerome Forissier - name: PAN=y 535c20ea3e2SJerome Forissier make_commands: | 536c20ea3e2SJerome Forissier make -j$(nproc) check CFG_PAN=y 5370960b676SJerome Forissier - name: SPMC_AT_EL=1 5380960b676SJerome Forissier make_commands: | 5390960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=1 CFG_SECURE_PARTITION=y CFG_SPMC_TESTS=y 5400960b676SJerome Forissier - name: SPMC_AT_EL=2 5410960b676SJerome Forissier make_commands: | 5420960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=2 5430960b676SJerome Forissier - name: SPMC_AT_EL=3 5440960b676SJerome Forissier make_commands: | 5450960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=3 546c20ea3e2SJerome Forissier - name: ULIBS_SHARED=y 547c20ea3e2SJerome Forissier make_commands: | 548c20ea3e2SJerome Forissier make -j$(nproc) check CFG_ULIBS_SHARED=y 5490960b676SJerome Forissier - name: Xen 5500960b676SJerome Forissier make_commands: | 5510960b676SJerome Forissier make -j$(nproc) check XEN_BOOT=y 5520960b676SJerome Forissier - name: Xen + SPMC_AT_EL=1 5530960b676SJerome Forissier make_commands: | 5540960b676SJerome Forissier make -j$(nproc) check XEN_BOOT=y SPMC_AT_EL=1 555bb7ce54eSJerome Forissier steps: 556bb7ce54eSJerome Forissier - name: Checkout 557bb7ce54eSJerome Forissier uses: actions/checkout@v4 558bb7ce54eSJerome Forissier - name: Update Git config 5590960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 5602b5019c8SJerome Forissier - name: Download Docker image 5612b5019c8SJerome Forissier uses: actions/download-artifact@v4 5622b5019c8SJerome Forissier with: 5632b5019c8SJerome Forissier name: qemuv8_image 5642b5019c8SJerome Forissier path: . 5652b5019c8SJerome Forissier - name: Load Docker image 5662b5019c8SJerome Forissier run: | 5672b5019c8SJerome Forissier zstd -d qemuv8_image.tar.zst -c | docker load 5680960b676SJerome Forissier - name: Generate cache key 569bb7ce54eSJerome Forissier run: | 5700960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 5710960b676SJerome Forissier echo "CACHE_KEY=qemuv8_check-cache-${HASH}-${GITHUB_SHA}" >> $GITHUB_ENV 5720960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv8_check-cache-${HASH}" >> ${GITHUB_ENV} 5730960b676SJerome Forissier - name: Restore build cache 5740960b676SJerome Forissier uses: actions/cache@v4 5750960b676SJerome Forissier with: 5760960b676SJerome Forissier path: /home/runner/work/ccache 5770960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 5780960b676SJerome Forissier restore-keys: | 5790960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 5800960b676SJerome Forissier - name: Host setup 5810960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 5820960b676SJerome Forissier - name: Run 'make check' tasks in container 5830960b676SJerome Forissier env: 5840960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 5850960b676SJerome Forissier run: | 5860960b676SJerome Forissier docker run --rm \ 5870960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 5880960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 5890960b676SJerome Forissier -w /root \ 5900960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 5912b5019c8SJerome Forissier qemuv8_image \ 5920960b676SJerome Forissier bash -c ' 593bb7ce54eSJerome Forissier set -e -v 5940960b676SJerome Forissier 5950960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 5960960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 5975484d3b3SJens Wiklander export CFG_TEE_CORE_LOG_LEVEL=2 598bb7ce54eSJerome Forissier export CFG_ATTESTATION_PTA=y 599bb7ce54eSJerome Forissier export CFG_ATTESTATION_PTA_KEY_SIZE=1024 600bb7ce54eSJerome Forissier 6010960b676SJerome Forissier TOP=/root/optee_repo_qemu_v8 6022b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 6032b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 6042b5019c8SJerome Forissier cd $TOP/build 6050960b676SJerome Forissier 6060960b676SJerome Forissier ccache -s -v 6070960b676SJerome Forissier eval "$MAKE_COMMANDS" 6080960b676SJerome Forissier ccache -s -v 6090960b676SJerome Forissier ' 6102b5019c8SJerome Forissier QEMUv8_arm64_image_build: 6112b5019c8SJerome Forissier name: Build QEMUv8 arm64 image 6122b5019c8SJerome Forissier runs-on: ubuntu-24.04-arm 6132b5019c8SJerome Forissier steps: 6142b5019c8SJerome Forissier - uses: actions/checkout@v4 6152b5019c8SJerome Forissier - name: Create Dockerfile 6162b5019c8SJerome Forissier run: | 6172b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 6182b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check_arm64 6192b5019c8SJerome Forissier RUN /root/get_optee.sh qemu_v8 /root/optee_repo_qemu_v8 6202b5019c8SJerome Forissier EOF 6212b5019c8SJerome Forissier - name: Build Docker image 6222b5019c8SJerome Forissier run: | 6232b5019c8SJerome Forissier docker build -t qemuv8_arm64_image . 6242b5019c8SJerome Forissier docker save qemuv8_arm64_image | zstd -T0 -o qemuv8_arm64_image.tar.zst 6252b5019c8SJerome Forissier - name: Upload Docker image 6262b5019c8SJerome Forissier uses: actions/upload-artifact@v4 6272b5019c8SJerome Forissier with: 6282b5019c8SJerome Forissier name: qemuv8_arm64_image 6292b5019c8SJerome Forissier path: qemuv8_arm64_image.tar.zst 6302b5019c8SJerome Forissier retention-days: 5 6310960b676SJerome Forissier QEMUv8_checks_arm64: 6320960b676SJerome Forissier name: Run (QEMUv8 on arm64) (${{ matrix.name }}) 6332b5019c8SJerome Forissier needs: QEMUv8_arm64_image_build 6340960b676SJerome Forissier runs-on: ubuntu-24.04-arm 6350960b676SJerome Forissier strategy: 6360960b676SJerome Forissier fail-fast: false 6370960b676SJerome Forissier matrix: 6380960b676SJerome Forissier include: 639c20ea3e2SJerome Forissier - name: CFG_CORE_UNSAFE_MODEXP=y 6400960b676SJerome Forissier make_commands: | 641bb7ce54eSJerome Forissier # CFG_CORE_UNSAFE_MODEXP=y to speed up regression_4011 642bb7ce54eSJerome Forissier make -j$(nproc) check CFG_CORE_UNSAFE_MODEXP=y 6430960b676SJerome Forissier steps: 6440960b676SJerome Forissier - name: Checkout 6450960b676SJerome Forissier uses: actions/checkout@v4 6460960b676SJerome Forissier - name: Update Git config 6470960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 6482b5019c8SJerome Forissier - name: Download Docker image 6492b5019c8SJerome Forissier uses: actions/download-artifact@v4 6502b5019c8SJerome Forissier with: 6512b5019c8SJerome Forissier name: qemuv8_arm64_image 6522b5019c8SJerome Forissier path: . 6532b5019c8SJerome Forissier - name: Load Docker image 6542b5019c8SJerome Forissier run: | 6552b5019c8SJerome Forissier zstd -d qemuv8_arm64_image.tar.zst -c | docker load 6560960b676SJerome Forissier - name: Generate cache key 6570960b676SJerome Forissier run: | 6580960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 6590960b676SJerome Forissier echo "CACHE_KEY=qemuv8_arm64_check-cache-${HASH}-${GITHUB_SHA}" >> ${GITHUB_ENV} 6600960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv8_arm64_check-cache-${HASH}" >> ${GITHUB_ENV} 6610960b676SJerome Forissier - name: Restore build cache 6620960b676SJerome Forissier uses: actions/cache@v4 6630960b676SJerome Forissier with: 6640960b676SJerome Forissier path: /home/runner/work/ccache 6650960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 6660960b676SJerome Forissier restore-keys: | 6670960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 6680960b676SJerome Forissier - name: Host setup 6690960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 6700960b676SJerome Forissier - name: Run 'make check' tasks in container 6710960b676SJerome Forissier env: 6720960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 6730960b676SJerome Forissier run: | 6740960b676SJerome Forissier docker run --rm \ 6750960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 6760960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 6770960b676SJerome Forissier -w /root \ 6780960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 6792b5019c8SJerome Forissier qemuv8_arm64_image \ 6800960b676SJerome Forissier bash -c ' 6810960b676SJerome Forissier set -e -v 6820960b676SJerome Forissier 6830960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 6840960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 6850960b676SJerome Forissier export CFG_TEE_CORE_LOG_LEVEL=2 6860960b676SJerome Forissier export CFG_ATTESTATION_PTA=y 6870960b676SJerome Forissier export CFG_ATTESTATION_PTA_KEY_SIZE=1024 6880960b676SJerome Forissier 6890960b676SJerome Forissier TOP=/root/optee_repo_qemu_v8 6902b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 6912b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 6922b5019c8SJerome Forissier cd $TOP/build 6930960b676SJerome Forissier 6940960b676SJerome Forissier ccache -s -v 6950960b676SJerome Forissier eval "$MAKE_COMMANDS" 6960960b676SJerome Forissier ccache -s -v 6970960b676SJerome Forissier ' 698