test(ivy): S-EL0 partition using VHE
Starting from [1], Cactus remains the sample S-EL1 partition.
Ivy remains the sample "S-EL0 partition" either using the shim at S-EL1
(as of today), or leveraging Hafnium VHE (reason for this change).
The same code base is re-used by adding the IVY_SHIM toggle. IVY_SHIM=1
is default using the shim, or 0 to use VHE (and strip the shim out).
Using svc helper from spm/common/aarch64/sp_arch_helpers.S
We must modify generate_json.sh so it only adds the partition
information to the layout file for the sp given in arg1. This allows
the ability for sp's to pass flags to the script such as IVY_SHIM which
is used to vary the dts file included for ivy.
Typical build command for a VHE-enabled Ivy partition:
make CROSS_COMPILE=aarch64-none-elf- PLAT=fvp DEBUG=1 TESTS=spm
ARM_ARCH_MINOR=5 BRANCH_PROTECTION=1 IVY_SHIM=0 ivy -j8
The intent is to create a dedicated tftf_config build config for the
VHE-enabled build in the CI.
[1] https://trustedfirmware-a-tests.readthedocs.io/en/latest/getting_started/build.html#cactus-and-ivy
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
Change-Id: I34125b375b043c61c44ede558802d8ae757bd51f
diff --git a/spm/ivy/ivy.mk b/spm/ivy/ivy.mk
index f58422f..9531f9b 100644
--- a/spm/ivy/ivy.mk
+++ b/spm/ivy/ivy.mk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2018-2021, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2022, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -13,7 +13,13 @@
include ${IVY_PLAT_PATH}/platform.mk
endif
-IVY_DTB := build/${PLAT}/debug/ivy.dtb
+IVY_SHIM := 1
+
+ifeq (${IVY_SHIM},1)
+ IVY_DTB := $(BUILD_PLAT)/ivy-sel1.dtb
+else
+ IVY_DTB := $(BUILD_PLAT)/ivy-sel0.dtb
+endif
IVY_INCLUDES := \
-Itftf/framework/include \
@@ -35,11 +41,6 @@
aarch64/ivy_entrypoint.S \
ivy_main.c \
) \
- $(addprefix spm/ivy/shim/, \
- aarch64/spm_shim_entrypoint.S \
- aarch64/spm_shim_exceptions.S \
- shim_main.c \
- ) \
$(addprefix spm/common/, \
aarch64/sp_arch_helpers.S \
sp_debug.c \
@@ -47,6 +48,15 @@
spm_helpers.c \
) \
+ifeq ($(IVY_SHIM),1)
+IVY_SOURCES += \
+ $(addprefix spm/ivy/shim/, \
+ aarch64/spm_shim_entrypoint.S \
+ aarch64/spm_shim_exceptions.S \
+ shim_main.c \
+ )
+endif
+
# TODO: Remove dependency on TFTF files.
IVY_SOURCES += \
tftf/framework/debug.c \
@@ -75,14 +85,15 @@
$(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH))
$(eval $(call add_define,IVY_DEFINES,LOG_LEVEL))
$(eval $(call add_define,IVY_DEFINES,PLAT_${PLAT}))
+$(eval $(call add_define,IVY_DEFINES,IVY_SHIM))
$(IVY_DTB) : $(BUILD_PLAT)/ivy $(BUILD_PLAT)/ivy/ivy.elf
$(IVY_DTB) : $(IVY_DTS)
@echo " DTBGEN $@"
${Q}tools/generate_dtb/generate_dtb.sh \
- ivy ${IVY_DTS} $(BUILD_PLAT)
+ ivy ${IVY_DTS} $(BUILD_PLAT) $(IVY_DTB)
${Q}tools/generate_json/generate_json.sh \
- ivy $(BUILD_PLAT)
+ ivy $(BUILD_PLAT) $(IVY_SHIM)
@echo
@echo "Built $@ successfully"
@echo