Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e411b0e authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge tag 'perf-urgent-for-mingo-4.12-20170606' of...

Merge tag 'perf-urgent-for-mingo-4.12-20170606' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux

 into perf/urgent

Pull perf/urgent fixes from Arnaldo Carvalho de Melo:

 - Only print NMI watchdog hint in 'perf stat' when it is enabled (Andi Kleen)

 - Fix sys_mmap/sys_old_mmap shandling in s390 in 'perf trace' (Jiri Olsa)

 - Disable breakpoint signal tests in powerpc, that lacks the perf kernel
   glue to set breakpoint events and makes 'perf test' always fail (Jiri Olsa)

 - Fix 'perf annotate' for branch instruction with multiple operands (Kim Phillips)

 - Add missing powerpc triplet when disassembling with 'objdump' in 'perf
   annotate' (Kim Phillips)

 - Do not trow away partial unwound stacks when using libdw, making
   callchains produced with it similar to those produced when linked with
   the other DWARF unwind library supported in perf, libunwind (Milian Wolff)

 - Fixes to properly handle kernel modules when processing build-id meta
  events (Namhyung Kim)

 - Fix handling of compressed modules in the build-id cache (Namhyung Kim)

 - Fix 'perf annotate' failure when filename has special chars (Ravi Bangoria)

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents ba7b2387 2538b9e2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ const char *const arm64_triplets[] = {

const char *const powerpc_triplets[] = {
	"powerpc-unknown-linux-gnu-",
	"powerpc-linux-gnu-",
	"powerpc64-unknown-linux-gnu-",
	"powerpc64-linux-gnu-",
	"powerpc64le-linux-gnu-",
+4 −1
Original line number Diff line number Diff line
@@ -1578,6 +1578,7 @@ static void print_header(int argc, const char **argv)
static void print_footer(void)
{
	FILE *output = stat_config.output;
	int n;

	if (!null_run)
		fprintf(output, "\n");
@@ -1590,7 +1591,9 @@ static void print_footer(void)
	}
	fprintf(output, "\n\n");

	if (print_free_counters_hint)
	if (print_free_counters_hint &&
	    sysctl__read_int("kernel/nmi_watchdog", &n) >= 0 &&
	    n > 0)
		fprintf(output,
"Some events weren't counted. Try disabling the NMI watchdog:\n"
"	echo 0 > /proc/sys/kernel/nmi_watchdog\n"
+4 −0
Original line number Diff line number Diff line
@@ -681,6 +681,10 @@ static struct syscall_fmt {
	{ .name	    = "mlockall",   .errmsg = true,
	  .arg_scnprintf = { [0] = SCA_HEX, /* addr */ }, },
	{ .name	    = "mmap",	    .hexret = true,
/* The standard mmap maps to old_mmap on s390x */
#if defined(__s390x__)
	.alias = "old_mmap",
#endif
	  .arg_scnprintf = { [0] = SCA_HEX,	  /* addr */
			     [2] = SCA_MMAP_PROT, /* prot */
			     [3] = SCA_MMAP_FLAGS, /* flags */ }, },
+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)) {
Loading