Messages in this thread Patch in this message | | | From | Arnaldo Carvalho de Melo <> | Date | Thu, 21 Nov 2019 10:57:17 -0300 | Subject | Re: [PATCH 01/15] perf tools: Add kernel AUX area sampling definitions |
| |
Em Fri, Nov 15, 2019 at 02:42:11PM +0200, Adrian Hunter escreveu: > Add kernel AUX area sampling definitions, which brings perf_event.h into > line with the kernel version. > > New sample type PERF_SAMPLE_AUX requests a sample of the AUX area buffer. > New perf_event_attr member 'aux_sample_size' specifies the desired size of > the sample.
I squashed the first two patches in this series and added this note:
Committer notes:
I squashed the first two patches in this series to avoid breaking automatic bisection, i.e. after applying only the original first patch in this series we would have:
# perf test -v parsing 26: Sample parsing : --- start --- test child forked, pid 17018 sample format has changed, some new PERF_SAMPLE_ bit was introduced - test needs updating test child finished with -1 ---- end ---- Sample parsing: FAILED! #
With the two paches combined:
# perf test parsing 26: Sample parsing : Ok #
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> > --- > tools/include/uapi/linux/perf_event.h | 10 ++++++++-- > tools/perf/tests/attr/base-record | 2 +- > tools/perf/tests/attr/base-stat | 2 +- > tools/perf/util/perf_event_attr_fprintf.c | 1 + > tools/perf/util/session.c | 1 + > 5 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/linux/perf_event.h > index bb7b271397a6..377d794d3105 100644 > --- a/tools/include/uapi/linux/perf_event.h > +++ b/tools/include/uapi/linux/perf_event.h > @@ -141,8 +141,9 @@ enum perf_event_sample_format { > PERF_SAMPLE_TRANSACTION = 1U << 17, > PERF_SAMPLE_REGS_INTR = 1U << 18, > PERF_SAMPLE_PHYS_ADDR = 1U << 19, > + PERF_SAMPLE_AUX = 1U << 20, > > - PERF_SAMPLE_MAX = 1U << 20, /* non-ABI */ > + PERF_SAMPLE_MAX = 1U << 21, /* non-ABI */ > > __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63, /* non-ABI; internal use */ > }; > @@ -300,6 +301,7 @@ enum perf_event_read_format { > /* add: sample_stack_user */ > #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */ > #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */ > +#define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ > > /* > * Hardware event_id to monitor via a performance monitoring event: > @@ -424,7 +426,9 @@ struct perf_event_attr { > */ > __u32 aux_watermark; > __u16 sample_max_stack; > - __u16 __reserved_2; /* align to __u64 */ > + __u16 __reserved_2; > + __u32 aux_sample_size; > + __u32 __reserved_3; > }; > > /* > @@ -864,6 +868,8 @@ enum perf_event_type { > * { u64 abi; # enum perf_sample_regs_abi > * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_INTR > * { u64 phys_addr;} && PERF_SAMPLE_PHYS_ADDR > + * { u64 size; > + * char data[size]; } && PERF_SAMPLE_AUX > * }; > */ > PERF_RECORD_SAMPLE = 9, > diff --git a/tools/perf/tests/attr/base-record b/tools/perf/tests/attr/base-record > index efd0157b9d22..645009c08b3c 100644 > --- a/tools/perf/tests/attr/base-record > +++ b/tools/perf/tests/attr/base-record > @@ -5,7 +5,7 @@ group_fd=-1 > flags=0|8 > cpu=* > type=0|1 > -size=112 > +size=120 > config=0 > sample_period=* > sample_type=263 > diff --git a/tools/perf/tests/attr/base-stat b/tools/perf/tests/attr/base-stat > index 4d0c2e42b64e..b0f42c34882e 100644 > --- a/tools/perf/tests/attr/base-stat > +++ b/tools/perf/tests/attr/base-stat > @@ -5,7 +5,7 @@ group_fd=-1 > flags=0|8 > cpu=* > type=0 > -size=112 > +size=120 > config=0 > sample_period=0 > sample_type=65536 > diff --git a/tools/perf/util/perf_event_attr_fprintf.c b/tools/perf/util/perf_event_attr_fprintf.c > index d4ad3f04923a..06add607e72d 100644 > --- a/tools/perf/util/perf_event_attr_fprintf.c > +++ b/tools/perf/util/perf_event_attr_fprintf.c > @@ -143,6 +143,7 @@ int perf_event_attr__fprintf(FILE *fp, struct perf_event_attr *attr, > PRINT_ATTRf(sample_regs_intr, p_hex); > PRINT_ATTRf(aux_watermark, p_unsigned); > PRINT_ATTRf(sample_max_stack, p_unsigned); > + PRINT_ATTRf(aux_sample_size, p_unsigned); > > return ret; > } > diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c > index f07b8ecb91bc..eb7ffd5524dc 100644 > --- a/tools/perf/util/session.c > +++ b/tools/perf/util/session.c > @@ -752,6 +752,7 @@ do { \ > bswap_field_32(sample_stack_user); > bswap_field_32(aux_watermark); > bswap_field_16(sample_max_stack); > + bswap_field_32(aux_sample_size); > > /* > * After read_format are bitfields. Check read_format because > -- > 2.17.1
--
- Arnaldo
| |