All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api
@ 2017-06-29 23:18 Shuah Khan
  2017-06-29 23:18 ` [PATCH 1/4] selftests: breakpoint_test: use ksft_* " Shuah Khan
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Shuah Khan @ 2017-06-29 23:18 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, paul.elder, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

This patch series converts breakpoint_test_arm64 to TAP13 output. Uses
ksft_ var arg msg functions as needed. Changed to ensure parent is the
one that increments test counters.

breakpoint_test, step_after_suspend_test, membarrier tests are changed
to use ksft_ var arg msg functions as needed.

This patch series depends on Paul Elder's

[PATCH v2 0/2] kselftest: make ksft_* output functions variadic
The v2 series doesn't append newline and makes it easier to use.

Shuah Khan (4):
  selftests: breakpoint_test: use ksft_* var arg msg api
  selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg
    api
  selftests: breakpoints: breakpoint_test_arm64: convert test to use
    TAP13
  selftests: membarrier: use ksft_* var arg msg api

 .../selftests/breakpoints/breakpoint_test.c        | 28 ++++---
 .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
 .../breakpoints/step_after_suspend_test.c          | 59 ++++++++------
 .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++-----------
 4 files changed, 148 insertions(+), 124 deletions(-)

-- 
2.11.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/4] selftests: breakpoint_test: use ksft_* var arg msg api
  2017-06-29 23:18 [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api Shuah Khan
@ 2017-06-29 23:18 ` Shuah Khan
  2017-06-29 23:18 ` [PATCH 2/4] selftests: breakpoints: step_after_suspend_test " Shuah Khan
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Shuah Khan @ 2017-06-29 23:18 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, paul.elder, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

Use ksft_* var arg msg to include strerror() info. in test output. Change
output from child process to use ksft_print_msg() instead of ksft_exit_*
to avoid double counting tests and ensure parent does the incrementing
test counters. Also includes unused variable cleanup.

Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
---
 .../selftests/breakpoints/breakpoint_test.c        | 28 ++++++++++++----------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/tools/testing/selftests/breakpoints/breakpoint_test.c b/tools/testing/selftests/breakpoints/breakpoint_test.c
index c02fc9a0e228..f63356151ad4 100644
--- a/tools/testing/selftests/breakpoints/breakpoint_test.c
+++ b/tools/testing/selftests/breakpoints/breakpoint_test.c
@@ -16,6 +16,8 @@
 #include <signal.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <errno.h>
+#include <string.h>
 
 #include "../kselftest.h"
 
@@ -43,7 +45,8 @@ static void set_breakpoint_addr(void *addr, int n)
 	ret = ptrace(PTRACE_POKEUSER, child_pid,
 		     offsetof(struct user, u_debugreg[n]), addr);
 	if (ret)
-		ksft_exit_fail_msg("Can't set breakpoint addr");
+		ksft_exit_fail_msg("Can't set breakpoint addr: %s\n",
+			strerror(errno));
 }
 
 static void toggle_breakpoint(int n, int type, int len,
@@ -103,8 +106,10 @@ static void toggle_breakpoint(int n, int type, int len,
 
 	ret = ptrace(PTRACE_POKEUSER, child_pid,
 		     offsetof(struct user, u_debugreg[7]), dr7);
-	if (ret)
-		ksft_exit_fail_msg("Can't set dr7");
+	if (ret) {
+		ksft_print_msg("Can't set dr7: %s\n", strerror(errno));
+		exit(-1);
+	}
 }
 
 /* Dummy variables to test read/write accesses */
@@ -202,7 +207,7 @@ static void trigger_tests(void)
 
 	ret = ptrace(PTRACE_TRACEME, 0, NULL, 0);
 	if (ret) {
-		perror("Can't be traced?\n");
+		ksft_print_msg("Can't be traced? %s\n", strerror(errno));
 		return;
 	}
 
@@ -257,7 +262,6 @@ static void trigger_tests(void)
 
 static void check_success(const char *msg)
 {
-	const char *msg2;
 	int child_nr_tests;
 	int status;
 	int ret;
@@ -265,7 +269,6 @@ static void check_success(const char *msg)
 	/* Wait for the child to SIGTRAP */
 	wait(&status);
 
-	msg2 = "Failed";
 	ret = 0;
 
 	if (WSTOPSIG(status) == SIGTRAP) {
@@ -274,7 +277,7 @@ static void check_success(const char *msg)
 		if (child_nr_tests == nr_tests)
 			ret = 1;
 		if (ptrace(PTRACE_POKEDATA, child_pid, &trapped, 1))
-			ksft_exit_fail_msg("Can't poke");
+			ksft_exit_fail_msg("Can't poke: %s\n", strerror(errno));
 	}
 
 	nr_tests++;
@@ -293,7 +296,7 @@ static void launch_instruction_breakpoints(char *buf, int local, int global)
 		set_breakpoint_addr(dummy_funcs[i], i);
 		toggle_breakpoint(i, BP_X, 1, local, global, 1);
 		ptrace(PTRACE_CONT, child_pid, NULL, 0);
-		sprintf(buf, "Test breakpoint %d with local: %d global: %d",
+		sprintf(buf, "Test breakpoint %d with local: %d global: %d\n",
 			i, local, global);
 		check_success(buf);
 		toggle_breakpoint(i, BP_X, 1, local, global, 0);
@@ -315,8 +318,9 @@ static void launch_watchpoints(char *buf, int mode, int len,
 		set_breakpoint_addr(&dummy_var[i], i);
 		toggle_breakpoint(i, mode, len, local, global, 1);
 		ptrace(PTRACE_CONT, child_pid, NULL, 0);
-		sprintf(buf, "Test %s watchpoint %d with len: %d local: "
-			"%d global: %d", mode_str, i, len, local, global);
+		sprintf(buf,
+			"Test %s watchpoint %d with len: %d local: %d global: %d\n",
+			mode_str, i, len, local, global);
 		check_success(buf);
 		toggle_breakpoint(i, mode, len, local, global, 0);
 	}
@@ -382,7 +386,7 @@ int main(int argc, char **argv)
 	pid = fork();
 	if (!pid) {
 		trigger_tests();
-		return 0;
+		exit(0);
 	}
 
 	child_pid = pid;
@@ -393,5 +397,5 @@ int main(int argc, char **argv)
 
 	wait(NULL);
 
-	return ksft_exit_pass();
+	ksft_exit_pass();
 }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/4] selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg api
  2017-06-29 23:18 [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api Shuah Khan
  2017-06-29 23:18 ` [PATCH 1/4] selftests: breakpoint_test: use ksft_* " Shuah Khan
@ 2017-06-29 23:18 ` Shuah Khan
  2017-06-29 23:18 ` [PATCH 3/4] selftests: breakpoints: breakpoint_test_arm64: convert test to use TAP13 Shuah Khan
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Shuah Khan @ 2017-06-29 23:18 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, paul.elder, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

Use ksft_* var arg msg to include strerror() info. in test output and
simplify test_result and exit_* using var arg msg api.

Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
---
 .../breakpoints/step_after_suspend_test.c          | 59 ++++++++++++----------
 1 file changed, 33 insertions(+), 26 deletions(-)

diff --git a/tools/testing/selftests/breakpoints/step_after_suspend_test.c b/tools/testing/selftests/breakpoints/step_after_suspend_test.c
index c60c2effb6bc..3fece06e9f64 100644
--- a/tools/testing/selftests/breakpoints/step_after_suspend_test.c
+++ b/tools/testing/selftests/breakpoints/step_after_suspend_test.c
@@ -37,17 +37,19 @@ void child(int cpu)
 	CPU_ZERO(&set);
 	CPU_SET(cpu, &set);
 	if (sched_setaffinity(0, sizeof(set), &set) != 0) {
-		perror("sched_setaffinity() failed");
+		ksft_print_msg("sched_setaffinity() failed: %s\n",
+			strerror(errno));
 		_exit(1);
 	}
 
 	if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) != 0) {
-		perror("ptrace(PTRACE_TRACEME) failed");
+		ksft_print_msg("ptrace(PTRACE_TRACEME) failed: %s\n",
+			strerror(errno));
 		_exit(1);
 	}
 
 	if (raise(SIGSTOP) != 0) {
-		perror("raise(SIGSTOP) failed");
+		ksft_print_msg("raise(SIGSTOP) failed: %s\n", strerror(errno));
 		_exit(1);
 	}
 
@@ -61,7 +63,7 @@ bool run_test(int cpu)
 	pid_t wpid;
 
 	if (pid < 0) {
-		perror("fork() failed");
+		ksft_print_msg("fork() failed: %s\n", strerror(errno));
 		return false;
 	}
 	if (pid == 0)
@@ -69,57 +71,64 @@ bool run_test(int cpu)
 
 	wpid = waitpid(pid, &status, __WALL);
 	if (wpid != pid) {
-		perror("waitpid() failed");
+		ksft_print_msg("waitpid() failed: %s\n", strerror(errno));
 		return false;
 	}
 	if (!WIFSTOPPED(status)) {
-		printf("child did not stop\n");
+		ksft_print_msg("child did not stop: %s\n", strerror(errno));
 		return false;
 	}
 	if (WSTOPSIG(status) != SIGSTOP) {
-		printf("child did not stop with SIGSTOP\n");
+		ksft_print_msg("child did not stop with SIGSTOP: %s\n",
+			strerror(errno));
 		return false;
 	}
 
 	if (ptrace(PTRACE_SINGLESTEP, pid, NULL, NULL) < 0) {
 		if (errno == EIO) {
-			ksft_exit_skip("ptrace(PTRACE_SINGLESTEP) "
-				"not supported on this architecture");
+			ksft_exit_skip(
+				"ptrace(PTRACE_SINGLESTEP) not supported on this architecture: %s\n",
+				strerror(errno));
 		}
-		perror("ptrace(PTRACE_SINGLESTEP) failed");
+		ksft_print_msg("ptrace(PTRACE_SINGLESTEP) failed: %s\n",
+			strerror(errno));
 		return false;
 	}
 
 	wpid = waitpid(pid, &status, __WALL);
 	if (wpid != pid) {
-		perror("waitpid() failed");
+		ksft_print_msg("waitpid() failed: $s\n", strerror(errno));
 		return false;
 	}
 	if (WIFEXITED(status)) {
-		printf("child did not single-step\n");
+		ksft_print_msg("child did not single-step: %s\n",
+			strerror(errno));
 		return false;
 	}
 	if (!WIFSTOPPED(status)) {
-		printf("child did not stop\n");
+		ksft_print_msg("child did not stop: %s\n", strerror(errno));
 		return false;
 	}
 	if (WSTOPSIG(status) != SIGTRAP) {
-		printf("child did not stop with SIGTRAP\n");
+		ksft_print_msg("child did not stop with SIGTRAP: %s\n",
+			strerror(errno));
 		return false;
 	}
 
 	if (ptrace(PTRACE_CONT, pid, NULL, NULL) < 0) {
-		perror("ptrace(PTRACE_CONT) failed");
+		ksft_print_msg("ptrace(PTRACE_CONT) failed: %s\n",
+			strerror(errno));
 		return false;
 	}
 
 	wpid = waitpid(pid, &status, __WALL);
 	if (wpid != pid) {
-		perror("waitpid() failed");
+		ksft_print_msg("waitpid() failed: %s\n", strerror(errno));
 		return false;
 	}
 	if (!WIFEXITED(status)) {
-		printf("child did not exit after PTRACE_CONT\n");
+		ksft_print_msg("child did not exit after PTRACE_CONT: %s\n",
+			strerror(errno));
 		return false;
 	}
 
@@ -137,19 +146,19 @@ void suspend(void)
 	power_state_fd = open("/sys/power/state", O_RDWR);
 	if (power_state_fd < 0)
 		ksft_exit_fail_msg(
-			"open(\"/sys/power/state\") failed (is this test running as root?)");
+			"open(\"/sys/power/state\") failed (is this test running as root?)\n");
 
 	timerfd = timerfd_create(CLOCK_BOOTTIME_ALARM, 0);
 	if (timerfd < 0)
-		ksft_exit_fail_msg("timerfd_create() failed");
+		ksft_exit_fail_msg("timerfd_create() failed\n");
 
 	spec.it_value.tv_sec = 5;
 	err = timerfd_settime(timerfd, 0, &spec, NULL);
 	if (err < 0)
-		ksft_exit_fail_msg("timerfd_settime() failed");
+		ksft_exit_fail_msg("timerfd_settime() failed\n");
 
 	if (write(power_state_fd, "mem", strlen("mem")) != strlen("mem"))
-		ksft_exit_fail_msg("entering suspend failed");
+		ksft_exit_fail_msg("Failed to enter Suspend state\n");
 
 	close(timerfd);
 	close(power_state_fd);
@@ -163,7 +172,6 @@ int main(int argc, char **argv)
 	cpu_set_t available_cpus;
 	int err;
 	int cpu;
-	char buf[10];
 
 	ksft_print_header();
 
@@ -184,7 +192,7 @@ int main(int argc, char **argv)
 
 	err = sched_getaffinity(0, sizeof(available_cpus), &available_cpus);
 	if (err < 0)
-		ksft_exit_fail_msg("sched_getaffinity() failed");
+		ksft_exit_fail_msg("sched_getaffinity() failed\n");
 
 	for (cpu = 0; cpu < CPU_SETSIZE; cpu++) {
 		bool test_success;
@@ -193,11 +201,10 @@ int main(int argc, char **argv)
 			continue;
 
 		test_success = run_test(cpu);
-		sprintf(buf, "CPU %d", cpu);
 		if (test_success) {
-			ksft_test_result_pass(buf);
+			ksft_test_result_pass("CPU %d\n", cpu);
 		} else {
-			ksft_test_result_fail(buf);
+			ksft_test_result_fail("CPU %d\n", cpu);
 			succeeded = false;
 		}
 	}
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/4] selftests: breakpoints: breakpoint_test_arm64: convert test to use TAP13
  2017-06-29 23:18 [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api Shuah Khan
  2017-06-29 23:18 ` [PATCH 1/4] selftests: breakpoint_test: use ksft_* " Shuah Khan
  2017-06-29 23:18 ` [PATCH 2/4] selftests: breakpoints: step_after_suspend_test " Shuah Khan
@ 2017-06-29 23:18 ` Shuah Khan
  2017-06-29 23:18 ` [PATCH 4/4] selftests: membarrier: use ksft_* var arg msg api Shuah Khan
  2017-06-30 16:13 ` [PATCH 0/4] Convert to TAP13 using ksft_ " Paul Elder
  4 siblings, 0 replies; 10+ messages in thread
From: Shuah Khan @ 2017-06-29 23:18 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, paul.elder, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

Convert breakpoint_test_arm64 output to TAP13 format. Use ksft_* var arg
msg api to include strerror() info. in the output. Change output from
child process to use ksft_print_msg() instead of ksft_exit_* to avoid
double counting tests and ensure parent process does the test counter
incrementing.

Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
---
 .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
 1 file changed, 58 insertions(+), 36 deletions(-)

diff --git a/tools/testing/selftests/breakpoints/breakpoint_test_arm64.c b/tools/testing/selftests/breakpoints/breakpoint_test_arm64.c
index fa6d57af5217..960d02100c26 100644
--- a/tools/testing/selftests/breakpoints/breakpoint_test_arm64.c
+++ b/tools/testing/selftests/breakpoints/breakpoint_test_arm64.c
@@ -43,19 +43,25 @@ static void child(int size, int wr)
 	volatile uint8_t *addr = &var[32 + wr];
 
 	if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) != 0) {
-		perror("ptrace(PTRACE_TRACEME) failed");
+		ksft_print_msg(
+			"ptrace(PTRACE_TRACEME) failed: %s\n",
+			strerror(errno));
 		_exit(1);
 	}
 
 	if (raise(SIGSTOP) != 0) {
-		perror("raise(SIGSTOP) failed");
+		ksft_print_msg(
+			"raise(SIGSTOP) failed: %s\n", strerror(errno));
 		_exit(1);
 	}
 
 	if ((uintptr_t) addr % size) {
-		perror("Wrong address write for the given size\n");
+		ksft_print_msg(
+			 "Wrong address write for the given size: %s\n",
+			 strerror(errno));
 		_exit(1);
 	}
+
 	switch (size) {
 	case 1:
 		*addr = 47;
@@ -100,11 +106,14 @@ static bool set_watchpoint(pid_t pid, int size, int wp)
 	if (ptrace(PTRACE_SETREGSET, pid, NT_ARM_HW_WATCH, &iov) == 0)
 		return true;
 
-	if (errno == EIO) {
-		ksft_exit_skip("ptrace(PTRACE_SETREGSET, NT_ARM_HW_WATCH) "
-			"not supported on this hardware\n");
-	}
-	perror("ptrace(PTRACE_SETREGSET, NT_ARM_HW_WATCH) failed");
+	if (errno == EIO)
+		ksft_print_msg(
+			"ptrace(PTRACE_SETREGSET, NT_ARM_HW_WATCH) not supported on this hardware: %s\n",
+			strerror(errno));
+
+	ksft_print_msg(
+		"ptrace(PTRACE_SETREGSET, NT_ARM_HW_WATCH) failed: %s\n",
+		strerror(errno));
 	return false;
 }
 
@@ -116,7 +125,8 @@ static bool run_test(int wr_size, int wp_size, int wr, int wp)
 	pid_t wpid;
 
 	if (pid < 0) {
-		perror("fork() failed");
+		ksft_test_result_fail(
+			"fork() failed: %s\n", strerror(errno));
 		return false;
 	}
 	if (pid == 0)
@@ -124,15 +134,17 @@ static bool run_test(int wr_size, int wp_size, int wr, int wp)
 
 	wpid = waitpid(pid, &status, __WALL);
 	if (wpid != pid) {
-		perror("waitpid() failed");
+		ksft_print_msg(
+			"waitpid() failed: %s\n", strerror(errno));
 		return false;
 	}
 	if (!WIFSTOPPED(status)) {
-		printf("child did not stop\n");
+		ksft_print_msg(
+			"child did not stop: %s\n", strerror(errno));
 		return false;
 	}
 	if (WSTOPSIG(status) != SIGSTOP) {
-		printf("child did not stop with SIGSTOP\n");
+		ksft_print_msg("child did not stop with SIGSTOP\n");
 		return false;
 	}
 
@@ -140,42 +152,49 @@ static bool run_test(int wr_size, int wp_size, int wr, int wp)
 		return false;
 
 	if (ptrace(PTRACE_CONT, pid, NULL, NULL) < 0) {
-		perror("ptrace(PTRACE_SINGLESTEP) failed");
+		ksft_print_msg(
+			"ptrace(PTRACE_SINGLESTEP) failed: %s\n",
+			strerror(errno));
 		return false;
 	}
 
 	alarm(3);
 	wpid = waitpid(pid, &status, __WALL);
 	if (wpid != pid) {
-		perror("waitpid() failed");
+		ksft_print_msg(
+			"waitpid() failed: %s\n", strerror(errno));
 		return false;
 	}
 	alarm(0);
 	if (WIFEXITED(status)) {
-		printf("child did not single-step\t");
+		ksft_print_msg("child did not single-step\n");
 		return false;
 	}
 	if (!WIFSTOPPED(status)) {
-		printf("child did not stop\n");
+		ksft_print_msg("child did not stop\n");
 		return false;
 	}
 	if (WSTOPSIG(status) != SIGTRAP) {
-		printf("child did not stop with SIGTRAP\n");
+		ksft_print_msg("child did not stop with SIGTRAP\n");
 		return false;
 	}
 	if (ptrace(PTRACE_GETSIGINFO, pid, NULL, &siginfo) != 0) {
-		perror("ptrace(PTRACE_GETSIGINFO)");
+		ksft_print_msg(
+			"ptrace(PTRACE_GETSIGINFO): %s\n",
+			strerror(errno));
 		return false;
 	}
 	if (siginfo.si_code != TRAP_HWBKPT) {
-		printf("Unexpected si_code %d\n", siginfo.si_code);
+		ksft_print_msg(
+			"Unexpected si_code %d\n", siginfo.si_code);
 		return false;
 	}
 
 	kill(pid, SIGKILL);
 	wpid = waitpid(pid, &status, 0);
 	if (wpid != pid) {
-		perror("waitpid() failed");
+		ksft_print_msg(
+			"waitpid() failed: %s\n", strerror(errno));
 		return false;
 	}
 	return true;
@@ -193,6 +212,8 @@ int main(int argc, char **argv)
 	int wr, wp, size;
 	bool result;
 
+	ksft_print_header();
+
 	act.sa_handler = sigalrm;
 	sigemptyset(&act.sa_mask);
 	act.sa_flags = 0;
@@ -200,14 +221,16 @@ int main(int argc, char **argv)
 	for (size = 1; size <= 32; size = size*2) {
 		for (wr = 0; wr <= 32; wr = wr + size) {
 			for (wp = wr - size; wp <= wr + size; wp = wp + size) {
-				printf("Test size = %d write offset = %d watchpoint offset = %d\t", size, wr, wp);
 				result = run_test(size, MIN(size, 8), wr, wp);
-				if ((result && wr == wp) || (!result && wr != wp)) {
-					printf("[OK]\n");
-					ksft_inc_pass_cnt();
-				} else {
-					printf("[FAILED]\n");
-					ksft_inc_fail_cnt();
+				if ((result && wr == wp) ||
+				    (!result && wr != wp))
+					ksft_test_result_pass(
+						"Test size = %d write offset = %d watchpoint offset = %d\n",
+						size, wr, wp);
+				else {
+					ksft_test_result_fail(
+						"Test size = %d write offset = %d watchpoint offset = %d\n",
+						size, wr, wp);
 					succeeded = false;
 				}
 			}
@@ -215,19 +238,18 @@ int main(int argc, char **argv)
 	}
 
 	for (size = 1; size <= 32; size = size*2) {
-		printf("Test size = %d write offset = %d watchpoint offset = -8\t", size, -size);
-
-		if (run_test(size, 8, -size, -8)) {
-			printf("[OK]\n");
-			ksft_inc_pass_cnt();
-		} else {
-			printf("[FAILED]\n");
-			ksft_inc_fail_cnt();
+		if (run_test(size, 8, -size, -8))
+			ksft_test_result_pass(
+				"Test size = %d write offset = %d watchpoint offset = -8\n",
+				size, -size);
+		else {
+			ksft_test_result_fail(
+				"Test size = %d write offset = %d watchpoint offset = -8\n",
+				size, -size);
 			succeeded = false;
 		}
 	}
 
-	ksft_print_cnts();
 	if (succeeded)
 		ksft_exit_pass();
 	else
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/4] selftests: membarrier: use ksft_* var arg msg api
  2017-06-29 23:18 [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api Shuah Khan
                   ` (2 preceding siblings ...)
  2017-06-29 23:18 ` [PATCH 3/4] selftests: breakpoints: breakpoint_test_arm64: convert test to use TAP13 Shuah Khan
@ 2017-06-29 23:18 ` Shuah Khan
  2017-06-30 16:13 ` [PATCH 0/4] Convert to TAP13 using ksft_ " Paul Elder
  4 siblings, 0 replies; 10+ messages in thread
From: Shuah Khan @ 2017-06-29 23:18 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, paul.elder, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

Use ksft_* var arg msg to include strerror() info. in test output. Remove
redundant SKIP/FAIL/PASS logic as it is no longer needed with ksft_ api.
Improve test output to be consistent and clear.

Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
---
 .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++------------
 1 file changed, 41 insertions(+), 50 deletions(-)

diff --git a/tools/testing/selftests/membarrier/membarrier_test.c b/tools/testing/selftests/membarrier/membarrier_test.c
index 74a712eab2e6..21399fcf1a59 100644
--- a/tools/testing/selftests/membarrier/membarrier_test.c
+++ b/tools/testing/selftests/membarrier/membarrier_test.c
@@ -7,62 +7,63 @@
 
 #include "../kselftest.h"
 
-enum test_membarrier_status {
-	TEST_MEMBARRIER_PASS = 0,
-	TEST_MEMBARRIER_FAIL,
-	TEST_MEMBARRIER_SKIP,
-};
-
 static int sys_membarrier(int cmd, int flags)
 {
 	return syscall(__NR_membarrier, cmd, flags);
 }
 
-static enum test_membarrier_status test_membarrier_cmd_fail(void)
+static int test_membarrier_cmd_fail(void)
 {
 	int cmd = -1, flags = 0;
-	const char *test_name = "membarrier command cmd=-1. Wrong command should fail";
 
 	if (sys_membarrier(cmd, flags) != -1) {
-		ksft_test_result_fail(test_name);
-		return TEST_MEMBARRIER_FAIL;
+		ksft_exit_fail_msg(
+			"sys membarrier invalid command test: command = %d, flags = %d. Should fail, but passed\n",
+			cmd, flags);
 	}
 
-	ksft_test_result_pass(test_name);
-	return TEST_MEMBARRIER_PASS;
+	ksft_test_result_pass(
+		"sys membarrier invalid command test: command = %d, flags = %d. Failed as expected\n",
+		cmd, flags);
+	return 0;
 }
 
-static enum test_membarrier_status test_membarrier_flags_fail(void)
+static int test_membarrier_flags_fail(void)
 {
 	int cmd = MEMBARRIER_CMD_QUERY, flags = 1;
-	const char *test_name = "MEMBARRIER_CMD_QUERY, flags=1, Wrong flags should fail";
 
 	if (sys_membarrier(cmd, flags) != -1) {
-		ksft_test_result_fail(test_name);
-		return TEST_MEMBARRIER_FAIL;
+		ksft_exit_fail_msg(
+			"sys membarrier MEMBARRIER_CMD_QUERY invalid flags test: flags = %d. Should fail, but passed\n",
+			flags);
 	}
 
-	ksft_test_result_pass(test_name);
-	return TEST_MEMBARRIER_PASS;
+	ksft_test_result_pass(
+		"sys membarrier MEMBARRIER_CMD_QUERY invalid flags test: flags = %d. Failed as expected\n",
+		flags);
+	return 0;
 }
 
-static enum test_membarrier_status test_membarrier_success(void)
+static int test_membarrier_success(void)
 {
 	int cmd = MEMBARRIER_CMD_SHARED, flags = 0;
-	const char *test_name = "execute MEMBARRIER_CMD_SHARED";
+	const char *test_name = "sys membarrier MEMBARRIER_CMD_SHARED\n";
 
 	if (sys_membarrier(cmd, flags) != 0) {
-		ksft_test_result_fail(test_name);
-		return TEST_MEMBARRIER_FAIL;
+		ksft_exit_fail_msg(
+			"sys membarrier MEMBARRIER_CMD_SHARED test: flags = %d\n",
+			flags);
 	}
 
-	ksft_test_result_pass(test_name);
-	return TEST_MEMBARRIER_PASS;
+	ksft_test_result_pass(
+		"sys membarrier MEMBARRIER_CMD_SHARED test: flags = %d\n",
+		flags);
+	return 0;
 }
 
-static enum test_membarrier_status test_membarrier(void)
+static int test_membarrier(void)
 {
-	enum test_membarrier_status status;
+	int status;
 
 	status = test_membarrier_cmd_fail();
 	if (status)
@@ -73,10 +74,10 @@ static enum test_membarrier_status test_membarrier(void)
 	status = test_membarrier_success();
 	if (status)
 		return status;
-	return TEST_MEMBARRIER_PASS;
+	return 0;
 }
 
-static enum test_membarrier_status test_membarrier_query(void)
+static int test_membarrier_query(void)
 {
 	int flags = 0, ret;
 
@@ -87,34 +88,24 @@ static enum test_membarrier_status test_membarrier_query(void)
 			 * It is valid to build a kernel with
 			 * CONFIG_MEMBARRIER=n. However, this skips the tests.
 			 */
-			ksft_exit_skip("CONFIG_MEMBARRIER is not enabled\n");
+			ksft_exit_skip(
+				"sys membarrier (CONFIG_MEMBARRIER) is disabled.\n");
 		}
-		ksft_test_result_fail("sys_membarrier() failed\n");
-		return TEST_MEMBARRIER_FAIL;
-	}
-	if (!(ret & MEMBARRIER_CMD_SHARED)) {
-		ksft_test_result_fail("command MEMBARRIER_CMD_SHARED is not supported.\n");
-		return TEST_MEMBARRIER_FAIL;
+		ksft_exit_fail_msg("sys_membarrier() failed\n");
 	}
-	ksft_test_result_pass("sys_membarrier available");
-	return TEST_MEMBARRIER_PASS;
+	if (!(ret & MEMBARRIER_CMD_SHARED))
+		ksft_exit_fail_msg("sys_membarrier is not supported.\n");
+
+	ksft_test_result_pass("sys_membarrier available\n");
+	return 0;
 }
 
 int main(int argc, char **argv)
 {
 	ksft_print_header();
-	switch (test_membarrier_query()) {
-	case TEST_MEMBARRIER_FAIL:
-		return ksft_exit_fail();
-	case TEST_MEMBARRIER_SKIP:
-		return ksft_exit_skip(NULL);
-	}
-	switch (test_membarrier()) {
-	case TEST_MEMBARRIER_FAIL:
-		return ksft_exit_fail();
-	case TEST_MEMBARRIER_SKIP:
-		return ksft_exit_skip(NULL);
-	}
 
-	return ksft_exit_pass();
+	test_membarrier_query();
+	test_membarrier();
+
+	ksft_exit_pass();
 }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api
  2017-06-29 23:18 [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api Shuah Khan
                   ` (3 preceding siblings ...)
  2017-06-29 23:18 ` [PATCH 4/4] selftests: membarrier: use ksft_* var arg msg api Shuah Khan
@ 2017-06-30 16:13 ` Paul Elder
  2017-06-30 16:33   ` Shuah Khan
  4 siblings, 1 reply; 10+ messages in thread
From: Paul Elder @ 2017-06-30 16:13 UTC (permalink / raw)
  To: Shuah Khan, shuah, alice.ferrazzi, gregkh, labath, panand, will.deacon
  Cc: linux-kselftest, linux-kernel

On 06/30/2017 08:18 AM, Shuah Khan wrote:
> This patch series converts breakpoint_test_arm64 to TAP13 output. Uses
> ksft_ var arg msg functions as needed. Changed to ensure parent is the
> one that increments test counters.
> 
> breakpoint_test, step_after_suspend_test, membarrier tests are changed
> to use ksft_ var arg msg functions as needed.
> 
> This patch series depends on Paul Elder's
> 
> [PATCH v2 0/2] kselftest: make ksft_* output functions variadic
> The v2 series doesn't append newline and makes it easier to use.
> 
> Shuah Khan (4):
>   selftests: breakpoint_test: use ksft_* var arg msg api
>   selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg
>     api
>   selftests: breakpoints: breakpoint_test_arm64: convert test to use
>     TAP13
>   selftests: membarrier: use ksft_* var arg msg api
> 
>  .../selftests/breakpoints/breakpoint_test.c        | 28 ++++---
>  .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
>  .../breakpoints/step_after_suspend_test.c          | 59 ++++++++------
>  .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++-----------
>  4 files changed, 148 insertions(+), 124 deletions(-)
> 
Looks good to me.

Although I am wondering why you said earlier that you were going to go with
my v1, while this depends on v2.

Thank you,

Paul

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api
  2017-06-30 16:13 ` [PATCH 0/4] Convert to TAP13 using ksft_ " Paul Elder
@ 2017-06-30 16:33   ` Shuah Khan
  2017-06-30 16:52     ` Paul Elder
  0 siblings, 1 reply; 10+ messages in thread
From: Shuah Khan @ 2017-06-30 16:33 UTC (permalink / raw)
  To: Paul Elder, alice.ferrazzi, gregkh, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel, Shuah Khan

On 06/30/2017 10:13 AM, Paul Elder wrote:
> On 06/30/2017 08:18 AM, Shuah Khan wrote:
>> This patch series converts breakpoint_test_arm64 to TAP13 output. Uses
>> ksft_ var arg msg functions as needed. Changed to ensure parent is the
>> one that increments test counters.
>>
>> breakpoint_test, step_after_suspend_test, membarrier tests are changed
>> to use ksft_ var arg msg functions as needed.
>>
>> This patch series depends on Paul Elder's
>>
>> [PATCH v2 0/2] kselftest: make ksft_* output functions variadic
>> The v2 series doesn't append newline and makes it easier to use.
>>
>> Shuah Khan (4):
>>   selftests: breakpoint_test: use ksft_* var arg msg api
>>   selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg
>>     api
>>   selftests: breakpoints: breakpoint_test_arm64: convert test to use
>>     TAP13
>>   selftests: membarrier: use ksft_* var arg msg api
>>
>>  .../selftests/breakpoints/breakpoint_test.c        | 28 ++++---
>>  .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
>>  .../breakpoints/step_after_suspend_test.c          | 59 ++++++++------
>>  .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++-----------
>>  4 files changed, 148 insertions(+), 124 deletions(-)
>>
> Looks good to me.
> 
> Although I am wondering why you said earlier that you were going to go with
> my v1, while this depends on v2.
> 
> Thank you,
> 
> Paul
> 
> 

Yeah my bad!

I was playing with both v1 and v2 for my testing. I lost track of which one worked
well. I had to start from square one and re-test.

v2 by not appending newline, allows custom formats in individual test messages.
For example, a test wants to use tabs between two ksft_print_msg() calls or _report_
messages. v2 is flexible and works better and leds itself well. Users can just pass
the format and expect it to stick.

If there are no issues with this series, I plan to apply your v2 series and this
series later on today or early tomorrow to linux-kselftest next.

If we have this infrastructure in place, we will be able to make progress in the
next release with the TAP13 conversion of other tests.

thanks,
-- Shuah

thanks,
-- Shuah

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api
  2017-06-30 16:33   ` Shuah Khan
@ 2017-06-30 16:52     ` Paul Elder
  2017-06-30 17:06       ` Shuah Khan
  0 siblings, 1 reply; 10+ messages in thread
From: Paul Elder @ 2017-06-30 16:52 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

On 07/01/2017 01:33 AM, Shuah Khan wrote:
> On 06/30/2017 10:13 AM, Paul Elder wrote:
>> On 06/30/2017 08:18 AM, Shuah Khan wrote:
>>> This patch series converts breakpoint_test_arm64 to TAP13 output. Uses
>>> ksft_ var arg msg functions as needed. Changed to ensure parent is the
>>> one that increments test counters.
>>>
>>> breakpoint_test, step_after_suspend_test, membarrier tests are changed
>>> to use ksft_ var arg msg functions as needed.
>>>
>>> This patch series depends on Paul Elder's
>>>
>>> [PATCH v2 0/2] kselftest: make ksft_* output functions variadic
>>> The v2 series doesn't append newline and makes it easier to use.
>>>
>>> Shuah Khan (4):
>>>   selftests: breakpoint_test: use ksft_* var arg msg api
>>>   selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg
>>>     api
>>>   selftests: breakpoints: breakpoint_test_arm64: convert test to use
>>>     TAP13
>>>   selftests: membarrier: use ksft_* var arg msg api
>>>
>>>  .../selftests/breakpoints/breakpoint_test.c        | 28 ++++---
>>>  .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
>>>  .../breakpoints/step_after_suspend_test.c          | 59 ++++++++------
>>>  .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++-----------
>>>  4 files changed, 148 insertions(+), 124 deletions(-)
>>>
>> Looks good to me.
>>
>> Although I am wondering why you said earlier that you were going to go with
>> my v1, while this depends on v2.
>>
>> Thank you,
>>
>> Paul
>>
>>
> 
> Yeah my bad!
> 
> I was playing with both v1 and v2 for my testing. I lost track of which one worked
> well. I had to start from square one and re-test.
Oh okay. Understood.

> 
> v2 by not appending newline, allows custom formats in individual test messages.
> For example, a test wants to use tabs between two ksft_print_msg() calls or _report_
> messages. v2 is flexible and works better and leds itself well. Users can just pass
> the format and expect it to stick.
I see. I didn't notice this advantage. Though if a test wants to separate two
ksft_print_msg()s with tabs, wouldn't there still be a # between them?

> 
> If there are no issues with this series, I plan to apply your v2 series and this
> series later on today or early tomorrow to linux-kselftest next.
I have no objections.

> 
> If we have this infrastructure in place, we will be able to make progress in the
> next release with the TAP13 conversion of other tests.
Indeed. Although I'm having trouble with tests that fork.

Thank you!

Paul

> 
> thanks,
> -- Shuah
> 
> thanks,
> -- Shuah
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api
  2017-06-30 16:52     ` Paul Elder
@ 2017-06-30 17:06       ` Shuah Khan
  2017-06-30 18:34         ` Paul Elder
  0 siblings, 1 reply; 10+ messages in thread
From: Shuah Khan @ 2017-06-30 17:06 UTC (permalink / raw)
  To: Paul Elder, alice.ferrazzi, gregkh, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel, Shuah Khan

On 06/30/2017 10:52 AM, Paul Elder wrote:
> On 07/01/2017 01:33 AM, Shuah Khan wrote:
>> On 06/30/2017 10:13 AM, Paul Elder wrote:
>>> On 06/30/2017 08:18 AM, Shuah Khan wrote:
>>>> This patch series converts breakpoint_test_arm64 to TAP13 output. Uses
>>>> ksft_ var arg msg functions as needed. Changed to ensure parent is the
>>>> one that increments test counters.
>>>>
>>>> breakpoint_test, step_after_suspend_test, membarrier tests are changed
>>>> to use ksft_ var arg msg functions as needed.
>>>>
>>>> This patch series depends on Paul Elder's
>>>>
>>>> [PATCH v2 0/2] kselftest: make ksft_* output functions variadic
>>>> The v2 series doesn't append newline and makes it easier to use.
>>>>
>>>> Shuah Khan (4):
>>>>   selftests: breakpoint_test: use ksft_* var arg msg api
>>>>   selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg
>>>>     api
>>>>   selftests: breakpoints: breakpoint_test_arm64: convert test to use
>>>>     TAP13
>>>>   selftests: membarrier: use ksft_* var arg msg api
>>>>
>>>>  .../selftests/breakpoints/breakpoint_test.c        | 28 ++++---
>>>>  .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
>>>>  .../breakpoints/step_after_suspend_test.c          | 59 ++++++++------
>>>>  .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++-----------
>>>>  4 files changed, 148 insertions(+), 124 deletions(-)
>>>>
>>> Looks good to me.
>>>
>>> Although I am wondering why you said earlier that you were going to go with
>>> my v1, while this depends on v2.
>>>
>>> Thank you,
>>>
>>> Paul
>>>
>>>
>>
>> Yeah my bad!
>>
>> I was playing with both v1 and v2 for my testing. I lost track of which one worked
>> well. I had to start from square one and re-test.
> Oh okay. Understood.
> 
>>
>> v2 by not appending newline, allows custom formats in individual test messages.
>> For example, a test wants to use tabs between two ksft_print_msg() calls or _report_
>> messages. v2 is flexible and works better and leds itself well. Users can just pass
>> the format and expect it to stick.
> I see. I didn't notice this advantage. Though if a test wants to separate two
> ksft_print_msg()s with tabs, wouldn't there still be a # between them?

Sure. The important thing for me is that - passed in format sticking and not changing.

> 
>>
>> If there are no issues with this series, I plan to apply your v2 series and this
>> series later on today or early tomorrow to linux-kselftest next.
> I have no objections.
> 

Thanks.

>>
>> If we have this infrastructure in place, we will be able to make progress in the
>> next release with the TAP13 conversion of other tests.> Indeed. Although I'm having trouble with tests that fork.

Please focus on tests that don't fork()/exec() first.

I would recommend having parent print test counts - child will use ksft_print_msg()
for all its output I was able to use that strategy for tests in this series.

This might not work for all tests. We have to revisit the tests that fork() and exec().
I plan to look at parent/child tests in the next couple of weeks.

thanks,
-- Shuah

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api
  2017-06-30 17:06       ` Shuah Khan
@ 2017-06-30 18:34         ` Paul Elder
  0 siblings, 0 replies; 10+ messages in thread
From: Paul Elder @ 2017-06-30 18:34 UTC (permalink / raw)
  To: shuah, alice.ferrazzi, gregkh, labath, panand, will.deacon
  Cc: Shuah Khan, linux-kselftest, linux-kernel

On 07/01/2017 02:06 AM, Shuah Khan wrote:
> On 06/30/2017 10:52 AM, Paul Elder wrote:
>> On 07/01/2017 01:33 AM, Shuah Khan wrote:
>>> On 06/30/2017 10:13 AM, Paul Elder wrote:
>>>> On 06/30/2017 08:18 AM, Shuah Khan wrote:
>>>>> This patch series converts breakpoint_test_arm64 to TAP13 output. Uses
>>>>> ksft_ var arg msg functions as needed. Changed to ensure parent is the
>>>>> one that increments test counters.
>>>>>
>>>>> breakpoint_test, step_after_suspend_test, membarrier tests are changed
>>>>> to use ksft_ var arg msg functions as needed.
>>>>>
>>>>> This patch series depends on Paul Elder's
>>>>>
>>>>> [PATCH v2 0/2] kselftest: make ksft_* output functions variadic
>>>>> The v2 series doesn't append newline and makes it easier to use.
>>>>>
>>>>> Shuah Khan (4):
>>>>>   selftests: breakpoint_test: use ksft_* var arg msg api
>>>>>   selftests: breakpoints: step_after_suspend_test use ksft_* var arg msg
>>>>>     api
>>>>>   selftests: breakpoints: breakpoint_test_arm64: convert test to use
>>>>>     TAP13
>>>>>   selftests: membarrier: use ksft_* var arg msg api
>>>>>
>>>>>  .../selftests/breakpoints/breakpoint_test.c        | 28 ++++---
>>>>>  .../selftests/breakpoints/breakpoint_test_arm64.c  | 94 +++++++++++++---------
>>>>>  .../breakpoints/step_after_suspend_test.c          | 59 ++++++++------
>>>>>  .../testing/selftests/membarrier/membarrier_test.c | 91 ++++++++++-----------
>>>>>  4 files changed, 148 insertions(+), 124 deletions(-)
>>>>>
>>>> Looks good to me.
>>>>
>>>> Although I am wondering why you said earlier that you were going to go with
>>>> my v1, while this depends on v2.
>>>>
>>>> Thank you,
>>>>
>>>> Paul
>>>>
>>>>
>>>
>>> Yeah my bad!
>>>
>>> I was playing with both v1 and v2 for my testing. I lost track of which one worked
>>> well. I had to start from square one and re-test.
>> Oh okay. Understood.
>>
>>>
>>> v2 by not appending newline, allows custom formats in individual test messages.
>>> For example, a test wants to use tabs between two ksft_print_msg() calls or _report_
>>> messages. v2 is flexible and works better and leds itself well. Users can just pass
>>> the format and expect it to stick.
>> I see. I didn't notice this advantage. Though if a test wants to separate two
>> ksft_print_msg()s with tabs, wouldn't there still be a # between them?
> 
> Sure. The important thing for me is that - passed in format sticking and not changing.
I see.

> 
>>
>>>
>>> If there are no issues with this series, I plan to apply your v2 series and this
>>> series later on today or early tomorrow to linux-kselftest next.
>> I have no objections.
>>
> 
> Thanks.
> 
>>>
>>> If we have this infrastructure in place, we will be able to make progress in the
>>> next release with the TAP13 conversion of other tests.> Indeed. Although I'm having trouble with tests that fork.
> 
> Please focus on tests that don't fork()/exec() first.
Okay.

> 
> I would recommend having parent print test counts - child will use ksft_print_msg()
> for all its output I was able to use that strategy for tests in this series.
I was thinking of that too. The parent could increment an anonymous test count after printing
just the test number? And then the child would print the test name without the #.

> 
> This might not work for all tests. We have to revisit the tests that fork() and exec().
> I plan to look at parent/child tests in the next couple of weeks.
Got it.

Thank you,

Paul

> 
> thanks,
> -- Shuah
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-06-30 18:34 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-29 23:18 [PATCH 0/4] Convert to TAP13 using ksft_ var arg msg api Shuah Khan
2017-06-29 23:18 ` [PATCH 1/4] selftests: breakpoint_test: use ksft_* " Shuah Khan
2017-06-29 23:18 ` [PATCH 2/4] selftests: breakpoints: step_after_suspend_test " Shuah Khan
2017-06-29 23:18 ` [PATCH 3/4] selftests: breakpoints: breakpoint_test_arm64: convert test to use TAP13 Shuah Khan
2017-06-29 23:18 ` [PATCH 4/4] selftests: membarrier: use ksft_* var arg msg api Shuah Khan
2017-06-30 16:13 ` [PATCH 0/4] Convert to TAP13 using ksft_ " Paul Elder
2017-06-30 16:33   ` Shuah Khan
2017-06-30 16:52     ` Paul Elder
2017-06-30 17:06       ` Shuah Khan
2017-06-30 18:34         ` Paul Elder

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.