TF-A is built with command line options to include the SPMD (FF-A Secure Partition Manager Dispatcher) into the BL31 image. Additional options are provided to support SPMC running at EL3. PIE and RESET_TO_BL31 options are used as test configurations don't assume BL1/BL2 bootloaders usage.
Pick patches [1] and [2]
[1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/19740 [2] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/20259/1
$ make CROSS_COMPILE=aarch64-none-elf- PLAT=fvp SPD=spmd \ ARM_SPMC_MANIFEST_DTS=plat/arm/board/fvp/fdts/fvp_tsp_sp_manifest.dts \ SPMC_AT_EL3=1 SPMD_SPM_AT_SEL2=0 PRELOADED_BL33_BASE=0x80000000 \ ARM_LINUX_KERNEL_AS_BL33=1 ARM_PRELOADED_DTB_BASE=0x82000000 \ FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts RESET_TO_BL31=1 \ BRANCH_PROTECTION=1 CTX_INCLUDE_PAUTH_REGS=1 ARM_ARCH_MINOR=5 \ ENABLE_PIE=1 V=1 DEBUG=1 all fip -j8 $ cp build/fvp/debug/bl31.bin ../hafnium/prebuilts/linux-aarch64/trusted-firmware-a-el3-spmc/bl31.bin $ cp build/fvp/debug/bl32.bin ../hafnium/prebuilts/linux-aarch64/trusted-firmware-a-el3-spmc/bl32.bin $ cp build/fvp/debug/fdts/fvp_tsp_sp_manifest.dtb \ ../hafnium/prebuilts/linux-aarch64/trusted-firmware-a-el3-spmc/fdts/fvp_tsp_sp_manifest.dtb