Re: [PATCH v14 13/15] selftests/powerpc: Add ptrace tests for TM SPR registers
From: Cyril Bur <hidden>
Date: 2016-09-14 05:04:24
Also in:
lkml
On Mon, 2016-09-12 at 15:33 +0800, wei.guo.simon@gmail.com wrote:
From: Anshuman Khandual <redacted> This patch adds ptrace interface test for TM SPR registers. This also adds ptrace interface based helper functions related to TM SPR registers access.
I'm seeing this one fail a lot, it does occasionally succeed but fails a lot on my test setup. I use qemu on a power8 for most of my testing: qemu-system-ppc64 --enable-kvm -machine pseries,accel=kvm,usb=off -m 4096 -realtime mlock=off -smp 4,sockets=1,cores=2,threads=2 -nographic -vga none
quoted hunk ↗ jump to hunk
Signed-off-by: Anshuman Khandual <redacted> Signed-off-by: Simon Guo <redacted> --- tools/testing/selftests/powerpc/ptrace/Makefile | 3 +- .../selftests/powerpc/ptrace/ptrace-tm-spr.c | 186 +++++++++++++++++++++ tools/testing/selftests/powerpc/ptrace/ptrace.h | 35 ++++ 3 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm- spr.cdiff --git a/tools/testing/selftests/powerpc/ptrace/Makefileb/tools/testing/selftests/powerpc/ptrace/Makefile index 797840a..f34670e 100644--- a/tools/testing/selftests/powerpc/ptrace/Makefile +++ b/tools/testing/selftests/powerpc/ptrace/Makefile@@ -1,7 +1,8 @@TEST_PROGS := ptrace-ebb ptrace-gpr ptrace-tm-gpr ptrace-tm-spd-gpr \ ptrace-tar ptrace-tm-tar ptrace-tm-spd-tar ptrace-vsx ptrace-tm-vsx \ -ptrace-tm-spd-vsx +ptrace-tm-spd-vsx ptrace-tm-spr +include ../../lib.mk all: $(TEST_PROGS) CFLAGS += -m64diff --git a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spr.cb/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spr.c new file mode 100644 index 0000000..2863070--- /dev/null +++ b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spr.c@@ -0,0 +1,186 @@ +/* + * Ptrace test TM SPR registers + * + * Copyright (C) 2015 Anshuman Khandual, IBM Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + */ +#include "ptrace.h" + +/* Tracee and tracer shared data */ +struct shared { + int flag; + struct tm_spr_regs regs; +}; +unsigned long tfhar; + +int shm_id; +volatile struct shared *cptr, *pptr; + +int shm_id1; +volatile int *cptr1, *pptr1; + +#define TM_SCHED 0xde0000018c000001 +#define TM_KVM_SCHED 0xe0000001ac000001 + +int validate_tm_spr(struct tm_spr_regs *regs) +{ + if (regs->tm_tfhar != tfhar) + return TEST_FAIL; + + if ((regs->tm_texasr != TM_SCHED) && (regs->tm_texasr !=TM_KVM_SCHED)) + return TEST_FAIL;
The above condition fails, should this test try again if this condition is true, rather than fail?
+ + if ((regs->tm_texasr == TM_KVM_SCHED) && (regs->tm_tfiar != 0)) + return TEST_FAIL; + + return TEST_PASS; +} +
[snip]