From: Ian Rogers <irogers@google.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Aaron Tomlin <atomlin@atomlin.com>
Cc: Howard Chu <howardchu95@gmail.com>,
Jakub Brnak <jbrnak@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
James Clark <james.clark@linaro.org>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
Ian Rogers <irogers@google.com>
Subject: [PATCH v6 17/26] perf trace: Do not return 0 from syscall tracepoint BPF
Date: Mon, 28 Sep 2026 11:25:56 -0700 [thread overview]
Message-ID: <20260928182605.3649015-18-irogers@google.com> (raw)
In-Reply-To: <20260928182605.3649015-1-irogers@google.com>
From: Namhyung Kim <namhyung@kernel.org>
Howard reported that returning 0 from the BPF resulted in affecting
global syscall tracepoint handling. What we want to do is just to drop
syscall output in the current perf session. So we need a different
approach.
Currently perf trace uses bpf-output event for augmented arguments and
raw_syscalls:sys_{enter,exit} tracepoint events for normal arguments.
But I think we can just use bpf-output in both cases and drop the trace
point events.
Then it needs to distinguish bpf-output data if it's for enter or exit.
Repurpose struct trace_entry.type which is common in both syscall entry
and exit tracepoints.
Closes: https://lore.kernel.org/r/20250529065537.529937-1-howardchu95@gmail.com
Suggested-by: Howard Chu <howardchu95@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20250814071754.193265-4-namhyung@kernel.org
[ irogers: Use the local syscall_{enter,exit}_args, always return 1 from
augmented__output(), output the unaugmented args when the perf_event_open
augmenter fails, dispatch from a trace__bpf_output() handler, add a
per-task tracking event and keep excluding kernel callchains. ]
Assisted-by: Antigravity:gemini-3.1-pro
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/builtin-trace.c | 125 ++++++++++++++----
.../bpf_skel/augmented_raw_syscalls.bpf.c | 64 ++++++---
tools/perf/util/bpf_skel/perf_trace_u.h | 14 ++
3 files changed, 157 insertions(+), 46 deletions(-)
create mode 100644 tools/perf/util/bpf_skel/perf_trace_u.h
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index ee844210e281..3dd40f3c3cbb 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -21,6 +21,7 @@
#include <bpf/libbpf.h>
#include <bpf/btf.h>
#endif
+#include "util/bpf_skel/perf_trace_u.h"
#include "util/rlimit.h"
#include "builtin.h"
#include "util/cgroup.h"
@@ -555,6 +556,57 @@ static struct evsel *perf_evsel__raw_syscall_newtp(const char *direction, void *
return NULL;
}
+static struct syscall_tp sys_enter_tp;
+static struct syscall_tp sys_exit_tp;
+
+static int evsel__init_bpf_output_tp(struct evsel *evsel)
+{
+ struct tep_event *event;
+ struct tep_format_field *field;
+ struct syscall_tp *sc;
+
+ if (evsel == NULL)
+ return 0;
+
+ event = trace_event__tp_format("raw_syscalls", "sys_enter");
+ if (event == NULL)
+ event = trace_event__tp_format("syscalls", "sys_enter");
+ if (event == NULL)
+ return -errno;
+
+ field = tep_find_field(event, "id");
+ if (field == NULL || tp_field__init_uint(&sys_enter_tp.id, field, evsel->needs_swap))
+ return -EINVAL;
+
+ __tp_field__init_ptr(&sys_enter_tp.args, sys_enter_tp.id.offset + sizeof(u64));
+
+ /* ID is at the same offset, use evsel sc for convenience */
+ sc = evsel__syscall_tp(evsel);
+ if (sc == NULL)
+ return -ENOMEM;
+
+ event = trace_event__tp_format("raw_syscalls", "sys_exit");
+ if (event == NULL)
+ event = trace_event__tp_format("syscalls", "sys_exit");
+ if (event == NULL)
+ return -errno;
+
+ field = tep_find_field(event, "id");
+ if (field == NULL || tp_field__init_uint(&sys_exit_tp.id, field, evsel->needs_swap))
+ return -EINVAL;
+
+ field = tep_find_field(event, "ret");
+ if (field == NULL || tp_field__init_uint(&sys_exit_tp.ret, field, evsel->needs_swap))
+ return -EINVAL;
+
+ /* Save the common part to the evsel sc */
+ if (sys_enter_tp.id.offset != sys_exit_tp.id.offset)
+ return -EINVAL;
+ sc->id = sys_enter_tp.id;
+
+ return 0;
+}
+
#define perf_evsel__sc_tp_uint(name, sample) \
({ struct syscall_tp *fields = __evsel__syscall_tp(sample->evsel); \
fields->name.integer(&fields->name, sample); })
@@ -3021,7 +3073,10 @@ static int trace__sys_enter(struct trace *trace,
trace__fprintf_sample(trace, sample, thread);
- args = perf_evsel__sc_tp_ptr(args, sample);
+ if (evsel == trace->syscalls.events.bpf_output)
+ args = sys_enter_tp.args.pointer(&sys_enter_tp.args, sample);
+ else
+ args = perf_evsel__sc_tp_ptr(args, sample);
if (ttrace->entry_str == NULL) {
ttrace->entry_str = malloc(trace__entry_str_size);
@@ -3159,7 +3214,10 @@ static int trace__sys_exit(struct trace *trace,
trace__fprintf_sample(trace, sample, thread);
- ret = perf_evsel__sc_tp_uint(ret, sample);
+ if (evsel == trace->syscalls.events.bpf_output)
+ ret = sys_exit_tp.ret.integer(&sys_exit_tp.ret, sample);
+ else
+ ret = perf_evsel__sc_tp_uint(ret, sample);
if (trace->summary)
thread__update_stats(thread, ttrace, id, sample, ret, trace);
@@ -3274,6 +3332,18 @@ errno_print: {
return err;
}
+/* The BPF output event carries both entry and exit, tagged in common_type. */
+static int trace__bpf_output(struct trace *trace, union perf_event *event,
+ struct perf_sample *sample)
+{
+ u16 type = *(u16 *)sample->raw_data;
+
+ if (type == SYSCALL_TRACE_ENTER)
+ return trace__sys_enter(trace, event, sample);
+
+ return trace__sys_exit(trace, event, sample);
+}
+
static int trace__vfs_getname(struct trace *trace,
union perf_event *event __maybe_unused,
struct perf_sample *sample)
@@ -3585,27 +3655,6 @@ static int trace__event_handler(struct trace *trace,
if (thread)
trace__fprintf_comm_tid(trace, thread, trace->output);
- if (evsel == trace->syscalls.events.bpf_output) {
- int id = perf_evsel__sc_tp_uint(id, sample);
- int e_machine = thread
- ? thread__e_machine(thread, trace->host, /*e_flags=*/NULL)
- : EM_HOST;
- struct syscall *sc = trace__syscall_info(trace, evsel, e_machine, id);
-
- if (sc) {
- fprintf(trace->output, "%s(", sc->name);
- trace__fprintf_sys_enter(trace, sample);
- fputc(')', trace->output);
- goto newline;
- }
-
- /*
- * XXX: Not having the associated syscall info or not finding/adding
- * the thread should never happen, but if it does...
- * fall thru and print it as a bpf_output event.
- */
- }
-
fprintf(trace->output, "%s(", evsel->name);
if (evsel__is_bpf_output(evsel)) {
@@ -3625,7 +3674,6 @@ static int trace__event_handler(struct trace *trace,
}
}
-newline:
fprintf(trace->output, ")\n");
if (callchain_ret > 0)
@@ -4791,6 +4839,16 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
bpf_output->core.system_wide = true;
/* Exec doesn't enable a CPU event, BPF waits for the exec instead. */
bpf_output->immediate = target__enable_on_exec(&trace->opts.target);
+ /* Track the target, and see it exit, with a per-task event. */
+ if (evlist__get_tracking_event(evlist) == bpf_output) {
+ struct evsel *tracking =
+ evlist__findnew_tracking_event(evlist, /*system_wide=*/false);
+
+ if (!tracking)
+ goto out_error_mem;
+ /* --sort-events can't queue events without a timestamp. */
+ evsel__set_sample_bit(tracking, TIME);
+ }
}
create_maps:
@@ -4902,7 +4960,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
trace->multiple_threads = perf_thread_map__pid(evlist__core(evlist)->threads, 0) == -1 ||
perf_thread_map__nr(evlist__core(evlist)->threads) > 1 ||
- evlist__first(evlist)->core.attr.inherit;
+ !trace->opts.no_inherit;
/*
* Now that we already used evsel->core.attr to ask the kernel to setup the
@@ -5961,8 +6019,6 @@ int cmd_trace(int argc, const char **argv)
if (err < 0)
goto skip_augmentation;
- trace__add_syscall_newtp(&trace);
-
err = augmented_syscalls__create_bpf_output(trace.evlist);
if (err == 0)
trace.syscalls.events.bpf_output = evlist__last(trace.evlist);
@@ -5998,6 +6054,7 @@ int cmd_trace(int argc, const char **argv)
if (evlist__nr_entries(trace.evlist) > 0) {
bool use_btf = false;
+ struct evsel *augmented = trace.syscalls.events.bpf_output;
evlist__set_default_evsel_handler(trace.evlist, trace__event_handler);
if (evlist__set_syscall_tp_fields(trace.evlist, &use_btf)) {
@@ -6007,6 +6064,20 @@ int cmd_trace(int argc, const char **argv)
if (use_btf)
trace__load_vmlinux_btf(&trace);
+
+ if (augmented) {
+ if (evsel__init_bpf_output_tp(augmented) < 0) {
+ pr_err("Failed to initialize the BPF output event fields\n");
+ goto out;
+ }
+ augmented->handler = trace__bpf_output;
+ /* Just the user space callchain leading to the syscall. */
+ if (callchain_param.enabled && !trace.kernel_syscallchains)
+ augmented->core.attr.exclude_callchain_kernel = 1;
+ trace.raw_augmented_syscalls_args_size = sys_enter_tp.id.offset;
+ trace.raw_augmented_syscalls_args_size += (6 + 1) * sizeof(long);
+ trace.raw_augmented_syscalls = true;
+ }
}
/*
diff --git a/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c b/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c
index d9284a5c030d..d16e55706335 100644
--- a/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c
+++ b/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c
@@ -7,6 +7,7 @@
*/
#include "vmlinux.h"
+#include "perf_trace_u.h"
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
@@ -62,13 +63,19 @@ struct syscalls_sys_exit {
} syscalls_sys_exit SEC(".maps");
struct syscall_enter_args {
- unsigned long long common_tp_fields;
+ union {
+ unsigned long long common_tp_fields;
+ unsigned short common_type;
+ };
long syscall_nr;
unsigned long args[6];
};
struct syscall_exit_args {
- unsigned long long common_tp_fields;
+ union {
+ unsigned long long common_tp_fields;
+ unsigned short common_type;
+ };
long syscall_nr;
long ret;
};
@@ -169,10 +176,11 @@ static inline struct augmented_args_payload *augmented_args_payload(void)
return bpf_map_lookup_elem(&augmented_args_tmp, &key);
}
-static inline int augmented__output(void *ctx, struct augmented_args_payload *args, int len)
+/* Returning 0 would drop the tracepoint for other perf sessions. */
+static inline int augmented__output(void *ctx, void *args, int len)
{
- /* If perf_event_output fails, return non-zero so that it gets recorded unaugmented */
- return bpf_perf_event_output(ctx, &__augmented_syscalls__, BPF_F_CURRENT_CPU, args, len);
+ bpf_perf_event_output(ctx, &__augmented_syscalls__, BPF_F_CURRENT_CPU, args, len);
+ return 1;
}
static inline int augmented__beauty_output(void *ctx, void *data, int len)
@@ -211,12 +219,20 @@ unsigned int augmented_arg__read_str(struct augmented_arg *augmented_arg, const
SEC("tp/raw_syscalls/sys_enter")
int sys_enter_unaugmented(struct syscall_enter_args *args)
{
+ struct augmented_args_payload *augmented_args = augmented_args_payload();
+
+ if (augmented_args)
+ augmented__output(args, &augmented_args->args, sizeof(augmented_args->args));
return 1;
}
SEC("tp/raw_syscalls/sys_exit")
int sys_exit_unaugmented(struct syscall_exit_args *args)
{
+ struct augmented_args_payload *augmented_args = augmented_args_payload();
+
+ if (augmented_args)
+ augmented__output(args, &augmented_args->args, sizeof(struct syscall_exit_args));
return 1;
}
@@ -408,7 +424,9 @@ int sys_enter_perf_event_open(struct syscall_enter_args *args)
return augmented__output(args, augmented_args, len + size);
failure:
- return 1; /* Failure: don't filter */
+ if (augmented_args)
+ augmented__output(args, augmented_args, sizeof(augmented_args->args));
+ return 1;
}
SEC("tp/syscalls/sys_enter_clock_nanosleep")
@@ -590,6 +608,7 @@ static int augment_sys_enter(void *ctx, struct syscall_enter_args *args)
/* copy the sys_enter header, which has the syscall_nr */
__builtin_memcpy(&payload->args, args, sizeof(struct syscall_enter_args));
+ payload->args.common_type = SYSCALL_TRACE_ENTER;
if (bpf_ksym_exists(bpf_iter_num_new)) {
bpf_for(i, 0, 6) {
@@ -642,48 +661,55 @@ int sys_enter(struct syscall_enter_args *args)
return 1;
if (pid_filter__has(&pids_filtered, getpid()))
- return 0;
+ return 1;
augmented_args = augmented_args_payload();
if (augmented_args == NULL)
return 1;
bpf_probe_read_kernel(&augmented_args->args, sizeof(augmented_args->args), args);
+ augmented_args->args.common_type = SYSCALL_TRACE_ENTER;
/*
* Jump to syscall specific augmenter, even if the default one,
- * "!raw_syscalls:unaugmented" that will just return 1 to return the
- * unaugmented tracepoint payload.
+ * "!raw_syscalls:unaugmented" that will just output the unaugmented
+ * payload.
*/
if (augment_sys_enter(args, &augmented_args->args))
bpf_tail_call(args, &syscalls_sys_enter, augmented_args->args.syscall_nr);
- // If not found on the PROG_ARRAY syscalls map, then we're filtering it:
- return 0;
+ return 1;
}
SEC("tp/raw_syscalls/sys_exit")
int sys_exit(struct syscall_exit_args *args)
{
- struct syscall_exit_args exit_args;
+ struct augmented_args_payload *augmented_args;
if (!task_traced())
return 1;
if (pid_filter__has(&pids_filtered, getpid()))
- return 0;
+ return 1;
+
+ augmented_args = augmented_args_payload();
+ if (augmented_args == NULL)
+ return 1;
+
+ bpf_probe_read_kernel(&augmented_args->args, sizeof(*args), args);
+ augmented_args->args.common_type = SYSCALL_TRACE_EXIT;
- bpf_probe_read_kernel(&exit_args, sizeof(exit_args), args);
/*
* Jump to syscall specific return augmenter, even if the default one,
- * "!raw_syscalls:unaugmented" that will just return 1 to return the
- * unaugmented tracepoint payload.
+ * "!raw_syscalls:unaugmented" that will just output the unaugmented
+ * payload.
*/
- bpf_tail_call(args, &syscalls_sys_exit, exit_args.syscall_nr);
+ bpf_tail_call(args, &syscalls_sys_exit, augmented_args->args.syscall_nr);
/*
- * If not found on the PROG_ARRAY syscalls map, then we're filtering it:
+ * If not found on the PROG_ARRAY syscalls map, then we're filtering it
+ * by not emitting bpf-output event.
*/
- return 0;
+ return 1;
}
/* Trace the children of traced tasks, added before they can run. */
diff --git a/tools/perf/util/bpf_skel/perf_trace_u.h b/tools/perf/util/bpf_skel/perf_trace_u.h
new file mode 100644
index 000000000000..004ba96aaba9
--- /dev/null
+++ b/tools/perf/util/bpf_skel/perf_trace_u.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/* Copyright (c) 2025 Google */
+
+/* This file will be shared between BPF and userspace. */
+
+#ifndef __PERF_TRACE_U_H
+#define __PERF_TRACE_U_H
+
+enum syscall_trace_type {
+ SYSCALL_TRACE_ENTER = 0,
+ SYSCALL_TRACE_EXIT,
+};
+
+#endif /* __PERF_TRACE_U_H */
--
2.56.0.rc1.315.gc6ed9934b7-goog
next prev parent reply other threads:[~2026-09-28 18:26 UTC|newest]
Thread overview: 268+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 6:42 [PATCH v1 00/13] perf trace: Fix BPF filtering and make tracing tests non-exclusive Ian Rogers
2026-09-17 6:42 ` [PATCH v1 01/13] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-17 6:49 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 02/13] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
2026-09-17 6:52 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 03/13] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
2026-09-17 6:51 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 04/13] perf trace: Filter events in BPF and avoid tracepoint vetoes Ian Rogers
2026-09-17 6:56 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 05/13] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
2026-09-17 6:50 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 06/13] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
2026-09-17 6:49 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 07/13] perf test common: Do not globally disable tracing events in clear_all_probes Ian Rogers
2026-09-17 6:52 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 08/13] perf test probe_vfs_getname: Scope probe name to PID and make non-exclusive Ian Rogers
2026-09-17 6:48 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 09/13] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-17 6:49 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 10/13] perf test trace_summary: Improve error diagnostics Ian Rogers
2026-09-17 6:49 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 11/13] perf test trace_btf_general: Drop --max-events=1 and make non-exclusive Ian Rogers
2026-09-17 6:52 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 12/13] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-17 6:52 ` sashiko-bot
2026-09-17 6:42 ` [PATCH v1 13/13] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-17 6:52 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 00/14] perf trace: Fix BPF filtering and make tracing tests non-exclusive Ian Rogers
2026-09-17 16:38 ` [PATCH v2 01/14] perf trace: Include the headers declaring pid_t and strcmp Ian Rogers
2026-09-17 16:46 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 02/14] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-17 16:44 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 03/14] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
2026-09-17 16:50 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 04/14] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
2026-09-17 16:54 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 05/14] perf trace: Filter events in BPF and avoid tracepoint vetoes Ian Rogers
2026-09-17 16:50 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 06/14] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
2026-09-17 16:59 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 07/14] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
2026-09-17 16:47 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 08/14] perf test common: Do not globally disable tracing events in clear_all_probes Ian Rogers
2026-09-17 16:53 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 09/14] perf test probe_vfs_getname: Scope probe name to PID and make non-exclusive Ian Rogers
2026-09-17 16:52 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 10/14] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-17 16:57 ` sashiko-bot
2026-09-17 16:38 ` [PATCH v2 11/14] perf test trace_summary: Improve error diagnostics Ian Rogers
2026-09-17 16:51 ` sashiko-bot
2026-09-17 16:39 ` [PATCH v2 12/14] perf test trace_btf_general: Drop --max-events=1 and make non-exclusive Ian Rogers
2026-09-17 16:54 ` sashiko-bot
2026-09-17 16:39 ` [PATCH v2 13/14] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-17 16:55 ` sashiko-bot
2026-09-17 16:39 ` [PATCH v2 14/14] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-17 16:56 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 00/16] perf trace: Fix BPF filtering and make tracing tests non-exclusive Ian Rogers
2026-09-18 14:06 ` [PATCH v3 01/16] perf trace: Include the headers declaring pid_t, strcmp and assert Ian Rogers
2026-09-18 14:13 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 02/16] perf trace: Free the whole evsel_trace in evsel__put_and_free_priv Ian Rogers
2026-09-18 14:22 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 03/16] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-18 14:16 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 04/16] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
2026-09-18 14:28 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 05/16] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
2026-09-18 14:33 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 06/16] perf trace: Filter events in BPF and avoid tracepoint vetoes Ian Rogers
2026-09-18 14:31 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 07/16] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
2026-09-18 14:35 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 08/16] perf trace: Enumerate the target again once BPF is attached Ian Rogers
2026-09-18 14:47 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 09/16] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
2026-09-18 14:36 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 10/16] perf test common: Only disable probes in clear_all_probes Ian Rogers
2026-09-18 14:46 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 11/16] perf test probe_vfs_getname: Scope probe name to PID and make non-exclusive Ian Rogers
2026-09-18 14:41 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 12/16] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-18 14:45 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 13/16] perf test trace_summary: Improve error diagnostics Ian Rogers
2026-09-18 14:46 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 14/16] perf test trace_btf_general: Drop --max-events=1 and make non-exclusive Ian Rogers
2026-09-18 14:51 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 15/16] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-18 14:51 ` sashiko-bot
2026-09-18 14:06 ` [PATCH v3 16/16] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-18 21:19 ` [PATCH v4 00/18] perf trace: Fix BPF filtering and make tracing tests non-exclusive Ian Rogers
2026-09-18 21:19 ` [PATCH v4 01/18] perf trace: Include the headers declaring pid_t, strcmp and assert Ian Rogers
2026-09-18 21:25 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 02/18] perf trace: Free the whole evsel_trace in evsel__put_and_free_priv Ian Rogers
2026-09-18 21:28 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 03/18] perf evsel: Report an allocation failure as ENOMEM when setting filters Ian Rogers
2026-09-18 21:30 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 04/18] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-18 21:26 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 05/18] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
2026-09-18 21:28 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 06/18] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
2026-09-18 21:35 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 07/18] perf trace: Filter events in BPF and avoid tracepoint vetoes Ian Rogers
2026-09-18 21:29 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 08/18] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
2026-09-18 21:31 ` sashiko-bot
2026-09-18 22:00 ` Ian Rogers
2026-09-18 21:19 ` [PATCH v4 09/18] perf trace: Enumerate the target again once BPF is attached Ian Rogers
2026-09-18 21:32 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 10/18] perf trace: Drop targets that died before they were filtered Ian Rogers
2026-09-18 21:27 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 11/18] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
2026-09-18 21:23 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 12/18] perf test common: Only disable probes in clear_all_probes Ian Rogers
2026-09-18 21:26 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 13/18] perf test probe_vfs_getname: Scope probe name to PID and make non-exclusive Ian Rogers
2026-09-18 21:28 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 14/18] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-18 21:30 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 15/18] perf test trace_summary: Improve error diagnostics Ian Rogers
2026-09-18 21:27 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 16/18] perf test trace_btf_general: Drop --max-events=1 and make non-exclusive Ian Rogers
2026-09-18 21:31 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 17/18] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-18 21:31 ` sashiko-bot
2026-09-18 21:19 ` [PATCH v4 18/18] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-18 21:30 ` sashiko-bot
2026-09-22 13:11 ` [PATCH v4 00/18] perf trace: Fix BPF filtering and make tracing tests non-exclusive Arnaldo Carvalho de Melo
2026-09-22 22:43 ` Ian Rogers
2026-09-23 7:13 ` [PATCH v5 00/23] " Ian Rogers
2026-09-23 7:13 ` [PATCH v5 01/23] perf trace: Set the augmented arg header in the augmenters that omit it Ian Rogers
2026-09-23 7:25 ` sashiko-bot
2026-09-24 5:39 ` Namhyung Kim
2026-09-23 7:13 ` [PATCH v5 02/23] perf trace: Include the augmented arg header in nanosleep's payload length Ian Rogers
2026-09-23 7:25 ` sashiko-bot
2026-09-23 16:10 ` Ian Rogers
2026-09-23 7:13 ` [PATCH v5 03/23] perf trace: Include the headers declaring pid_t, strcmp and assert Ian Rogers
2026-09-23 7:20 ` sashiko-bot
2026-09-24 5:44 ` Namhyung Kim
2026-09-23 7:13 ` [PATCH v5 04/23] perf trace: Free the whole evsel_trace in evsel__put_and_free_priv Ian Rogers
2026-09-23 7:29 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 05/23] perf evsel: Report an allocation failure as ENOMEM when setting filters Ian Rogers
2026-09-23 7:23 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 06/23] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-23 7:21 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 07/23] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
2026-09-23 7:26 ` sashiko-bot
2026-09-24 6:44 ` Namhyung Kim
2026-09-23 7:13 ` [PATCH v5 08/23] perf trace: Bounds check augmented arguments before reading them Ian Rogers
2026-09-23 7:26 ` sashiko-bot
2026-09-24 6:58 ` Namhyung Kim
2026-09-23 7:13 ` [PATCH v5 09/23] perf trace: Bound the fixed size augmented argument beautifiers Ian Rogers
2026-09-23 7:22 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 10/23] perf trace: Do not read sample padding as an augmented argument Ian Rogers
2026-09-23 7:21 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 11/23] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
2026-09-23 7:22 ` sashiko-bot
2026-09-24 22:49 ` Namhyung Kim
2026-09-23 7:13 ` [PATCH v5 12/23] perf trace: Filter events in BPF and avoid tracepoint vetoes Ian Rogers
2026-09-23 7:27 ` sashiko-bot
2026-09-25 2:59 ` Namhyung Kim
2026-09-25 4:10 ` Ian Rogers
2026-09-23 7:13 ` [PATCH v5 13/23] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
2026-09-23 7:22 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 14/23] perf trace: Enumerate the target again once BPF is attached Ian Rogers
2026-09-23 7:29 ` sashiko-bot
2026-09-23 16:07 ` Ian Rogers
2026-09-23 7:13 ` [PATCH v5 15/23] perf trace: Drop targets that died before they were filtered Ian Rogers
2026-09-23 7:27 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 16/23] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
2026-09-23 7:24 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 17/23] perf test common: Only disable probes in clear_all_probes Ian Rogers
2026-09-23 7:27 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 18/23] perf test probe_vfs_getname: Scope probe name to PID and make non-exclusive Ian Rogers
2026-09-23 7:28 ` sashiko-bot
2026-09-23 7:13 ` [PATCH v5 19/23] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-23 7:28 ` sashiko-bot
2026-09-23 7:14 ` [PATCH v5 20/23] perf test trace_summary: Improve error diagnostics Ian Rogers
2026-09-23 7:23 ` sashiko-bot
2026-09-23 7:14 ` [PATCH v5 21/23] perf test trace_btf_general: Drop --max-events=1 and make non-exclusive Ian Rogers
2026-09-23 7:29 ` sashiko-bot
2026-09-23 7:14 ` [PATCH v5 22/23] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-23 7:35 ` sashiko-bot
2026-09-23 7:14 ` [PATCH v5 23/23] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-23 7:26 ` sashiko-bot
2026-09-24 7:05 ` [PATCH v5 00/23] perf trace: Fix BPF filtering and make tracing tests non-exclusive Namhyung Kim
2026-09-28 18:25 ` [PATCH v6 00/26] " Ian Rogers
2026-09-28 18:25 ` [PATCH v6 01/26] perf trace: Set the augmented arg header in the augmenters that omit it Ian Rogers
2026-09-28 18:41 ` sashiko-bot
2026-09-30 3:50 ` Namhyung Kim
2026-09-28 18:25 ` [PATCH v6 02/26] perf trace: Include the augmented arg header in nanosleep's payload length Ian Rogers
2026-09-28 18:38 ` sashiko-bot
2026-09-30 4:02 ` Namhyung Kim
2026-09-28 18:25 ` [PATCH v6 03/26] perf trace: Don't read sample padding as an augmented argument Ian Rogers
2026-09-28 18:36 ` sashiko-bot
2026-09-30 4:14 ` Namhyung Kim
2026-09-28 18:25 ` [PATCH v6 04/26] perf trace: Bounds check augmented arguments before reading them Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-30 4:15 ` Namhyung Kim
2026-09-30 18:20 ` Aaron Tomlin
2026-09-30 18:34 ` Arnaldo Carvalho de Melo
2026-09-28 18:25 ` [PATCH v6 05/26] perf trace: Bound the fixed size augmented argument beautifiers Ian Rogers
2026-09-28 18:34 ` sashiko-bot
2026-09-30 18:22 ` Aaron Tomlin
2026-09-30 18:37 ` Arnaldo Carvalho de Melo
2026-09-28 18:25 ` [PATCH v6 06/26] perf trace: Copy sockaddr arguments by their length Ian Rogers
2026-09-28 18:38 ` sashiko-bot
2026-09-30 19:14 ` Arnaldo Carvalho de Melo
2026-09-30 23:08 ` Namhyung Kim
2026-10-01 6:01 ` Ian Rogers
2026-10-01 15:32 ` Arnaldo Carvalho de Melo
2026-10-01 9:07 ` Arnaldo Carvalho de Melo
2026-10-01 17:17 ` Ian Rogers
2026-10-01 18:34 ` Arnaldo Carvalho de Melo
2026-10-02 6:54 ` [PATCH 1/2] perf trace: Only call bpf_get_current_pid_tgid() when filtering tasks Ian Rogers
2026-10-02 6:54 ` [PATCH 2/2] perf trace: Increase TRACE_AUG_MAX_BUF to 128 and document beauty_map encoding Ian Rogers
2026-10-02 9:14 ` sashiko-bot
2026-10-02 16:17 ` Arnaldo Carvalho de Melo
2026-10-02 20:04 ` Aaron Tomlin
2026-10-02 9:14 ` [PATCH 1/2] perf trace: Only call bpf_get_current_pid_tgid() when filtering tasks sashiko-bot
2026-10-02 16:17 ` Arnaldo Carvalho de Melo
2026-10-02 20:03 ` Aaron Tomlin
2026-09-28 18:25 ` [PATCH v6 07/26] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-28 18:35 ` sashiko-bot
2026-09-30 19:32 ` Aaron Tomlin
2026-09-28 18:25 ` [PATCH v6 08/26] perf trace: Stop at internal fields when walking syscall arguments Ian Rogers
2026-09-28 18:36 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 09/26] perf trace: Don't allocate syscall arg formats for internal fields Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 10/26] perf trace: Only take augmented arguments from the BPF output event Ian Rogers
2026-09-28 18:33 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 11/26] perf trace: Split unaugmented sys_exit program Ian Rogers
2026-09-28 18:35 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 12/26] perf trace: Use the CPU map index for the BPF output event's fds Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 13/26] perf trace: Destroy the BPF skeleton if it fails to load Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 14/26] perf thread_map: Add thread_map__tgid() Ian Rogers
2026-09-28 18:33 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 15/26] perf trace: Filter the target's tasks in BPF Ian Rogers
2026-09-28 18:39 ` sashiko-bot
2026-10-01 15:43 ` Arnaldo Carvalho de Melo
2026-10-01 16:36 ` Ian Rogers
2026-09-28 18:25 ` [PATCH v6 16/26] perf trace: Open the BPF output event on every CPU for task targets Ian Rogers
2026-09-28 18:36 ` sashiko-bot
2026-09-28 18:25 ` Ian Rogers [this message]
2026-09-28 18:46 ` [PATCH v6 17/26] perf trace: Do not return 0 from syscall tracepoint BPF sashiko-bot
2026-09-28 19:26 ` Ian Rogers
2026-09-28 18:25 ` [PATCH v6 18/26] perf trace: Remove unused code Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-30 19:34 ` Aaron Tomlin
2026-09-28 18:25 ` [PATCH v6 19/26] perf trace: Add an option to disable syscall augmentation Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-28 18:25 ` [PATCH v6 20/26] perf test common: Only disable probes in clear_all_probes Ian Rogers
2026-09-28 18:37 ` sashiko-bot
2026-09-28 18:26 ` [PATCH v6 21/26] perf test probe_vfs_getname: Scope probe name to PID and make non-exclusive Ian Rogers
2026-09-28 18:39 ` sashiko-bot
2026-09-28 18:26 ` [PATCH v6 22/26] perf test record+probe_libc_inet_pton: Scope event " Ian Rogers
2026-09-28 18:41 ` sashiko-bot
2026-09-28 18:26 ` [PATCH v6 23/26] perf test trace_summary: Improve error diagnostics Ian Rogers
2026-09-28 18:35 ` sashiko-bot
2026-09-28 18:26 ` [PATCH v6 24/26] perf test trace_btf_general: Drop --max-events=1 and make non-exclusive Ian Rogers
2026-09-28 18:39 ` sashiko-bot
2026-09-28 18:26 ` [PATCH v6 25/26] perf test: Remove exclusive tag from perf trace tests Ian Rogers
2026-09-28 18:40 ` sashiko-bot
2026-09-28 18:26 ` [PATCH v6 26/26] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-28 18:38 ` sashiko-bot
2026-09-30 17:32 ` [PATCH v6 00/26] perf trace: Fix BPF filtering and make tracing tests non-exclusive Arnaldo Carvalho de Melo
2026-10-01 6:47 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260928182605.3649015-18-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=atomlin@atomlin.com \
--cc=howardchu95@gmail.com \
--cc=james.clark@linaro.org \
--cc=jbrnak@redhat.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.