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 182*e1e6e2c6SVolodymyr 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 2810960b676SJerome Forissier - name: arm vexpress-qemu_sbsa 2820960b676SJerome Forissier make_commands: | 2830960b676SJerome Forissier _make PLATFORM=vexpress-qemu_sbsa CFG_CORE_SEL1_SPMC=y CFG_TZDRAM_START=0x20002000 CFG_TZDRAM_SIZE=0x1fbcf000 2840960b676SJerome Forissier - name: arm vexpress-qemu_virt 1 2850960b676SJerome Forissier make_commands: | 2860960b676SJerome Forissier _make 2870960b676SJerome Forissier _make COMPILER=clang 2880960b676SJerome 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 2890960b676SJerome 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 2900960b676SJerome Forissier _make CFG_TEE_CORE_MALLOC_DEBUG=y CFG_CORE_DEBUG_CHECK_STACKS=y 2910960b676SJerome Forissier _make CFG_CORE_SANITIZE_KADDRESS=y CFG_CORE_ASLR=n 2920960b676SJerome Forissier _make CFG_LOCKDEP=y 2930960b676SJerome Forissier _make CFG_CRYPTO=n 2940960b676SJerome Forissier _make CFG_CRYPTO_{AES,DES}=n 2950960b676SJerome Forissier _make CFG_CRYPTO_{DSA,RSA,DH}=n 2960960b676SJerome Forissier - name: arm vexpress-qemu_virt 2 2970960b676SJerome Forissier make_commands: | 2980960b676SJerome Forissier _make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n 2990960b676SJerome Forissier _make CFG_CRYPTO_{H,C,CBC_}MAC=n 3000960b676SJerome Forissier _make CFG_CRYPTO_{G,C}CM=n 3010960b676SJerome Forissier _make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512,512_256}}=n 3020960b676SJerome Forissier _make CFG_WITH_PAGER=y out/core/tee{,-pager,-pageable}.bin 3030960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls 3040960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y 3050960b676SJerome Forissier _make CFG_WITH_LPAE=y 3060960b676SJerome Forissier _make CFG_CORE_PREALLOC_EL0_TBLS=y 3070960b676SJerome Forissier _make CFG_RPMB_FS=y 3080960b676SJerome Forissier - name: arm vexpress-qemu_virt 3 3090960b676SJerome Forissier make_commands: | 3100960b676SJerome Forissier _make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y 3110960b676SJerome Forissier _make CFG_RPMB_FS=y CFG_RPMB_WRITE_KEY=y 3120960b676SJerome Forissier _make CFG_REE_FS=n CFG_RPMB_FS=y 3130960b676SJerome 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 3140960b676SJerome 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 3150960b676SJerome Forissier _make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y 3160960b676SJerome Forissier _make CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 3170960b676SJerome Forissier _make CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 3180960b676SJerome Forissier _make CFG_SECURE_DATA_PATH=y 3190960b676SJerome Forissier _make CFG_REE_FS_TA_BUFFERED=y 3200960b676SJerome Forissier _make CFG_WITH_USER_TA=n 3210960b676SJerome Forissier _make CFG_{ATTESTATION,DEVICE_ENUM,RTC,SCMI,SECSTOR_TA_MGT,VERAISON_ATTESTATION}_PTA=y CFG_WITH_STATS=y CFG_TA_STATS=y 3220960b676SJerome Forissier - name: arm zynqmp 3230960b676SJerome Forissier make_commands: | 3240960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 3250960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y 3260960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y CFG_WITH_SOFTWARE_PRNG=n CFG_XIPHERA_TRNG=y CFG_ZYNQMP_HUK=y 3270960b676SJerome Forissier - name: riscv 3280960b676SJerome Forissier make_commands: | 32927acbe2bSJerome Forissier export ARCH=riscv 33027acbe2bSJerome Forissier unset CROSS_COMPILE32 33127acbe2bSJerome Forissier export CROSS_COMPILE64="ccache riscv64-linux-gnu-" 33227acbe2bSJerome Forissier _make PLATFORM=virt 3331717e0d8SHuang Borong _make PLATFORM=virt CFG_RISCV_PLIC=n CFG_RISCV_APLIC=y 3341717e0d8SHuang Borong _make PLATFORM=virt CFG_RISCV_PLIC=n CFG_RISCV_APLIC_MSI=y CFG_RISCV_IMSIC=y 3359a37c47cSYu-Chien Peter Lin _make PLATFORM=sifive 336021a43d3SJerome Forissier steps: 337021a43d3SJerome Forissier - name: Checkout 338021a43d3SJerome Forissier uses: actions/checkout@v4 339835688acSJerome Forissier - name: Update Git config 340835688acSJerome Forissier run: git config --global --add safe.directory ${GITHUB_WORKSPACE} 3410960b676SJerome Forissier - name: Generate cache key 342021a43d3SJerome Forissier run: | 3430960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 3440960b676SJerome Forissier echo "CACHE_KEY=builds-cache-${HASH}-${GITHUB_SHA}" >> ${GITHUB_ENV} 3450960b676SJerome Forissier echo "CACHE_RESTORE_KEY=builds-cache-${HASH}" >> ${GITHUB_ENV} 3460960b676SJerome Forissier - name: Restore build cache 3470960b676SJerome Forissier uses: actions/cache@v4 3480960b676SJerome Forissier with: 3490960b676SJerome Forissier path: /github/home/.cache/ccache 3500960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 3510960b676SJerome Forissier restore-keys: | 3520960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 3530960b676SJerome Forissier - name: Build 3540960b676SJerome Forissier shell: bash 3550960b676SJerome Forissier env: 3560960b676SJerome Forissier MAKE_COMMANDS: ${{ matrix.make_commands }} 3570960b676SJerome Forissier run: | 358021a43d3SJerome Forissier set -e -v 359021a43d3SJerome Forissier 3600960b676SJerome Forissier export LC_ALL=C 3610960b676SJerome Forissier export PATH=/usr/local/bin:$PATH # clang 3620960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 # Prevent Buildroot error when building as root 3630960b676SJerome Forissier export CFG_DEBUG_INFO=n 3640960b676SJerome Forissier export CFG_WERROR=y 3650960b676SJerome Forissier export CROSS_COMPILE32="ccache arm-linux-gnueabihf-" 3660960b676SJerome Forissier export CROSS_COMPILE64="ccache aarch64-linux-gnu-" 3670960b676SJerome Forissier 368*e1e6e2c6SVolodymyr Babchuk 3690960b676SJerome Forissier function _make() { make -j$(nproc) -s O=out $*; } 3700960b676SJerome Forissier 3710960b676SJerome Forissier ccache -s -v 3720960b676SJerome Forissier eval "$MAKE_COMMANDS" 3730960b676SJerome Forissier ccache -s -v 3742b5019c8SJerome Forissier QEMUv7_checks_image_build: 3752b5019c8SJerome Forissier name: Build QEMUv7 image 3762b5019c8SJerome Forissier runs-on: ubuntu-latest 3772b5019c8SJerome Forissier steps: 3782b5019c8SJerome Forissier - uses: actions/checkout@v4 3792b5019c8SJerome Forissier - name: Create Dockerfile 3802b5019c8SJerome Forissier run: | 3812b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 3822b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check 3832b5019c8SJerome Forissier RUN /root/get_optee.sh default /root/optee_repo_qemu 3842b5019c8SJerome Forissier EOF 3852b5019c8SJerome Forissier - name: Build Docker image 3862b5019c8SJerome Forissier run: | 3872b5019c8SJerome Forissier docker build -t qemuv7_image . 3882b5019c8SJerome Forissier docker save qemuv7_image | zstd -T0 -o qemuv7_image.tar.zst 3892b5019c8SJerome Forissier - name: Upload Docker image 3902b5019c8SJerome Forissier uses: actions/upload-artifact@v4 3912b5019c8SJerome Forissier with: 3922b5019c8SJerome Forissier name: qemuv7_image 3932b5019c8SJerome Forissier path: qemuv7_image.tar.zst 3942b5019c8SJerome Forissier retention-days: 5 3950960b676SJerome Forissier QEMUv7_checks: 3960960b676SJerome Forissier name: Run (QEMUv7) (${{ matrix.name }}) 3972b5019c8SJerome Forissier needs: QEMUv7_checks_image_build 3980960b676SJerome Forissier runs-on: ubuntu-latest 3990960b676SJerome Forissier strategy: 4000960b676SJerome Forissier fail-fast: false 4010960b676SJerome Forissier matrix: 4020960b676SJerome Forissier include: 4030960b676SJerome Forissier - name: 1 4040960b676SJerome Forissier make_commands: | 405cb034002SJerome 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" 4060960b676SJerome Forissier - name: 2 4070960b676SJerome Forissier make_commands: | 408c3d17445SJens 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" 409c20ea3e2SJerome Forissier - name: 3 410c20ea3e2SJerome Forissier make_commands: | 411613f1196SAleksandr 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" 412b10b4515SJerome Forissier steps: 413b10b4515SJerome Forissier - name: Checkout 414c847c2c9SJerome Forissier uses: actions/checkout@v4 415835688acSJerome Forissier - name: Update Git config 4160960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 4172b5019c8SJerome Forissier - name: Download Docker image 4182b5019c8SJerome Forissier uses: actions/download-artifact@v4 4192b5019c8SJerome Forissier with: 4202b5019c8SJerome Forissier name: qemuv7_image 4212b5019c8SJerome Forissier path: . 4222b5019c8SJerome Forissier - name: Load Docker image 4232b5019c8SJerome Forissier run: | 4242b5019c8SJerome Forissier zstd -d qemuv7_image.tar.zst -c | docker load 4250960b676SJerome Forissier - name: Generate cache key 426b10b4515SJerome Forissier run: | 4270960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 4280960b676SJerome Forissier echo "CACHE_KEY=qemuv7_check-cache-${HASH}-${GITHUB_SHA}" >> $GITHUB_ENV 4290960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv7_check-cache-${HASH}" >> ${GITHUB_ENV} 4300960b676SJerome Forissier - name: Restore build cache 4310960b676SJerome Forissier uses: actions/cache@v4 4320960b676SJerome Forissier with: 4330960b676SJerome Forissier path: /home/runner/work/ccache 4340960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 4350960b676SJerome Forissier restore-keys: | 4360960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 4370960b676SJerome Forissier - name: Host setup 4380960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 4390960b676SJerome Forissier - name: Run 'make check' tasks in container 4400960b676SJerome Forissier env: 4410960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 4420960b676SJerome Forissier run: | 4430960b676SJerome Forissier docker run --rm \ 4440960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 4450960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 4460960b676SJerome Forissier -w /root \ 4470960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 4482b5019c8SJerome Forissier qemuv7_image \ 4490960b676SJerome Forissier bash -c ' 450baa05d63SJerome Forissier set -e -v 451b10b4515SJerome Forissier 4520960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 4530960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 4540960b676SJerome Forissier export CFG_TEE_CORE_LOG_LEVEL=2 4550960b676SJerome Forissier 4560960b676SJerome Forissier TOP=/root/optee_repo_qemu 4572b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 4582b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 4592b5019c8SJerome Forissier cd $TOP/build 4600960b676SJerome Forissier 4610960b676SJerome Forissier ccache -s -v 4620960b676SJerome Forissier eval "$MAKE_COMMANDS" 4630960b676SJerome Forissier ccache -s -v 4640960b676SJerome Forissier ' 4652b5019c8SJerome Forissier QEMUv8_checks_image_build: 4662b5019c8SJerome Forissier name: Build QEMUv8 image 4672b5019c8SJerome Forissier runs-on: ubuntu-latest 4682b5019c8SJerome Forissier steps: 4692b5019c8SJerome Forissier - uses: actions/checkout@v4 4702b5019c8SJerome Forissier - name: Create Dockerfile 4712b5019c8SJerome Forissier run: | 4722b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 4732b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check 4742b5019c8SJerome Forissier RUN /root/get_optee.sh qemu_v8 /root/optee_repo_qemu_v8 4752b5019c8SJerome Forissier EOF 4762b5019c8SJerome Forissier - name: Build Docker image 4772b5019c8SJerome Forissier run: | 4782b5019c8SJerome Forissier docker build -t qemuv8_image . 4792b5019c8SJerome Forissier docker save qemuv8_image | zstd -T0 -o qemuv8_image.tar.zst 4802b5019c8SJerome Forissier - name: Upload Docker image 4812b5019c8SJerome Forissier uses: actions/upload-artifact@v4 4822b5019c8SJerome Forissier with: 4832b5019c8SJerome Forissier name: qemuv8_image 4842b5019c8SJerome Forissier path: qemuv8_image.tar.zst 4852b5019c8SJerome Forissier retention-days: 5 4860960b676SJerome Forissier QEMUv8_checks: 4870960b676SJerome Forissier name: Run (QEMUv8) (${{ matrix.name }}) 4882b5019c8SJerome Forissier needs: QEMUv8_checks_image_build 4890960b676SJerome Forissier runs-on: ubuntu-latest 4900960b676SJerome Forissier strategy: 4910960b676SJerome Forissier fail-fast: false 4920960b676SJerome Forissier matrix: 4930960b676SJerome Forissier include: 4940960b676SJerome Forissier - name: BTI+MTE+PAC 4950960b676SJerome Forissier make_commands: | 49629711e3bSJerome Forissier # The BTI-enabled toolchain is aarch64-unknown-linux-uclibc-gcc in /usr/local/bin 49729711e3bSJerome Forissier export PATH=/usr/local/bin:$PATH 49829711e3bSJerome Forissier export AARCH64_CROSS_COMPILE=aarch64-unknown-linux-uclibc- 49929711e3bSJerome Forissier 50029711e3bSJerome Forissier # xtest 1031 is excluded because 1031.4 (C++ exception from shared library) fails with this cross-compiler 501ce44b9dfSJerome Forissier # Rust is disabled because of a link error in the examples with this toolchain 502854b7c3bSJens 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 503c20ea3e2SJerome Forissier - name: CE82 504c20ea3e2SJerome Forissier make_commands: | 505c20ea3e2SJerome Forissier make -j$(nproc) check CFG_CRYPTO_WITH_CE82=y 5060960b676SJerome Forissier - name: Clang 5070960b676SJerome Forissier make_commands: | 5080960b676SJerome Forissier export COMPILER=clang 5090960b676SJerome Forissier make -j$(nproc) check 510c20ea3e2SJerome Forissier - name: Clang ULIBS_SHARED=y 511c20ea3e2SJerome Forissier make_commands: | 512c20ea3e2SJerome Forissier export COMPILER=clang 5130960b676SJerome Forissier make -j$(nproc) check CFG_ULIBS_SHARED=y 514c20ea3e2SJerome Forissier - name: default 515c20ea3e2SJerome Forissier make_commands: | 516c20ea3e2SJerome Forissier make -j$(nproc) check 517c20ea3e2SJerome Forissier - name: DYN_CONFIG=n 518c20ea3e2SJerome Forissier make_commands: | 519c20ea3e2SJerome Forissier make -j$(nproc) check CFG_DYN_CONFIG=n 520c20ea3e2SJerome Forissier - name: ftrace 521c20ea3e2SJerome Forissier make_commands: | 522c20ea3e2SJerome Forissier make -j$(nproc) check CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y XTEST_ARGS=regression_1001 RUST_ENABLE=n MEASURED_BOOT_FTPM=n 5230960b676SJerome Forissier - name: FW handoff 5240960b676SJerome Forissier make_commands: | 5250960b676SJerome Forissier make -j$(nproc) check ARM_FIRMWARE_HANDOFF=y 526c20ea3e2SJerome Forissier - name: KASAN 527c20ea3e2SJerome Forissier make_commands: | 528c20ea3e2SJerome 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" 529c20ea3e2SJerome Forissier - name: pager 530c20ea3e2SJerome Forissier make_commands: | 531c20ea3e2SJerome Forissier make -j$(nproc) check CFG_WITH_PAGER=y MEASURED_BOOT_FTPM=n 532c20ea3e2SJerome Forissier - name: PAN=y 533c20ea3e2SJerome Forissier make_commands: | 534c20ea3e2SJerome Forissier make -j$(nproc) check CFG_PAN=y 5350960b676SJerome Forissier - name: SPMC_AT_EL=1 5360960b676SJerome Forissier make_commands: | 5370960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=1 CFG_SECURE_PARTITION=y CFG_SPMC_TESTS=y 5380960b676SJerome Forissier - name: SPMC_AT_EL=2 5390960b676SJerome Forissier make_commands: | 5400960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=2 5410960b676SJerome Forissier - name: SPMC_AT_EL=3 5420960b676SJerome Forissier make_commands: | 5430960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=3 544c20ea3e2SJerome Forissier - name: ULIBS_SHARED=y 545c20ea3e2SJerome Forissier make_commands: | 546c20ea3e2SJerome Forissier make -j$(nproc) check CFG_ULIBS_SHARED=y 5470960b676SJerome Forissier - name: Xen 5480960b676SJerome Forissier make_commands: | 5490960b676SJerome Forissier make -j$(nproc) check XEN_BOOT=y 5500960b676SJerome Forissier - name: Xen + SPMC_AT_EL=1 5510960b676SJerome Forissier make_commands: | 5520960b676SJerome Forissier make -j$(nproc) check XEN_BOOT=y SPMC_AT_EL=1 553bb7ce54eSJerome Forissier steps: 554bb7ce54eSJerome Forissier - name: Checkout 555bb7ce54eSJerome Forissier uses: actions/checkout@v4 556bb7ce54eSJerome Forissier - name: Update Git config 5570960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 5582b5019c8SJerome Forissier - name: Download Docker image 5592b5019c8SJerome Forissier uses: actions/download-artifact@v4 5602b5019c8SJerome Forissier with: 5612b5019c8SJerome Forissier name: qemuv8_image 5622b5019c8SJerome Forissier path: . 5632b5019c8SJerome Forissier - name: Load Docker image 5642b5019c8SJerome Forissier run: | 5652b5019c8SJerome Forissier zstd -d qemuv8_image.tar.zst -c | docker load 5660960b676SJerome Forissier - name: Generate cache key 567bb7ce54eSJerome Forissier run: | 5680960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 5690960b676SJerome Forissier echo "CACHE_KEY=qemuv8_check-cache-${HASH}-${GITHUB_SHA}" >> $GITHUB_ENV 5700960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv8_check-cache-${HASH}" >> ${GITHUB_ENV} 5710960b676SJerome Forissier - name: Restore build cache 5720960b676SJerome Forissier uses: actions/cache@v4 5730960b676SJerome Forissier with: 5740960b676SJerome Forissier path: /home/runner/work/ccache 5750960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 5760960b676SJerome Forissier restore-keys: | 5770960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 5780960b676SJerome Forissier - name: Host setup 5790960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 5800960b676SJerome Forissier - name: Run 'make check' tasks in container 5810960b676SJerome Forissier env: 5820960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 5830960b676SJerome Forissier run: | 5840960b676SJerome Forissier docker run --rm \ 5850960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 5860960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 5870960b676SJerome Forissier -w /root \ 5880960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 5892b5019c8SJerome Forissier qemuv8_image \ 5900960b676SJerome Forissier bash -c ' 591bb7ce54eSJerome Forissier set -e -v 5920960b676SJerome Forissier 5930960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 5940960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 5955484d3b3SJens Wiklander export CFG_TEE_CORE_LOG_LEVEL=2 596bb7ce54eSJerome Forissier export CFG_ATTESTATION_PTA=y 597bb7ce54eSJerome Forissier export CFG_ATTESTATION_PTA_KEY_SIZE=1024 598bb7ce54eSJerome Forissier 5990960b676SJerome Forissier TOP=/root/optee_repo_qemu_v8 6002b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 6012b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 6022b5019c8SJerome Forissier cd $TOP/build 6030960b676SJerome Forissier 6040960b676SJerome Forissier ccache -s -v 6050960b676SJerome Forissier eval "$MAKE_COMMANDS" 6060960b676SJerome Forissier ccache -s -v 6070960b676SJerome Forissier ' 6082b5019c8SJerome Forissier QEMUv8_arm64_image_build: 6092b5019c8SJerome Forissier name: Build QEMUv8 arm64 image 6102b5019c8SJerome Forissier runs-on: ubuntu-24.04-arm 6112b5019c8SJerome Forissier steps: 6122b5019c8SJerome Forissier - uses: actions/checkout@v4 6132b5019c8SJerome Forissier - name: Create Dockerfile 6142b5019c8SJerome Forissier run: | 6152b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 6162b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check_arm64 6172b5019c8SJerome Forissier RUN /root/get_optee.sh qemu_v8 /root/optee_repo_qemu_v8 6182b5019c8SJerome Forissier EOF 6192b5019c8SJerome Forissier - name: Build Docker image 6202b5019c8SJerome Forissier run: | 6212b5019c8SJerome Forissier docker build -t qemuv8_arm64_image . 6222b5019c8SJerome Forissier docker save qemuv8_arm64_image | zstd -T0 -o qemuv8_arm64_image.tar.zst 6232b5019c8SJerome Forissier - name: Upload Docker image 6242b5019c8SJerome Forissier uses: actions/upload-artifact@v4 6252b5019c8SJerome Forissier with: 6262b5019c8SJerome Forissier name: qemuv8_arm64_image 6272b5019c8SJerome Forissier path: qemuv8_arm64_image.tar.zst 6282b5019c8SJerome Forissier retention-days: 5 6290960b676SJerome Forissier QEMUv8_checks_arm64: 6300960b676SJerome Forissier name: Run (QEMUv8 on arm64) (${{ matrix.name }}) 6312b5019c8SJerome Forissier needs: QEMUv8_arm64_image_build 6320960b676SJerome Forissier runs-on: ubuntu-24.04-arm 6330960b676SJerome Forissier strategy: 6340960b676SJerome Forissier fail-fast: false 6350960b676SJerome Forissier matrix: 6360960b676SJerome Forissier include: 637c20ea3e2SJerome Forissier - name: CFG_CORE_UNSAFE_MODEXP=y 6380960b676SJerome Forissier make_commands: | 639bb7ce54eSJerome Forissier # CFG_CORE_UNSAFE_MODEXP=y to speed up regression_4011 640bb7ce54eSJerome Forissier make -j$(nproc) check CFG_CORE_UNSAFE_MODEXP=y 6410960b676SJerome Forissier steps: 6420960b676SJerome Forissier - name: Checkout 6430960b676SJerome Forissier uses: actions/checkout@v4 6440960b676SJerome Forissier - name: Update Git config 6450960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 6462b5019c8SJerome Forissier - name: Download Docker image 6472b5019c8SJerome Forissier uses: actions/download-artifact@v4 6482b5019c8SJerome Forissier with: 6492b5019c8SJerome Forissier name: qemuv8_arm64_image 6502b5019c8SJerome Forissier path: . 6512b5019c8SJerome Forissier - name: Load Docker image 6522b5019c8SJerome Forissier run: | 6532b5019c8SJerome Forissier zstd -d qemuv8_arm64_image.tar.zst -c | docker load 6540960b676SJerome Forissier - name: Generate cache key 6550960b676SJerome Forissier run: | 6560960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 6570960b676SJerome Forissier echo "CACHE_KEY=qemuv8_arm64_check-cache-${HASH}-${GITHUB_SHA}" >> ${GITHUB_ENV} 6580960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv8_arm64_check-cache-${HASH}" >> ${GITHUB_ENV} 6590960b676SJerome Forissier - name: Restore build cache 6600960b676SJerome Forissier uses: actions/cache@v4 6610960b676SJerome Forissier with: 6620960b676SJerome Forissier path: /home/runner/work/ccache 6630960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 6640960b676SJerome Forissier restore-keys: | 6650960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 6660960b676SJerome Forissier - name: Host setup 6670960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 6680960b676SJerome Forissier - name: Run 'make check' tasks in container 6690960b676SJerome Forissier env: 6700960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 6710960b676SJerome Forissier run: | 6720960b676SJerome Forissier docker run --rm \ 6730960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 6740960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 6750960b676SJerome Forissier -w /root \ 6760960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 6772b5019c8SJerome Forissier qemuv8_arm64_image \ 6780960b676SJerome Forissier bash -c ' 6790960b676SJerome Forissier set -e -v 6800960b676SJerome Forissier 6810960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 6820960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 6830960b676SJerome Forissier export CFG_TEE_CORE_LOG_LEVEL=2 6840960b676SJerome Forissier export CFG_ATTESTATION_PTA=y 6850960b676SJerome Forissier export CFG_ATTESTATION_PTA_KEY_SIZE=1024 6860960b676SJerome Forissier 6870960b676SJerome Forissier TOP=/root/optee_repo_qemu_v8 6882b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 6892b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 6902b5019c8SJerome Forissier cd $TOP/build 6910960b676SJerome Forissier 6920960b676SJerome Forissier ccache -s -v 6930960b676SJerome Forissier eval "$MAKE_COMMANDS" 6940960b676SJerome Forissier ccache -s -v 6950960b676SJerome Forissier ' 696