aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/builtin-trace.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index c907e7e41a74..c3caabbe18fa 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -298,7 +298,22 @@ static struct syscall *trace__syscall_info(struct trace *trace,
298 int id = perf_evsel__intval(evsel, sample, "id"); 298 int id = perf_evsel__intval(evsel, sample, "id");
299 299
300 if (id < 0) { 300 if (id < 0) {
301 fprintf(trace->output, "Invalid syscall %d id, skipping...\n", id); 301
302 /*
303 * XXX: Noticed on x86_64, reproduced as far back as 3.0.36, haven't tried
304 * before that, leaving at a higher verbosity level till that is
305 * explained. Reproduced with plain ftrace with:
306 *
307 * echo 1 > /t/events/raw_syscalls/sys_exit/enable
308 * grep "NR -1 " /t/trace_pipe
309 *
310 * After generating some load on the machine.
311 */
312 if (verbose > 1) {
313 static u64 n;
314 fprintf(trace->output, "Invalid syscall %d id, skipping (%s, %" PRIu64 ") ...\n",
315 id, perf_evsel__name(evsel), ++n);
316 }
302 return NULL; 317 return NULL;
303 } 318 }
304 319