Commit 598762cf authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo
Browse files

perf test: Disable breakpoint signal tests for powerpc



The following tests are failing on powerpc:

  # perf test break
  18: Breakpoint overflow signal handler  : FAILED!
  19: Breakpoint overflow sampling        : FAILED!

The powerpc kenel so far does not have support to even create
instruction breakpoints using the perf event interface, so those tests
fail early in the config phase.

I added a '->is_supported()' callback to test struct to be able to
disable specific tests. It seems better than putting ifdefs directly to
the test array.

Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20170601205450.GA398@krava


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent a09935b8
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -288,3 +288,17 @@ int test__bp_signal(int subtest __maybe_unused)
	return count1 == 1 && overflows == 3 && count2 == 3 && overflows_2 == 3 && count3 == 2 ?
		TEST_OK : TEST_FAIL;
}

bool test__bp_signal_is_supported(void)
{
/*
 * The powerpc so far does not have support to even create
 * instruction breakpoint using the perf event interface.
 * Once it's there we can release this.
 */
#ifdef __powerpc__
	return false;
#else
	return true;
#endif
}
+7 −0
Original line number Diff line number Diff line
@@ -97,10 +97,12 @@ static struct test generic_tests[] = {
	{
		.desc = "Breakpoint overflow signal handler",
		.func = test__bp_signal,
		.is_supported = test__bp_signal_is_supported,
	},
	{
		.desc = "Breakpoint overflow sampling",
		.func = test__bp_signal_overflow,
		.is_supported = test__bp_signal_is_supported,
	},
	{
		.desc = "Number of exit events of a simple workload",
@@ -401,6 +403,11 @@ static int __cmd_test(int argc, const char *argv[], struct intlist *skiplist)
		if (!perf_test__matches(t, curr, argc, argv))
			continue;

		if (t->is_supported && !t->is_supported()) {
			pr_debug("%2d: %-*s: Disabled\n", i, width, t->desc);
			continue;
		}

		pr_info("%2d: %-*s:", i, width, t->desc);

		if (intlist__find(skiplist, i)) {
+3 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ struct test {
		int (*get_nr)(void);
		const char *(*get_desc)(int subtest);
	} subtest;
	bool (*is_supported)(void);
};

/* Tests */
@@ -99,6 +100,8 @@ const char *test__clang_subtest_get_desc(int subtest);
int test__clang_subtest_get_nr(void);
int test__unit_number__scnprint(int subtest);

bool test__bp_signal_is_supported(void);

#if defined(__arm__) || defined(__aarch64__)
#ifdef HAVE_DWARF_UNWIND_SUPPORT
struct thread;