[PATCH V5 00/12] perf/core: Add ability for an event to "pause" or "resume" AUX area tracing

From: Adrian Hunter
Date: Thu Feb 08 2024 - 06:31:56 EST


Hi

Hardware traces, such as instruction traces, can produce a vast amount of
trace data, so being able to reduce tracing to more specific circumstances
can be useful.

The ability to pause or resume tracing when another event happens, can do
that.

These patches add such a facilty and show how it would work for Intel
Processor Trace.

Maintainers of other AUX area tracing implementations are requested to
consider if this is something they might employ and then whether or not
the ABI would work for them. Note, thank you to James Clark (ARM) for
evaluating the API for Coresight. Suzuki K Poulose (ARM) also responded
positively to the RFC.

Changes to perf tools are now (since V4) fleshed out.


Changes in V5:

perf/core: Add aux_pause, aux_resume, aux_start_paused
Added James' Ack

perf/x86/intel: Do not enable large PEBS for events with aux actions or aux sampling
New patch

perf tools
Added Ian's Ack

Changes in V4:

perf/core: Add aux_pause, aux_resume, aux_start_paused
Rename aux_output_cfg -> aux_action
Reorder aux_action bits from:
aux_pause, aux_resume, aux_start_paused
to:
aux_start_paused, aux_pause, aux_resume
Fix aux_action bits __u64 -> __u32

coresight: Have a stab at support for pause / resume
Dropped

perf tools
All new patches

Changes in RFC V3:

coresight: Have a stab at support for pause / resume
'mode' -> 'flags' so it at least compiles

Changes in RFC V2:

Use ->stop() / ->start() instead of ->pause_resume()
Move aux_start_paused bit into aux_output_cfg
Tighten up when Intel PT pause / resume is allowed
Add an example of how it might work for CoreSight


Adrian Hunter (12):
perf/core: Add aux_pause, aux_resume, aux_start_paused
perf/x86/intel/pt: Add support for pause / resume
perf/x86/intel: Do not enable large PEBS for events with aux actions or aux sampling
perf tools: Enable evsel__is_aux_event() to work for ARM/ARM64
perf tools: Enable evsel__is_aux_event() to work for S390_CPUMSF
perf tools: Add aux_start_paused, aux_pause and aux_resume
perf tools: Add aux-action config term
perf tools: Parse aux-action
perf tools: Add missing_features for aux_start_paused, aux_pause, aux_resume
perf intel-pt: Improve man page format
perf intel-pt: Add documentation for pause / resume
perf intel-pt: Add a test for pause / resume

arch/x86/events/intel/core.c | 10 +-
arch/x86/events/intel/pt.c | 63 ++-
arch/x86/events/intel/pt.h | 4 +
include/linux/perf_event.h | 15 +
include/uapi/linux/perf_event.h | 11 +-
kernel/events/core.c | 72 +++-
kernel/events/internal.h | 1 +
tools/include/uapi/linux/perf_event.h | 11 +-
tools/perf/Documentation/perf-intel-pt.txt | 596 ++++++++++++++++++-----------
tools/perf/Documentation/perf-record.txt | 4 +
tools/perf/arch/arm/util/pmu.c | 3 +
tools/perf/builtin-record.c | 4 +-
tools/perf/tests/shell/test_intel_pt.sh | 28 ++
tools/perf/util/auxtrace.c | 67 +++-
tools/perf/util/auxtrace.h | 6 +-
tools/perf/util/evsel.c | 13 +-
tools/perf/util/evsel.h | 1 +
tools/perf/util/evsel_config.h | 1 +
tools/perf/util/parse-events.c | 10 +
tools/perf/util/parse-events.h | 1 +
tools/perf/util/parse-events.l | 1 +
tools/perf/util/perf_event_attr_fprintf.c | 3 +
tools/perf/util/pmu.c | 6 +-
23 files changed, 691 insertions(+), 240 deletions(-)


Regards
Adrian