From 27edfc78b588e742a425ac92da9f8ac5647b7f97 Mon Sep 17 00:00:00 2001 From: Igor Opaniuk <igor.opaniuk@linaro.org> Date: Tue, 25 Oct 2016 18:33:54 +0300 Subject: [PATCH] OP-TEE Benchmark Enable Benchmark feature Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org> --- common.mk | 43 ++++++++++++++++++++++++++++++++++------- kconfigs/tee_bench.conf | 1 + qemu.mk | 11 +++++++++-- 3 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 kconfigs/tee_bench.conf diff --git a/common.mk b/common.mk index 8d08228..062b6b9 100644 --- a/common.mk +++ b/common.mk @@ -15,12 +15,16 @@ OPTEE_OS_PATH ?= $(ROOT)/optee_os OPTEE_CLIENT_PATH ?= $(ROOT)/optee_client OPTEE_CLIENT_EXPORT ?= $(OPTEE_CLIENT_PATH)/out/export OPTEE_TEST_PATH ?= $(ROOT)/optee_test -OPTEE_TEST_OUT_PATH ?= $(ROOT)/optee_test/out +OPTEE_TEST_OUT_PATH ?= $(ROOT)/optee_test/out HELLOWORLD_PATH ?= $(ROOT)/hello_world +BENCHMARK_APP_PATH ?= $(ROOT)/optee_benchmark # default high verbosity. slow uarts shall specify lower if prefered CFG_TEE_CORE_LOG_LEVEL ?= 3 +# default disable latency benchmarks (over all OP-TEE layers) +CFG_TEE_BENCHMARK ?= n + CCACHE ?= $(shell which ccache) # Don't remove this comment (space is needed) # Accessing a shared folder on the host from QEMU: @@ -145,6 +149,10 @@ busybox-cleaner-common: ################################################################################ # Linux ################################################################################ +ifeq ($(CFG_TEE_BENCHMARK),y) +LINUX_DEFCONFIG_BENCH ?= $(CURDIR)/kconfigs/tee_bench.conf +endif + LINUX_COMMON_FLAGS ?= LOCALVERSION= CROSS_COMPILE=$(CROSS_COMPILE_NS_KERNEL) linux-common: linux-defconfig @@ -153,7 +161,8 @@ linux-common: linux-defconfig $(LINUX_PATH)/.config: $(LINUX_DEFCONFIG_COMMON_FILES) cd $(LINUX_PATH) && \ ARCH=$(LINUX_DEFCONFIG_COMMON_ARCH) \ - scripts/kconfig/merge_config.sh $(LINUX_DEFCONFIG_COMMON_FILES) + scripts/kconfig/merge_config.sh $(LINUX_DEFCONFIG_COMMON_FILES) \ + $(LINUX_DEFCONFIG_BENCH) linux-defconfig-clean-common: rm -f $(LINUX_PATH)/.config @@ -250,17 +259,19 @@ OPTEE_OS_COMMON_FLAGS ?= \ CROSS_COMPILE_ta_arm64=$(AARCH64_CROSS_COMPILE) \ CROSS_COMPILE_ta_arm32=$(AARCH32_CROSS_COMPILE) \ CFG_TEE_CORE_LOG_LEVEL=$(CFG_TEE_CORE_LOG_LEVEL) \ - DEBUG=$(DEBUG) + DEBUG=$(DEBUG) \ + CFG_TEE_BENCHMARK=$(CFG_TEE_BENCHMARK) optee-os-common: $(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_COMMON_FLAGS) OPTEE_OS_CLEAN_COMMON_FLAGS ?= $(OPTEE_OS_COMMON_EXTRA_FLAGS) -optee-os-clean-common: xtest-clean helloworld-clean +optee-os-clean-common: xtest-clean helloworld-clean benchmark-app-clean-common $(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_CLEAN_COMMON_FLAGS) clean -OPTEE_CLIENT_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) +OPTEE_CLIENT_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \ + CFG_TEE_BENCHMARK=$(CFG_TEE_BENCHMARK) \ optee-client-common: $(MAKE) -C $(OPTEE_CLIENT_PATH) $(OPTEE_CLIENT_COMMON_FLAGS) @@ -280,7 +291,8 @@ XTEST_COMMON_FLAGS ?= CROSS_COMPILE_HOST=$(CROSS_COMPILE_NS_USER)\ TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) \ OPTEE_CLIENT_EXPORT=$(OPTEE_CLIENT_EXPORT) \ COMPILE_NS_USER=$(COMPILE_NS_USER) \ - O=$(OPTEE_TEST_OUT_PATH) + O=$(OPTEE_TEST_OUT_PATH) \ + CFG_TEE_BENCHMARK=$(CFG_TEE_BENCHMARK) xtest-common: optee-os optee-client $(MAKE) -C $(OPTEE_TEST_PATH) $(XTEST_COMMON_FLAGS) @@ -312,6 +324,19 @@ HELLOWORLD_CLEAN_COMMON_FLAGS ?= TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) helloworld-clean-common: $(MAKE) -C $(HELLOWORLD_PATH) $(HELLOWORLD_CLEAN_COMMON_FLAGS) clean +################################################################################ +# benchmark_app +################################################################################ +BENCHMARK_APP_COMMON_FLAGS ?= HOST_CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \ + TEEC_EXPORT=$(OPTEE_CLIENT_EXPORT) \ + TEEC_INTERNAL_INCLUDES=$(OPTEE_CLIENT_PATH)/libteec + +benchmark-app-common: optee-os optee-client + $(MAKE) -C $(BENCHMARK_APP_PATH) $(BENCHMARK_APP_COMMON_FLAGS) + +benchmark-app-clean-common: + $(MAKE) -C $(BENCHMARK_APP_PATH) clean + ################################################################################ # rootfs ################################################################################ @@ -329,7 +354,7 @@ update_rootfs-clean-common: rm -f $(GEN_ROOTFS_FILELIST) filelist-tee-common: fl:=$(GEN_ROOTFS_FILELIST) -filelist-tee-common: optee-client xtest helloworld +filelist-tee-common: optee-client xtest helloworld benchmark-app @echo "# filelist-tee-common /start" > $(fl) @echo "dir /lib/optee_armtz 755 0 0" >> $(fl) @echo "# xtest / optee_test" >> $(fl) @@ -345,6 +370,10 @@ filelist-tee-common: optee-client xtest helloworld "$(HELLOWORLD_PATH)/ta/8aaaf200-2450-11e4-abe2-0002a5d5c51b.ta" \ "444 0 0" >> $(fl); \ fi + @if [ -e $(BENCHMARK_APP_PATH)/benchmark ]; then \ + echo "file /bin/benchmark" \ + "$(BENCHMARK_APP_PATH)/benchmark 755 0 0" >> $(fl); \ + fi @if [ "$(QEMU_USERNET_ENABLE)" = "y" ]; then \ echo "slink /etc/rc.d/S02_udhcp_networking /etc/init.d/udhcpc 755 0 0" \ >> $(fl); \ diff --git a/kconfigs/tee_bench.conf b/kconfigs/tee_bench.conf new file mode 100644 index 0000000..cf6cba9 --- /dev/null +++ b/kconfigs/tee_bench.conf @@ -0,0 +1 @@ +CONFIG_OPTEE_BENCHMARK=y diff --git a/qemu.mk b/qemu.mk index 4995161..ad80872 100644 --- a/qemu.mk +++ b/qemu.mk @@ -23,9 +23,9 @@ DEBUG = 1 ################################################################################ # Targets ################################################################################ -all: bios-qemu qemu soc-term +all: bios-qemu qemu soc-term benchmark-app clean: bios-qemu-clean busybox-clean linux-clean optee-os-clean \ - optee-client-clean qemu-clean soc-term-clean check-clean + optee-client-clean qemu-clean soc-term-clean check-clean benchmark-app-clean -include toolchain.mk @@ -130,6 +130,13 @@ helloworld: helloworld-common helloworld-clean: helloworld-clean-common +################################################################################ +# benchmark +################################################################################ +benchmark-app: benchmark-app-common + +benchmark-app-clean: benchmark-app-clean-common + ################################################################################ # Root FS ################################################################################ -- GitLab