diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-01 15:21:20 -0300 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-03 16:31:03 -0300 |
| commit | 865224bfde78b31be8883302db496ecb3b7919ab (patch) | |
| tree | 4bdf7494e877b20b5da5aa8e2baea0c8592830ec | |
| parent | 4cd74dee09d4b06f0e80826bf9d472d5aa42caaf (diff) | |
| download | linux-865224bfde78b31be8883302db496ecb3b7919ab.tar.gz linux-865224bfde78b31be8883302db496ecb3b7919ab.zip | |
perf tools: Include file offset and event type name in skip messages
Add the perf.data file offset and use perf_event__name() instead of raw
event type integers in the 'problem processing event, skipping it'
messages emitted by process_sample_event() callbacks across annotate,
c2c, diff, kmem, kvm, kwork, lock, report, script, and build-id.
This lets users cross-reference skipped events with 'perf report -D'
output. Also add explicit #include "util/event.h" and <inttypes.h>
where needed to avoid depending on transitive includes.
Reviewed-by: Ian Rogers <irogers@google.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/perf/builtin-annotate.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-c2c.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-diff.c | 8 | ||||
| -rw-r--r-- | tools/perf/builtin-kmem.c | 6 | ||||
| -rw-r--r-- | tools/perf/builtin-kvm.c | 9 | ||||
| -rw-r--r-- | tools/perf/builtin-kwork.c | 4 | ||||
| -rw-r--r-- | tools/perf/builtin-lock.c | 6 | ||||
| -rw-r--r-- | tools/perf/builtin-report.c | 9 | ||||
| -rw-r--r-- | tools/perf/builtin-script.c | 10 | ||||
| -rw-r--r-- | tools/perf/util/build-id.c | 5 |
10 files changed, 43 insertions, 24 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 5f450c8093c0..b918f9eed5fd 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -288,8 +288,9 @@ static int process_sample_event(const struct perf_tool *tool, addr_location__init(&al); if (machine__resolve(machine, &al, sample) < 0) { - pr_warning("problem processing %d event, skipping it.\n", - event->header.type); + pr_warning("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); ret = -1; goto out_put; } diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index 36f386949923..d3503be9350c 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -328,8 +328,9 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused, addr_location__init(&al); if (machine__resolve(machine, &al, sample) < 0) { - pr_debug("problem processing %d event, skipping it.\n", - event->header.type); + pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); ret = -1; goto out; } diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index b4ff863b304c..9592f44b6545 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c @@ -409,8 +409,9 @@ static int diff__process_sample_event(const struct perf_tool *tool, addr_location__init(&al); if (machine__resolve(machine, &al, sample) < 0) { - pr_warning("problem processing %d event, skipping it.\n", - event->header.type); + pr_warning("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); ret = -1; goto out; } @@ -436,7 +437,8 @@ static int diff__process_sample_event(const struct perf_tool *tool, case COMPUTE_STREAM: if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH, NULL)) { - pr_debug("problem adding hist entry, skipping event\n"); + pr_debug("problem adding hist entry at offset %#" PRIx64 ", skipping event\n", + sample->file_offset); goto out; } break; diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 33585e353efe..e1b2f5bc1ba8 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c @@ -22,6 +22,7 @@ #include "util/cpumap.h" #include "util/debug.h" +#include "util/event.h" #include "util/string2.h" #include "util/util.h" @@ -987,8 +988,9 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused, sample->tid); if (thread == NULL) { - pr_debug("problem processing %d event, skipping it.\n", - event->header.type); + pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); return -1; } diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index dd2ed21596aa..394302ebdb16 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -22,6 +22,7 @@ #include "util/synthetic-events.h" #include "util/top.h" #include "util/data.h" +#include "util/event.h" #include "util/ordered-events.h" #include "util/kvm-stat.h" #include "util/util.h" @@ -1141,14 +1142,16 @@ static int process_sample_event(const struct perf_tool *tool, return 0; if (machine__resolve(machine, &kvm->al, sample) < 0) { - pr_warning("Fail to resolve address location, skip sample.\n"); + pr_warning("WARNING: at offset %#" PRIx64 ": fail to resolve address location, skipping sample\n", + sample->file_offset); return 0; } thread = machine__findnew_thread(machine, sample->pid, sample->tid); if (thread == NULL) { - pr_debug("problem processing %d event, skipping it.\n", - event->header.type); + pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); return -1; } diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c index 99dc293a0744..110de3507d48 100644 --- a/tools/perf/builtin-kwork.c +++ b/tools/perf/builtin-kwork.c @@ -9,6 +9,7 @@ #include "perf.h" #include "util/data.h" +#include "util/event.h" #include "util/evlist.h" #include "util/evsel.h" #include "util/header.h" @@ -897,7 +898,8 @@ static int timehist_exit_event(struct perf_kwork *kwork, addr_location__init(&al); if (machine__resolve(machine, &al, sample) < 0) { - pr_debug("Problem processing event, skipping it\n"); + pr_debug("problem processing event at offset %#" PRIx64 ", skipping it\n", + sample->file_offset); ret = -1; goto out; } diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index 94a8c35abb0b..5841d43be971 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -21,6 +21,7 @@ #include "util/tracepoint.h" #include "util/debug.h" +#include "util/event.h" #include "util/session.h" #include "util/tool.h" #include "util/data.h" @@ -1433,8 +1434,9 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused, sample->tid); if (thread == NULL) { - pr_debug("problem processing %d event, skipping it.\n", - event->header.type); + pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); return -1; } diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 973d97af8501..cd052aa78132 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -27,6 +27,7 @@ #include "perf.h" #include "util/debug.h" +#include "util/event.h" #include "util/evlist.h" #include "util/evsel.h" #include "util/evswitch.h" @@ -284,8 +285,9 @@ static int process_sample_event(const struct perf_tool *tool, addr_location__init(&al); if (machine__resolve(machine, &al, sample) < 0) { - pr_debug("problem processing %d event, skipping it.\n", - event->header.type); + pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); ret = -1; goto out_put; } @@ -332,7 +334,8 @@ static int process_sample_event(const struct perf_tool *tool, ret = hist_entry_iter__add(&iter, &al, rep->max_stack, rep); if (ret < 0) - pr_debug("problem adding hist entry, skipping event\n"); + pr_debug("problem adding hist entry at offset %#" PRIx64 ", skipping event\n", + sample->file_offset); out_put: addr_location__exit(&al); return ret; diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 5124edf2b7a6..f4aa255fc329 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -2693,8 +2693,9 @@ static int process_sample_event(const struct perf_tool *tool, goto out_put; if (!al.thread && machine__resolve(machine, &al, sample) < 0) { - pr_err("problem processing %d event, skipping it.\n", - event->header.type); + pr_err("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); ret = -1; goto out_put; } @@ -2775,8 +2776,9 @@ static int process_deferred_sample_event(const struct perf_tool *tool, goto out_put; if (machine__resolve(machine, &al, sample) < 0) { - pr_err("problem processing %d event, skipping it.\n", - event->header.type); + pr_err("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), event->header.type, + sample->file_offset); ret = -1; goto out_put; } diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c index af4d874f1381..8c0a9ae932aa 100644 --- a/tools/perf/util/build-id.c +++ b/tools/perf/util/build-id.c @@ -10,6 +10,7 @@ #include "util.h" // lsdir(), mkdir_p(), rm_rf() #include <dirent.h> #include <errno.h> +#include <inttypes.h> #include <stdio.h> #include <sys/stat.h> #include <sys/types.h> @@ -62,8 +63,8 @@ int build_id__mark_dso_hit(const struct perf_tool *tool __maybe_unused, sample->tid); if (thread == NULL) { - pr_err("problem processing %d event, skipping it.\n", - event->header.type); + pr_err("problem processing %s event at offset %#" PRIx64 ", skipping it.\n", + perf_event__name(event->header.type), sample->file_offset); return -1; } |
