qemu_v8: Introducing MEMTAG option
Introduces the option MEMTAG which enabled tagging of memory using the
ARM Memory Tagging Extension (MTE).
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/qemu_v8.mk b/qemu_v8.mk
index c98e460..5df045c 100644
--- a/qemu_v8.mk
+++ b/qemu_v8.mk
@@ -53,6 +53,9 @@
# Option to configure Pointer Authentication for TA's
PAUTH ?= n
+# Option to configure Memory Tagging Extension
+MEMTAG ?= n
+
################################################################################
# Paths to git projects and various binaries
################################################################################
@@ -186,6 +189,9 @@
ifeq ($(PAUTH),y)
TF_A_FLAGS += CTX_INCLUDE_PAUTH_REGS=1
endif
+ifeq ($(MEMTAG),y)
+TF_A_FLAGS += CTX_INCLUDE_MTE_REGS=1
+endif
arm-tf: optee-os $(BL33_DEPS)
$(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip
@@ -326,6 +332,9 @@
ifeq ($(PAUTH),y)
OPTEE_OS_COMMON_FLAGS += CFG_TA_PAUTH=y
endif
+ifeq ($(MEMTAG),y)
+OPTEE_OS_COMMON_FLAGS += CFG_MEMTAG=y
+endif
OPTEE_OS_COMMON_FLAGS += $(OPTEE_OS_COMMON_FLAGS_SPMC_AT_EL_$(SPMC_AT_EL))
@@ -429,6 +438,12 @@
QEMU_VIRT = false
endif
+ifeq ($(MEMTAG),y)
+QEMU_MTE = on
+else
+QEMU_MTE = off
+endif
+
.PHONY: run-only
run-only:
ln -sf $(ROOT)/out-br/images/rootfs.cpio.gz $(BINARIES_PATH)/
@@ -441,7 +456,7 @@
-nographic \
-serial tcp:localhost:54320 -serial tcp:localhost:54321 \
-smp $(QEMU_SMP) \
- -s -S -machine virt,secure=on,gic-version=$(QEMU_GIC_VERSION),virtualization=$(QEMU_VIRT) \
+ -s -S -machine virt,secure=on,mte=$(QEMU_MTE),gic-version=$(QEMU_GIC_VERSION),virtualization=$(QEMU_VIRT) \
-cpu $(QEMU_CPU) \
-d unimp -semihosting-config enable=on,target=native \
-m $(QEMU_MEM) \
@@ -468,6 +483,7 @@
cd $(BINARIES_PATH) && \
export QEMU=$(QEMU_BUILD)/aarch64-softmmu/qemu-system-aarch64 && \
export QEMU_SMP=$(QEMU_SMP) && \
+ export QEMU_MTE=$(QEMU_MTE) && \
export QEMU_GIC=$(QEMU_GIC_VERSION) && \
export QEMU_MEM=$(QEMU_MEM) && \
export QEMU_CPU=$(QEMU_CPU) && \
@@ -489,6 +505,7 @@
cd $(BINARIES_PATH) && \
export QEMU=$(QEMU_BUILD)/aarch64-softmmu/qemu-system-aarch64 && \
export QEMU_SMP=$(QEMU_SMP) && \
+ export QEMU_MTE=$(QEMU_MTE) && \
export QEMU_GIC=$(QEMU_GIC_VERSION) && \
export QEMU_MEM=$(QEMU_MEM) && \
expect $(ROOT)/optee_rust/ci/qemu-check.exp -- $(check-args) || \