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 1820960b676SJerome Forissier _make PLATFORM=zynq7k-zc702 1836945b368SAnil Kumar Reddy _make PLATFORM=marvell-cnf20ka 184b10b4515SJerome Forissier _make PLATFORM=synquacer 185b10b4515SJerome Forissier _make PLATFORM=sunxi-bpi_zero 186b10b4515SJerome Forissier _make PLATFORM=sunxi-sun50i_a64 1870960b676SJerome Forissier - name: arm misc 2 1880960b676SJerome Forissier make_commands: | 189b10b4515SJerome Forissier _make PLATFORM=bcm-ns3 CFG_ARM64_core=y 190b10b4515SJerome Forissier _make PLATFORM=hisilicon-hi3519av100_demo 191b10b4515SJerome Forissier _make PLATFORM=amlogic 192b10b4515SJerome Forissier _make PLATFORM=rzn1 193d8d2e5e6SJorge Ramirez-Ortiz _make PLATFORM=versal CFG_VERSAL_FPGA_DDR_ADDR=0x40000000 19442f66171SVishnu Banavath _make PLATFORM=corstone1000 19528a029b5SMargarita Glushkin _make PLATFORM=nuvoton 196c25f5007Sloubaihui _make PLATFORM=d06 197a8cfcdf2Sloubaihui _make PLATFORM=d06 CFG_HISILICON_ACC_V3=y 198c1e65709SSungmin Han _make PLATFORM=telechips-tcc805x 19920d6b459SAkshay Belsare _make PLATFORM=versal2 20020d6b459SAkshay Belsare _make PLATFORM=versal2 CFG_AMD_PS_GPIO=y 2010960b676SJerome Forissier _make PLATFORM=sprd-sc9860 2020960b676SJerome Forissier _make PLATFORM=sprd-sc9860 CFG_ARM64_core=y 2030960b676SJerome Forissier - name: arm Plug and Trust 2040960b676SJerome Forissier make_commands: | 2050960b676SJerome 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); } 2060960b676SJerome Forissier download_plug_and_trust 207b10b4515SJerome Forissier 2080960b676SJerome 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 2090960b676SJerome 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 2101e219620SSumit Garg - name: arm qcom 2111e219620SSumit Garg make_commands: | 2121e219620SSumit Garg _make PLATFORM=qcom-kodiak 2130960b676SJerome Forissier - name: arm rockchip 2140960b676SJerome Forissier make_commands: | 2150960b676SJerome Forissier _make PLATFORM=rockchip-rk322x 2160960b676SJerome Forissier _make PLATFORM=rockchip-rk3399 2170960b676SJerome Forissier _make PLATFORM=rockchip-rk3588 2180960b676SJerome Forissier - name: arm sam 2190960b676SJerome Forissier make_commands: | 2200960b676SJerome Forissier _make PLATFORM=sam 2210960b676SJerome Forissier _make PLATFORM=sam-sama5d2_xplained 2220960b676SJerome Forissier _make PLATFORM=sam-sama5d27_som1_ek 2230960b676SJerome Forissier _make PLATFORM=sam-sama5d27_wlsom1_ek 2240960b676SJerome Forissier - name: arm SCP firmware 2250960b676SJerome Forissier make_commands: | 2260960b676SJerome 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); } 2270960b676SJerome Forissier download_scp_firmware 2280960b676SJerome Forissier 2290960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=vexpress-qemu_armv8a CFG_SCMI_SCPFW=y CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2300960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp2 CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2310960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp2-235F_DK CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2320960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp2-215F_DK CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2330960b676SJerome Forissier if [ -d $HOME/scp-firmware ]; then _make PLATFORM=vexpress-fvp CFG_SCMI_SCPFW=y CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2340960b676SJerome Forissier # if [ -d $HOME/scp-firmware ]; then _make PLATFORM=stm32mp1-157C_DK2 CFG_SCMI_SCPFW=y CFG_SCP_FIRMWARE=$HOME/scp-firmware; fi 2350960b676SJerome Forissier - name: arm stm 2360960b676SJerome Forissier make_commands: | 2370960b676SJerome Forissier _make PLATFORM=stm-b2260 2380960b676SJerome Forissier _make PLATFORM=stm-cannes 2390960b676SJerome Forissier - name: arm stm32mp1 2400960b676SJerome Forissier make_commands: | 2410960b676SJerome Forissier _make PLATFORM=stm32mp1 2420960b676SJerome Forissier _make PLATFORM=stm32mp1-135F_DK CFG_DRIVERS_CLK_PRINT_TREE=y CFG_DRIVERS_REGULATOR_PRINT_TREE=y 2430960b676SJerome Forissier _make PLATFORM=stm32mp1-135F_DK COMPILER=clang 2440960b676SJerome Forissier _make PLATFORM=stm32mp1 CFG_STM32MP1_OPTEE_IN_SYSRAM=y CFG_STM32MP_REMOTEPROC=y 2450960b676SJerome Forissier - name: arm ti 2460960b676SJerome Forissier make_commands: | 2470960b676SJerome Forissier _make PLATFORM=ti-dra7xx out/core/tee{,-pager,-pageable}.bin 2480960b676SJerome Forissier _make PLATFORM=ti-am57xx 2490960b676SJerome Forissier _make PLATFORM=ti-am43xx 2500960b676SJerome Forissier - name: arm vexpress-fvp 2510960b676SJerome Forissier make_commands: | 2520960b676SJerome Forissier _make PLATFORM=vexpress-fvp 2530960b676SJerome Forissier _make PLATFORM=vexpress-fvp CFG_ARM64_core=y 2540960b676SJerome Forissier _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_CORE_SEL1_SPMC=y CFG_SECURE_PARTITION=y 2550960b676SJerome Forissier - name: arm vexpress-juno 2560960b676SJerome Forissier make_commands: | 2570960b676SJerome Forissier _make PLATFORM=vexpress-juno 2580960b676SJerome Forissier _make PLATFORM=vexpress-juno CFG_ARM64_core=y 2590960b676SJerome Forissier - name: arm vexpress-qemu_armv8a 1 2600960b676SJerome Forissier make_commands: | 2610960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a 2620960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a COMPILER=clang 2630960b676SJerome 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 2640960b676SJerome 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 2650960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_WITH_PAGER=y 2660960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 2670960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 2680960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_NS_VIRTUALIZATION=y 2690960b676SJerome Forissier - name: arm vexpress-qemu_armv8a 2 2700960b676SJerome Forissier make_commands: | 2710960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_PREALLOC_EL0_TBLS=y 2720960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_TRANSFER_LIST=y CFG_MAP_EXT_DT_SECURE=y 2730960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL1_SPMC=y 2740960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL2_SPMC=y CFG_CORE_PHYS_RELOCATABLE=y CFG_TZDRAM_START=0x0d304000 CFG_TZDRAM_SIZE=0x00cfc000 2750960b676SJerome 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 2760960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL1_SPMC=y CFG_NS_VIRTUALIZATION=y 2770960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CRYPTO_WITH_CE=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls 2780960b676SJerome Forissier _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SANITIZE_UNDEFINED=y CFG_TA_SANITIZE_UNDEFINED=y CFG_TEE_RAM_VA_SIZE=0x00400000 2790960b676SJerome 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 2800960b676SJerome Forissier - name: arm vexpress-qemu_sbsa 2810960b676SJerome Forissier make_commands: | 2820960b676SJerome Forissier _make PLATFORM=vexpress-qemu_sbsa CFG_CORE_SEL1_SPMC=y CFG_TZDRAM_START=0x20002000 CFG_TZDRAM_SIZE=0x1fbcf000 2830960b676SJerome Forissier - name: arm vexpress-qemu_virt 1 2840960b676SJerome Forissier make_commands: | 2850960b676SJerome Forissier _make 2860960b676SJerome Forissier _make COMPILER=clang 2870960b676SJerome 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 2880960b676SJerome 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 2890960b676SJerome Forissier _make CFG_TEE_CORE_MALLOC_DEBUG=y CFG_CORE_DEBUG_CHECK_STACKS=y 2900960b676SJerome Forissier _make CFG_CORE_SANITIZE_KADDRESS=y CFG_CORE_ASLR=n 2910960b676SJerome Forissier _make CFG_LOCKDEP=y 2920960b676SJerome Forissier _make CFG_CRYPTO=n 2930960b676SJerome Forissier _make CFG_CRYPTO_{AES,DES}=n 2940960b676SJerome Forissier _make CFG_CRYPTO_{DSA,RSA,DH}=n 2950960b676SJerome Forissier - name: arm vexpress-qemu_virt 2 2960960b676SJerome Forissier make_commands: | 2970960b676SJerome Forissier _make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n 2980960b676SJerome Forissier _make CFG_CRYPTO_{H,C,CBC_}MAC=n 2990960b676SJerome Forissier _make CFG_CRYPTO_{G,C}CM=n 3000960b676SJerome Forissier _make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512,512_256}}=n 3010960b676SJerome Forissier _make CFG_WITH_PAGER=y out/core/tee{,-pager,-pageable}.bin 3020960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls 3030960b676SJerome Forissier _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y 3040960b676SJerome Forissier _make CFG_WITH_LPAE=y 3050960b676SJerome Forissier _make CFG_CORE_PREALLOC_EL0_TBLS=y 3060960b676SJerome Forissier _make CFG_RPMB_FS=y 3070960b676SJerome Forissier - name: arm vexpress-qemu_virt 3 3080960b676SJerome Forissier make_commands: | 3090960b676SJerome Forissier _make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y 3100960b676SJerome Forissier _make CFG_RPMB_FS=y CFG_RPMB_WRITE_KEY=y 3110960b676SJerome Forissier _make CFG_REE_FS=n CFG_RPMB_FS=y 3120960b676SJerome 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 3130960b676SJerome 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 3140960b676SJerome Forissier _make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y 3150960b676SJerome Forissier _make CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 3160960b676SJerome Forissier _make CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 3170960b676SJerome Forissier _make CFG_SECURE_DATA_PATH=y 3180960b676SJerome Forissier _make CFG_REE_FS_TA_BUFFERED=y 3190960b676SJerome Forissier _make CFG_WITH_USER_TA=n 3200960b676SJerome Forissier _make CFG_{ATTESTATION,DEVICE_ENUM,RTC,SCMI,SECSTOR_TA_MGT,VERAISON_ATTESTATION}_PTA=y CFG_WITH_STATS=y CFG_TA_STATS=y 3210960b676SJerome Forissier - name: arm zynqmp 3220960b676SJerome Forissier make_commands: | 3230960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 3240960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y 3250960b676SJerome Forissier _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y CFG_WITH_SOFTWARE_PRNG=n CFG_XIPHERA_TRNG=y CFG_ZYNQMP_HUK=y 3260960b676SJerome Forissier - name: riscv 3270960b676SJerome Forissier make_commands: | 32827acbe2bSJerome Forissier export ARCH=riscv 32927acbe2bSJerome Forissier unset CROSS_COMPILE32 33027acbe2bSJerome Forissier export CROSS_COMPILE64="ccache riscv64-linux-gnu-" 33127acbe2bSJerome Forissier _make PLATFORM=virt 3321717e0d8SHuang Borong _make PLATFORM=virt CFG_RISCV_PLIC=n CFG_RISCV_APLIC=y 3331717e0d8SHuang Borong _make PLATFORM=virt CFG_RISCV_PLIC=n CFG_RISCV_APLIC_MSI=y CFG_RISCV_IMSIC=y 3349a37c47cSYu-Chien Peter Lin _make PLATFORM=sifive 335021a43d3SJerome Forissier steps: 336021a43d3SJerome Forissier - name: Checkout 337021a43d3SJerome Forissier uses: actions/checkout@v4 338835688acSJerome Forissier - name: Update Git config 339835688acSJerome Forissier run: git config --global --add safe.directory ${GITHUB_WORKSPACE} 3400960b676SJerome Forissier - name: Generate cache key 341021a43d3SJerome Forissier run: | 3420960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 3430960b676SJerome Forissier echo "CACHE_KEY=builds-cache-${HASH}-${GITHUB_SHA}" >> ${GITHUB_ENV} 3440960b676SJerome Forissier echo "CACHE_RESTORE_KEY=builds-cache-${HASH}" >> ${GITHUB_ENV} 3450960b676SJerome Forissier - name: Restore build cache 3460960b676SJerome Forissier uses: actions/cache@v4 3470960b676SJerome Forissier with: 3480960b676SJerome Forissier path: /github/home/.cache/ccache 3490960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 3500960b676SJerome Forissier restore-keys: | 3510960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 3520960b676SJerome Forissier - name: Build 3530960b676SJerome Forissier shell: bash 3540960b676SJerome Forissier env: 3550960b676SJerome Forissier MAKE_COMMANDS: ${{ matrix.make_commands }} 3560960b676SJerome Forissier run: | 357021a43d3SJerome Forissier set -e -v 358021a43d3SJerome Forissier 3590960b676SJerome Forissier export LC_ALL=C 3600960b676SJerome Forissier export PATH=/usr/local/bin:$PATH # clang 3610960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 # Prevent Buildroot error when building as root 3620960b676SJerome Forissier export CFG_DEBUG_INFO=n 3630960b676SJerome Forissier export CFG_WERROR=y 3640960b676SJerome Forissier export CROSS_COMPILE32="ccache arm-linux-gnueabihf-" 3650960b676SJerome Forissier export CROSS_COMPILE64="ccache aarch64-linux-gnu-" 3660960b676SJerome Forissier 3670960b676SJerome Forissier function _make() { make -j$(nproc) -s O=out $*; } 3680960b676SJerome Forissier 3690960b676SJerome Forissier ccache -s -v 3700960b676SJerome Forissier eval "$MAKE_COMMANDS" 3710960b676SJerome Forissier ccache -s -v 372*2b5019c8SJerome Forissier QEMUv7_checks_image_build: 373*2b5019c8SJerome Forissier name: Build QEMUv7 image 374*2b5019c8SJerome Forissier runs-on: ubuntu-latest 375*2b5019c8SJerome Forissier steps: 376*2b5019c8SJerome Forissier - uses: actions/checkout@v4 377*2b5019c8SJerome Forissier - name: Create Dockerfile 378*2b5019c8SJerome Forissier run: | 379*2b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 380*2b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check 381*2b5019c8SJerome Forissier RUN /root/get_optee.sh default /root/optee_repo_qemu 382*2b5019c8SJerome Forissier EOF 383*2b5019c8SJerome Forissier - name: Build Docker image 384*2b5019c8SJerome Forissier run: | 385*2b5019c8SJerome Forissier docker build -t qemuv7_image . 386*2b5019c8SJerome Forissier docker save qemuv7_image | zstd -T0 -o qemuv7_image.tar.zst 387*2b5019c8SJerome Forissier - name: Upload Docker image 388*2b5019c8SJerome Forissier uses: actions/upload-artifact@v4 389*2b5019c8SJerome Forissier with: 390*2b5019c8SJerome Forissier name: qemuv7_image 391*2b5019c8SJerome Forissier path: qemuv7_image.tar.zst 392*2b5019c8SJerome Forissier retention-days: 5 3930960b676SJerome Forissier QEMUv7_checks: 3940960b676SJerome Forissier name: Run (QEMUv7) (${{ matrix.name }}) 395*2b5019c8SJerome Forissier needs: QEMUv7_checks_image_build 3960960b676SJerome Forissier runs-on: ubuntu-latest 3970960b676SJerome Forissier strategy: 3980960b676SJerome Forissier fail-fast: false 3990960b676SJerome Forissier matrix: 4000960b676SJerome Forissier include: 4010960b676SJerome Forissier - name: 1 4020960b676SJerome Forissier make_commands: | 403cb034002SJerome 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" 4040960b676SJerome Forissier - name: 2 4050960b676SJerome Forissier make_commands: | 406c3d17445SJens 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" 407c20ea3e2SJerome Forissier - name: 3 408c20ea3e2SJerome Forissier make_commands: | 409613f1196SAleksandr 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" 410b10b4515SJerome Forissier steps: 411b10b4515SJerome Forissier - name: Checkout 412c847c2c9SJerome Forissier uses: actions/checkout@v4 413835688acSJerome Forissier - name: Update Git config 4140960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 415*2b5019c8SJerome Forissier - name: Download Docker image 416*2b5019c8SJerome Forissier uses: actions/download-artifact@v4 417*2b5019c8SJerome Forissier with: 418*2b5019c8SJerome Forissier name: qemuv7_image 419*2b5019c8SJerome Forissier path: . 420*2b5019c8SJerome Forissier - name: Load Docker image 421*2b5019c8SJerome Forissier run: | 422*2b5019c8SJerome Forissier zstd -d qemuv7_image.tar.zst -c | docker load 4230960b676SJerome Forissier - name: Generate cache key 424b10b4515SJerome Forissier run: | 4250960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 4260960b676SJerome Forissier echo "CACHE_KEY=qemuv7_check-cache-${HASH}-${GITHUB_SHA}" >> $GITHUB_ENV 4270960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv7_check-cache-${HASH}" >> ${GITHUB_ENV} 4280960b676SJerome Forissier - name: Restore build cache 4290960b676SJerome Forissier uses: actions/cache@v4 4300960b676SJerome Forissier with: 4310960b676SJerome Forissier path: /home/runner/work/ccache 4320960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 4330960b676SJerome Forissier restore-keys: | 4340960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 4350960b676SJerome Forissier - name: Host setup 4360960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 4370960b676SJerome Forissier - name: Run 'make check' tasks in container 4380960b676SJerome Forissier env: 4390960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 4400960b676SJerome Forissier run: | 4410960b676SJerome Forissier docker run --rm \ 4420960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 4430960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 4440960b676SJerome Forissier -w /root \ 4450960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 446*2b5019c8SJerome Forissier qemuv7_image \ 4470960b676SJerome Forissier bash -c ' 448baa05d63SJerome Forissier set -e -v 449b10b4515SJerome Forissier 4500960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 4510960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 4520960b676SJerome Forissier export CFG_TEE_CORE_LOG_LEVEL=2 4530960b676SJerome Forissier 4540960b676SJerome Forissier TOP=/root/optee_repo_qemu 455*2b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 456*2b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 457*2b5019c8SJerome Forissier cd $TOP/build 4580960b676SJerome Forissier 4590960b676SJerome Forissier ccache -s -v 4600960b676SJerome Forissier eval "$MAKE_COMMANDS" 4610960b676SJerome Forissier ccache -s -v 4620960b676SJerome Forissier ' 463*2b5019c8SJerome Forissier QEMUv8_checks_image_build: 464*2b5019c8SJerome Forissier name: Build QEMUv8 image 465*2b5019c8SJerome Forissier runs-on: ubuntu-latest 466*2b5019c8SJerome Forissier steps: 467*2b5019c8SJerome Forissier - uses: actions/checkout@v4 468*2b5019c8SJerome Forissier - name: Create Dockerfile 469*2b5019c8SJerome Forissier run: | 470*2b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 471*2b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check 472*2b5019c8SJerome Forissier RUN /root/get_optee.sh qemu_v8 /root/optee_repo_qemu_v8 473*2b5019c8SJerome Forissier EOF 474*2b5019c8SJerome Forissier - name: Build Docker image 475*2b5019c8SJerome Forissier run: | 476*2b5019c8SJerome Forissier docker build -t qemuv8_image . 477*2b5019c8SJerome Forissier docker save qemuv8_image | zstd -T0 -o qemuv8_image.tar.zst 478*2b5019c8SJerome Forissier - name: Upload Docker image 479*2b5019c8SJerome Forissier uses: actions/upload-artifact@v4 480*2b5019c8SJerome Forissier with: 481*2b5019c8SJerome Forissier name: qemuv8_image 482*2b5019c8SJerome Forissier path: qemuv8_image.tar.zst 483*2b5019c8SJerome Forissier retention-days: 5 4840960b676SJerome Forissier QEMUv8_checks: 4850960b676SJerome Forissier name: Run (QEMUv8) (${{ matrix.name }}) 486*2b5019c8SJerome Forissier needs: QEMUv8_checks_image_build 4870960b676SJerome Forissier runs-on: ubuntu-latest 4880960b676SJerome Forissier strategy: 4890960b676SJerome Forissier fail-fast: false 4900960b676SJerome Forissier matrix: 4910960b676SJerome Forissier include: 4920960b676SJerome Forissier - name: BTI+MTE+PAC 4930960b676SJerome Forissier make_commands: | 49429711e3bSJerome Forissier # The BTI-enabled toolchain is aarch64-unknown-linux-uclibc-gcc in /usr/local/bin 49529711e3bSJerome Forissier export PATH=/usr/local/bin:$PATH 49629711e3bSJerome Forissier export AARCH64_CROSS_COMPILE=aarch64-unknown-linux-uclibc- 49729711e3bSJerome Forissier 49829711e3bSJerome Forissier # xtest 1031 is excluded because 1031.4 (C++ exception from shared library) fails with this cross-compiler 499ce44b9dfSJerome Forissier # Rust is disabled because of a link error in the examples with this toolchain 500854b7c3bSJens 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 501c20ea3e2SJerome Forissier - name: CE82 502c20ea3e2SJerome Forissier make_commands: | 503c20ea3e2SJerome Forissier make -j$(nproc) check CFG_CRYPTO_WITH_CE82=y 5040960b676SJerome Forissier - name: Clang 5050960b676SJerome Forissier make_commands: | 5060960b676SJerome Forissier export COMPILER=clang 5070960b676SJerome Forissier make -j$(nproc) check 508c20ea3e2SJerome Forissier - name: Clang ULIBS_SHARED=y 509c20ea3e2SJerome Forissier make_commands: | 510c20ea3e2SJerome Forissier export COMPILER=clang 5110960b676SJerome Forissier make -j$(nproc) check CFG_ULIBS_SHARED=y 512c20ea3e2SJerome Forissier - name: default 513c20ea3e2SJerome Forissier make_commands: | 514c20ea3e2SJerome Forissier make -j$(nproc) check 515c20ea3e2SJerome Forissier - name: DYN_CONFIG=n 516c20ea3e2SJerome Forissier make_commands: | 517c20ea3e2SJerome Forissier make -j$(nproc) check CFG_DYN_CONFIG=n 518c20ea3e2SJerome Forissier - name: ftrace 519c20ea3e2SJerome Forissier make_commands: | 520c20ea3e2SJerome Forissier make -j$(nproc) check CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y XTEST_ARGS=regression_1001 RUST_ENABLE=n MEASURED_BOOT_FTPM=n 5210960b676SJerome Forissier - name: FW handoff 5220960b676SJerome Forissier make_commands: | 5230960b676SJerome Forissier make -j$(nproc) check ARM_FIRMWARE_HANDOFF=y 524c20ea3e2SJerome Forissier - name: KASAN 525c20ea3e2SJerome Forissier make_commands: | 526c20ea3e2SJerome 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" 527c20ea3e2SJerome Forissier - name: pager 528c20ea3e2SJerome Forissier make_commands: | 529c20ea3e2SJerome Forissier make -j$(nproc) check CFG_WITH_PAGER=y MEASURED_BOOT_FTPM=n 530c20ea3e2SJerome Forissier - name: PAN=y 531c20ea3e2SJerome Forissier make_commands: | 532c20ea3e2SJerome Forissier make -j$(nproc) check CFG_PAN=y 5330960b676SJerome Forissier - name: SPMC_AT_EL=1 5340960b676SJerome Forissier make_commands: | 5350960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=1 CFG_SECURE_PARTITION=y CFG_SPMC_TESTS=y 5360960b676SJerome Forissier - name: SPMC_AT_EL=2 5370960b676SJerome Forissier make_commands: | 5380960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=2 5390960b676SJerome Forissier - name: SPMC_AT_EL=3 5400960b676SJerome Forissier make_commands: | 5410960b676SJerome Forissier make -j$(nproc) check SPMC_AT_EL=3 542c20ea3e2SJerome Forissier - name: ULIBS_SHARED=y 543c20ea3e2SJerome Forissier make_commands: | 544c20ea3e2SJerome Forissier make -j$(nproc) check CFG_ULIBS_SHARED=y 5450960b676SJerome Forissier - name: Xen 5460960b676SJerome Forissier make_commands: | 5470960b676SJerome Forissier make -j$(nproc) check XEN_BOOT=y 5480960b676SJerome Forissier - name: Xen + SPMC_AT_EL=1 5490960b676SJerome Forissier make_commands: | 5500960b676SJerome Forissier make -j$(nproc) check XEN_BOOT=y SPMC_AT_EL=1 551bb7ce54eSJerome Forissier steps: 552bb7ce54eSJerome Forissier - name: Checkout 553bb7ce54eSJerome Forissier uses: actions/checkout@v4 554bb7ce54eSJerome Forissier - name: Update Git config 5550960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 556*2b5019c8SJerome Forissier - name: Download Docker image 557*2b5019c8SJerome Forissier uses: actions/download-artifact@v4 558*2b5019c8SJerome Forissier with: 559*2b5019c8SJerome Forissier name: qemuv8_image 560*2b5019c8SJerome Forissier path: . 561*2b5019c8SJerome Forissier - name: Load Docker image 562*2b5019c8SJerome Forissier run: | 563*2b5019c8SJerome Forissier zstd -d qemuv8_image.tar.zst -c | docker load 5640960b676SJerome Forissier - name: Generate cache key 565bb7ce54eSJerome Forissier run: | 5660960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 5670960b676SJerome Forissier echo "CACHE_KEY=qemuv8_check-cache-${HASH}-${GITHUB_SHA}" >> $GITHUB_ENV 5680960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv8_check-cache-${HASH}" >> ${GITHUB_ENV} 5690960b676SJerome Forissier - name: Restore build cache 5700960b676SJerome Forissier uses: actions/cache@v4 5710960b676SJerome Forissier with: 5720960b676SJerome Forissier path: /home/runner/work/ccache 5730960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 5740960b676SJerome Forissier restore-keys: | 5750960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 5760960b676SJerome Forissier - name: Host setup 5770960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 5780960b676SJerome Forissier - name: Run 'make check' tasks in container 5790960b676SJerome Forissier env: 5800960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 5810960b676SJerome Forissier run: | 5820960b676SJerome Forissier docker run --rm \ 5830960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 5840960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 5850960b676SJerome Forissier -w /root \ 5860960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 587*2b5019c8SJerome Forissier qemuv8_image \ 5880960b676SJerome Forissier bash -c ' 589bb7ce54eSJerome Forissier set -e -v 5900960b676SJerome Forissier 5910960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 5920960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 5935484d3b3SJens Wiklander export CFG_TEE_CORE_LOG_LEVEL=2 594bb7ce54eSJerome Forissier export CFG_ATTESTATION_PTA=y 595bb7ce54eSJerome Forissier export CFG_ATTESTATION_PTA_KEY_SIZE=1024 596bb7ce54eSJerome Forissier 5970960b676SJerome Forissier TOP=/root/optee_repo_qemu_v8 598*2b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 599*2b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 600*2b5019c8SJerome Forissier cd $TOP/build 6010960b676SJerome Forissier 6020960b676SJerome Forissier ccache -s -v 6030960b676SJerome Forissier eval "$MAKE_COMMANDS" 6040960b676SJerome Forissier ccache -s -v 6050960b676SJerome Forissier ' 606*2b5019c8SJerome Forissier QEMUv8_arm64_image_build: 607*2b5019c8SJerome Forissier name: Build QEMUv8 arm64 image 608*2b5019c8SJerome Forissier runs-on: ubuntu-24.04-arm 609*2b5019c8SJerome Forissier steps: 610*2b5019c8SJerome Forissier - uses: actions/checkout@v4 611*2b5019c8SJerome Forissier - name: Create Dockerfile 612*2b5019c8SJerome Forissier run: | 613*2b5019c8SJerome Forissier cat > Dockerfile <<'EOF' 614*2b5019c8SJerome Forissier FROM jforissier/optee_os_ci:qemu_check_arm64 615*2b5019c8SJerome Forissier RUN /root/get_optee.sh qemu_v8 /root/optee_repo_qemu_v8 616*2b5019c8SJerome Forissier EOF 617*2b5019c8SJerome Forissier - name: Build Docker image 618*2b5019c8SJerome Forissier run: | 619*2b5019c8SJerome Forissier docker build -t qemuv8_arm64_image . 620*2b5019c8SJerome Forissier docker save qemuv8_arm64_image | zstd -T0 -o qemuv8_arm64_image.tar.zst 621*2b5019c8SJerome Forissier - name: Upload Docker image 622*2b5019c8SJerome Forissier uses: actions/upload-artifact@v4 623*2b5019c8SJerome Forissier with: 624*2b5019c8SJerome Forissier name: qemuv8_arm64_image 625*2b5019c8SJerome Forissier path: qemuv8_arm64_image.tar.zst 626*2b5019c8SJerome Forissier retention-days: 5 6270960b676SJerome Forissier QEMUv8_checks_arm64: 6280960b676SJerome Forissier name: Run (QEMUv8 on arm64) (${{ matrix.name }}) 629*2b5019c8SJerome Forissier needs: QEMUv8_arm64_image_build 6300960b676SJerome Forissier runs-on: ubuntu-24.04-arm 6310960b676SJerome Forissier strategy: 6320960b676SJerome Forissier fail-fast: false 6330960b676SJerome Forissier matrix: 6340960b676SJerome Forissier include: 635c20ea3e2SJerome Forissier - name: CFG_CORE_UNSAFE_MODEXP=y 6360960b676SJerome Forissier make_commands: | 637bb7ce54eSJerome Forissier # CFG_CORE_UNSAFE_MODEXP=y to speed up regression_4011 638bb7ce54eSJerome Forissier make -j$(nproc) check CFG_CORE_UNSAFE_MODEXP=y 6390960b676SJerome Forissier steps: 6400960b676SJerome Forissier - name: Checkout 6410960b676SJerome Forissier uses: actions/checkout@v4 6420960b676SJerome Forissier - name: Update Git config 6430960b676SJerome Forissier run: git config --global --add safe.directory /home/runner/work/optee_os/optee_os 644*2b5019c8SJerome Forissier - name: Download Docker image 645*2b5019c8SJerome Forissier uses: actions/download-artifact@v4 646*2b5019c8SJerome Forissier with: 647*2b5019c8SJerome Forissier name: qemuv8_arm64_image 648*2b5019c8SJerome Forissier path: . 649*2b5019c8SJerome Forissier - name: Load Docker image 650*2b5019c8SJerome Forissier run: | 651*2b5019c8SJerome Forissier zstd -d qemuv8_arm64_image.tar.zst -c | docker load 6520960b676SJerome Forissier - name: Generate cache key 6530960b676SJerome Forissier run: | 6540960b676SJerome Forissier HASH=$(echo -n "${{ matrix.name }}" | sha256sum | cut -c1-16) 6550960b676SJerome Forissier echo "CACHE_KEY=qemuv8_arm64_check-cache-${HASH}-${GITHUB_SHA}" >> ${GITHUB_ENV} 6560960b676SJerome Forissier echo "CACHE_RESTORE_KEY=qemuv8_arm64_check-cache-${HASH}" >> ${GITHUB_ENV} 6570960b676SJerome Forissier - name: Restore build cache 6580960b676SJerome Forissier uses: actions/cache@v4 6590960b676SJerome Forissier with: 6600960b676SJerome Forissier path: /home/runner/work/ccache 6610960b676SJerome Forissier key: ${{ env.CACHE_KEY }} 6620960b676SJerome Forissier restore-keys: | 6630960b676SJerome Forissier ${{ env.CACHE_RESTORE_KEY }} 6640960b676SJerome Forissier - name: Host setup 6650960b676SJerome Forissier run: bash /home/runner/work/optee_os/optee_os/scripts/ci-host-cleanup.sh 6660960b676SJerome Forissier - name: Run 'make check' tasks in container 6670960b676SJerome Forissier env: 6680960b676SJerome Forissier MAKE_COMMANDS: "${{ matrix.make_commands }}" 6690960b676SJerome Forissier run: | 6700960b676SJerome Forissier docker run --rm \ 6710960b676SJerome Forissier -v /home/runner/work/optee_os/optee_os:/runner/optee_os \ 6720960b676SJerome Forissier -v /home/runner/work/ccache:/root/.cache/ccache \ 6730960b676SJerome Forissier -w /root \ 6740960b676SJerome Forissier -e MAKE_COMMANDS="$MAKE_COMMANDS" \ 675*2b5019c8SJerome Forissier qemuv8_arm64_image \ 6760960b676SJerome Forissier bash -c ' 6770960b676SJerome Forissier set -e -v 6780960b676SJerome Forissier 6790960b676SJerome Forissier export BR2_CCACHE_DIR=/root/.cache/ccache 6800960b676SJerome Forissier export FORCE_UNSAFE_CONFIGURE=1 6810960b676SJerome Forissier export CFG_TEE_CORE_LOG_LEVEL=2 6820960b676SJerome Forissier export CFG_ATTESTATION_PTA=y 6830960b676SJerome Forissier export CFG_ATTESTATION_PTA_KEY_SIZE=1024 6840960b676SJerome Forissier 6850960b676SJerome Forissier TOP=/root/optee_repo_qemu_v8 686*2b5019c8SJerome Forissier mv $TOP/optee_os $TOP/optee_os_old 687*2b5019c8SJerome Forissier ln -s /runner/optee_os $TOP/optee_os 688*2b5019c8SJerome Forissier cd $TOP/build 6890960b676SJerome Forissier 6900960b676SJerome Forissier ccache -s -v 6910960b676SJerome Forissier eval "$MAKE_COMMANDS" 6920960b676SJerome Forissier ccache -s -v 6930960b676SJerome Forissier ' 694