diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2017-10-03 10:13:23 +0000 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2017-10-03 11:21:28 +0100 |
commit | 4305520b5e8d505da683162e18c5ada7589b2dad (patch) | |
tree | 6dc35e3429df2f141a00e3b4be5dfe7f609fce8b | |
parent | e8d4b6aaf55d95fef0c244887d0ca06d8b500679 (diff) | |
download | kvm-ws-tests-4305520b5e8d505da683162e18c5ada7589b2dad.tar.gz |
Add memory faulting tests
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-rw-r--r-- | Makefile | 16 | ||||
-rw-r--r-- | do_fault_read.S | 44 | ||||
-rw-r--r-- | do_fault_read_write.S | 45 | ||||
-rw-r--r-- | do_fault_write.S | 45 |
4 files changed, 145 insertions, 5 deletions
@@ -1,5 +1,8 @@ -BINS := do_hvc.bin do_sgi.bin do_sysreg.bin do_fp_hvc.bin +LOOP_BINS := do_hvc.bin do_sgi.bin do_sysreg.bin do_fp_hvc.bin +MEMORY_BINS := do_fault_read.bin do_fault_write.bin do_fault_read_write.bin + +BINS := $(LOOP_BINS) $(MEMORY_BINS) PERF := perf LKVM := lkvm @@ -13,12 +16,15 @@ all: $(BINS) clean: rm -f $(BINS) -.PHONY: tests-gicv2 tests-gicv3 +.PHONY: tests-gicv2 tests-gicv3 tests-memory tests-gicv2: - @echo GICv2:; for i in $(BINS); do echo -n $$i: ; LANG='C' taskset -c 1 $(PERF) stat -e cycles:hk $(LKVM) run -c1 --kernel $$i --irqchip=gicv2 $(LKVM_ARGS) 2>&1 >/dev/null| grep cycles | awk '{print $$1 / 2^20}'; done + @echo GICv2:; for i in $(LOOP_BINS); do echo -n $$i: ; LANG='C' taskset -c 1 $(PERF) stat -e cycles:hk $(LKVM) run -c1 --kernel $$i --irqchip=gicv2 $(LKVM_ARGS) 2>&1 >/dev/null| grep cycles | awk '{print $$1 / 2^20}'; done tests-gicv3: - @echo GICv3:; for i in $(BINS); do echo -n $$i: ; LANG='C' taskset -c 1 $(PERF) stat -e cycles:hk $(LKVM) run -c1 --kernel $$i --irqchip=gicv3 2>&1 >/dev/null | grep cycles | awk '{print $$1 / 2^20}'; done + @echo GICv3:; for i in $(LOOP_BINS); do echo -n $$i: ; LANG='C' taskset -c 1 $(PERF) stat -e cycles:hk $(LKVM) run -c1 --kernel $$i --irqchip=gicv3 2>&1 >/dev/null | grep cycles | awk '{print $$1 / 2^20}'; done + +tests-memory: + @echo Memory:; for i in $(MEMORY_BINS); do echo -n $$i: ; LANG='C' taskset -c 1 $(PERF) stat -e cycles:hk $(LKVM) run -c1 --kernel $$i -m 1024 2>&1 >/dev/null | grep elapsed; done -tests: $(BINS) tests-gicv2 tests-gicv3 +tests: $(BINS) tests-gicv2 tests-gicv3 tests-memory diff --git a/do_fault_read.S b/do_fault_read.S new file mode 100644 index 0000000..9c6ce9a --- /dev/null +++ b/do_fault_read.S @@ -0,0 +1,44 @@ + +.macro ventry label + .align 7 + b \label +.endm + + adr x0, vectors + msr vbar_el1, x0 + isb + + adr x0, ram +1: ldr x3, [x0] + mov x30, x0 + add x0, x0, #4096 + tst x0, #(1 << 30) // 1GB + b.eq 1b + +die: + mov x0, #0x84000000 + add x0, x0, #9 + hvc #0 + b . + + .align 11 +vectors: + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + + .align 12 +ram: diff --git a/do_fault_read_write.S b/do_fault_read_write.S new file mode 100644 index 0000000..c1d8fc7 --- /dev/null +++ b/do_fault_read_write.S @@ -0,0 +1,45 @@ + +.macro ventry label + .align 7 + b \label +.endm + + adr x0, vectors + msr vbar_el1, x0 + isb + + adr x0, ram +1: ldr x3, [x0] + mov x30, x0 + str x3, [x0] + add x0, x0, #4096 + tst x0, #(1 << 30) // 1GB + b.eq 1b + +die: + mov x0, #0x84000000 + add x0, x0, #9 + hvc #0 + b . + + .align 11 +vectors: + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + + .align 12 +ram: diff --git a/do_fault_write.S b/do_fault_write.S new file mode 100644 index 0000000..fa53a94 --- /dev/null +++ b/do_fault_write.S @@ -0,0 +1,45 @@ + +.macro ventry label + .align 7 + b \label +.endm + + adr x0, vectors + msr vbar_el1, x0 + isb + + adr x0, ram + mov x3, #1234 +1: str x3, [x0] + mov x30, x0 + add x0, x0, #4096 + tst x0, #(1 << 30) // 1GB + b.eq 1b + +die: + mov x0, #0x84000000 + add x0, x0, #9 + hvc #0 + b . + + .align 11 +vectors: + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + ventry die + + .align 12 +ram: |