diff options
-rw-r--r-- | tools/perf/builtin-trace.c | 17 |
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 | ||