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: 139+ 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:42 ` [PATCH v1 02/13] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
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:42 ` [PATCH v1 04/13] perf trace: Filter events in BPF and avoid tracepoint vetoes Ian Rogers
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:42 ` [PATCH v1 06/13] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
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: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:42 ` [PATCH v1 09/13] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-17 6:42 ` [PATCH v1 10/13] perf test trace_summary: Improve error diagnostics Ian Rogers
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:42 ` [PATCH v1 12/13] perf test trace_summary: Make non-exclusive Ian Rogers
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 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:38 ` [PATCH v2 02/14] perf trace: Start BPF summary before starting workload Ian Rogers
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:38 ` [PATCH v2 04/14] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
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:38 ` [PATCH v2 06/14] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
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:38 ` [PATCH v2 08/14] perf test common: Do not globally disable tracing events in clear_all_probes Ian Rogers
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:38 ` [PATCH v2 10/14] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-17 16:38 ` [PATCH v2 11/14] perf test trace_summary: Improve error diagnostics Ian Rogers
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:39 ` [PATCH v2 13/14] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-17 16:39 ` [PATCH v2 14/14] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
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:06 ` [PATCH v3 02/16] perf trace: Free the whole evsel_trace in evsel__put_and_free_priv Ian Rogers
2026-09-18 14:06 ` [PATCH v3 03/16] perf trace: Start BPF summary before starting workload Ian Rogers
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:06 ` [PATCH v3 05/16] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
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:06 ` [PATCH v3 07/16] perf trace: Handle fork and exit directly in BPF filter maps Ian Rogers
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:06 ` [PATCH v3 09/16] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
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: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:06 ` [PATCH v3 12/16] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-18 14:06 ` [PATCH v3 13/16] perf test trace_summary: Improve error diagnostics Ian Rogers
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:06 ` [PATCH v3 15/16] perf test trace_summary: Make non-exclusive Ian Rogers
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:19 ` [PATCH v4 02/18] perf trace: Free the whole evsel_trace in evsel__put_and_free_priv Ian Rogers
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:19 ` [PATCH v4 04/18] perf trace: Start BPF summary before starting workload Ian Rogers
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:19 ` [PATCH v4 06/18] perf trace: Do not set unaugmented BPF program on sys_exit map Ian Rogers
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:19 ` [PATCH v4 08/18] perf trace: Handle fork and exit directly in BPF filter maps 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:19 ` [PATCH v4 10/18] perf trace: Drop targets that died before they were filtered Ian Rogers
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:19 ` [PATCH v4 12/18] perf test common: Only disable probes in clear_all_probes Ian Rogers
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:19 ` [PATCH v4 14/18] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-18 21:19 ` [PATCH v4 15/18] perf test trace_summary: Improve error diagnostics Ian Rogers
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:19 ` [PATCH v4 17/18] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-18 21:19 ` [PATCH v4 18/18] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
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-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:13 ` [PATCH v5 03/23] perf trace: Include the headers declaring pid_t, strcmp and assert Ian Rogers
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:13 ` [PATCH v5 05/23] perf evsel: Report an allocation failure as ENOMEM when setting filters Ian Rogers
2026-09-23 7:13 ` [PATCH v5 06/23] perf trace: Start BPF summary before starting workload Ian Rogers
2026-09-23 7:13 ` [PATCH v5 07/23] perf trace: Skip internal tracepoint fields in formatting and beauty map Ian Rogers
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-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:13 ` [PATCH v5 10/23] perf trace: Do not read sample padding as an augmented argument Ian Rogers
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-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-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:13 ` [PATCH v5 14/23] perf trace: Enumerate the target again once BPF is attached 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:13 ` [PATCH v5 16/23] perf test test_task_analyzer: Isolate in temporary directory and make non-exclusive Ian Rogers
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: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:13 ` [PATCH v5 19/23] perf test record+probe_libc_inet_pton: Scope event to PID, add retries, " Ian Rogers
2026-09-23 7:14 ` [PATCH v5 20/23] perf test trace_summary: Improve error diagnostics Ian Rogers
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:14 ` [PATCH v5 22/23] perf test trace_summary: Make non-exclusive Ian Rogers
2026-09-23 7:14 ` [PATCH v5 23/23] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
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-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-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-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-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-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-30 19:14 ` Arnaldo Carvalho de Melo
2026-09-30 23:08 ` Namhyung Kim
2026-09-28 18:25 ` [PATCH v6 07/26] perf trace: Start BPF summary before starting workload Ian Rogers
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:25 ` [PATCH v6 09/26] perf trace: Don't allocate syscall arg formats for internal fields Ian Rogers
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:25 ` [PATCH v6 11/26] perf trace: Split unaugmented sys_exit program Ian Rogers
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:25 ` [PATCH v6 13/26] perf trace: Destroy the BPF skeleton if it fails to load Ian Rogers
2026-09-28 18:25 ` [PATCH v6 14/26] perf thread_map: Add thread_map__tgid() Ian Rogers
2026-09-28 18:25 ` [PATCH v6 15/26] perf trace: Filter the target's tasks in BPF 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:25 ` Ian Rogers [this message]
2026-09-28 18:25 ` [PATCH v6 18/26] perf trace: Remove unused code Ian Rogers
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:25 ` [PATCH v6 20/26] perf test common: Only disable probes in clear_all_probes Ian Rogers
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:26 ` [PATCH v6 22/26] perf test record+probe_libc_inet_pton: Scope event " Ian Rogers
2026-09-28 18:26 ` [PATCH v6 23/26] perf test trace_summary: Improve error diagnostics Ian Rogers
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:26 ` [PATCH v6 25/26] perf test: Remove exclusive tag from perf trace tests Ian Rogers
2026-09-28 18:26 ` [PATCH v6 26/26] perf test uprobe_from_different_cu: Scope probe name to PID Ian Rogers
2026-09-30 17:32 ` [PATCH v6 00/26] perf trace: Fix BPF filtering and make tracing tests non-exclusive Arnaldo Carvalho de Melo
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®