Re: [PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number
Em Wed, Jan 20, 2021 at 10:50:04PM +0100, Jiri Olsa escreveu: > On Wed, Dec 09, 2020 at 08:58:28AM +0800, Jin Yao wrote: > > After: > > swapper 0 [000] 1397040.402011: 272384 > > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > > swapper 0 [000] 1397040.402011: 5396 > > uncore_imc/data_reads/: > > swapper 0 [000] 1397040.402011:967 > > uncore_imc/data_writes/: > > swapper 0 [000] 1397040.402259: 249153 > > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > > swapper 0 [000] 1397040.402259: 7231 > > uncore_imc/data_reads/: > > swapper 0 [000] 1397040.402259: 1297 > > uncore_imc/data_writes/: > > swapper 0 [000] 1397040.402508: 249108 > > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > > swapper 0 [000] 1397040.402508: 5333 > > uncore_imc/data_reads/: > > swapper 0 [000] 1397040.402508: 1008 > > uncore_imc/data_writes/: > > > > Signed-off-by: Jin Yao > > --- > > v2: > > Remove Fixes tag because this issue has always been here, not caused by > > 1405720d4f26 ("perf script: Add 'synth' event type for synthesized > > events"). > > No functional change in v2. > > Acked-by: Jiri Olsa Thanks, applied. - Arnaldo
Re: [PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number
On Wed, Dec 09, 2020 at 08:58:28AM +0800, Jin Yao wrote: > When unpacking the event which is from dynamic pmu, the array > output[OUTPUT_TYPE_MAX] may be overrun. For example, type number of > SKL uncore_imc is 10, but OUTPUT_TYPE_MAX is 7 now (OUTPUT_TYPE_MAX = > PERF_TYPE_MAX + 1). > > /* In builtin-script.c */ > process_event() > { > unsigned int type = output_type(attr->type); > > if (output[type].fields == 0) > return; > } > > output[10] is overrun. > > Create a type OUTPUT_TYPE_OTHER for dynamic pmu events, then > output_type(attr->type) will return OUTPUT_TYPE_OTHER here. > > Note that if PERF_TYPE_MAX ever changed, then there would be a conflict > between old perf.data files that had a dynamicaliy allocated PMU number > that would then be the same as a fixed PERF_TYPE. > > Example: > > perf record --switch-events -C 0 -e > "{cpu-clock,uncore_imc/data_reads/,uncore_imc/data_writes/}:SD" -a -- sleep 1 > perf script > > Before: > swapper 0 [000] 1479253.987551: 277766 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.987797: 246709 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988127: 329883 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988273: 146393 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988523: 249977 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988877: 354090 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.989023: 145940 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.989383: 359856 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.989523: 140082 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > > After: > swapper 0 [000] 1397040.402011: 272384 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1397040.402011: 5396 > uncore_imc/data_reads/: > swapper 0 [000] 1397040.402011:967 > uncore_imc/data_writes/: > swapper 0 [000] 1397040.402259: 249153 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1397040.402259: 7231 > uncore_imc/data_reads/: > swapper 0 [000] 1397040.402259: 1297 > uncore_imc/data_writes/: > swapper 0 [000] 1397040.402508: 249108 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1397040.402508: 5333 > uncore_imc/data_reads/: > swapper 0 [000] 1397040.402508: 1008 > uncore_imc/data_writes/: > > Signed-off-by: Jin Yao > --- > v2: > Remove Fixes tag because this issue has always been here, not caused by > 1405720d4f26 ("perf script: Add 'synth' event type for synthesized events"). > No functional change in v2. Acked-by: Jiri Olsa thanks, jirka
Re: [PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number
Hi Arnaldo, Jiri, On 12/25/2020 9:10 AM, Jin, Yao wrote: Hi Arnaldo, Jiri, On 12/11/2020 2:10 PM, Adrian Hunter wrote: On 9/12/20 2:58 am, Jin Yao wrote: When unpacking the event which is from dynamic pmu, the array output[OUTPUT_TYPE_MAX] may be overrun. For example, type number of SKL uncore_imc is 10, but OUTPUT_TYPE_MAX is 7 now (OUTPUT_TYPE_MAX = PERF_TYPE_MAX + 1). /* In builtin-script.c */ process_event() { unsigned int type = output_type(attr->type); if (output[type].fields == 0) return; } output[10] is overrun. Create a type OUTPUT_TYPE_OTHER for dynamic pmu events, then output_type(attr->type) will return OUTPUT_TYPE_OTHER here. Note that if PERF_TYPE_MAX ever changed, then there would be a conflict between old perf.data files that had a dynamicaliy allocated PMU number that would then be the same as a fixed PERF_TYPE. Example: perf record --switch-events -C 0 -e "{cpu-clock,uncore_imc/data_reads/,uncore_imc/data_writes/}:SD" -a -- sleep 1 perf script Before: swapper 0 [000] 1479253.987551: 277766 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.987797: 246709 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988127: 329883 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988273: 146393 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988523: 249977 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988877: 354090 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989023: 145940 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989383: 359856 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989523: 140082 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) After: swapper 0 [000] 1397040.402011: 272384 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402011: 5396 uncore_imc/data_reads/: swapper 0 [000] 1397040.402011: 967 uncore_imc/data_writes/: swapper 0 [000] 1397040.402259: 249153 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402259: 7231 uncore_imc/data_reads/: swapper 0 [000] 1397040.402259: 1297 uncore_imc/data_writes/: swapper 0 [000] 1397040.402508: 249108 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402508: 5333 uncore_imc/data_reads/: swapper 0 [000] 1397040.402508: 1008 uncore_imc/data_writes/: Signed-off-by: Jin Yao Acked-by: Adrian Hunter Can this patch be accepted? :) Thanks Jin Yao Can this bug fix be accepted or anything else I need to improve? Thanks Jin Yao
Re: [PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number
Hi Arnaldo, Jiri, On 12/11/2020 2:10 PM, Adrian Hunter wrote: On 9/12/20 2:58 am, Jin Yao wrote: When unpacking the event which is from dynamic pmu, the array output[OUTPUT_TYPE_MAX] may be overrun. For example, type number of SKL uncore_imc is 10, but OUTPUT_TYPE_MAX is 7 now (OUTPUT_TYPE_MAX = PERF_TYPE_MAX + 1). /* In builtin-script.c */ process_event() { unsigned int type = output_type(attr->type); if (output[type].fields == 0) return; } output[10] is overrun. Create a type OUTPUT_TYPE_OTHER for dynamic pmu events, then output_type(attr->type) will return OUTPUT_TYPE_OTHER here. Note that if PERF_TYPE_MAX ever changed, then there would be a conflict between old perf.data files that had a dynamicaliy allocated PMU number that would then be the same as a fixed PERF_TYPE. Example: perf record --switch-events -C 0 -e "{cpu-clock,uncore_imc/data_reads/,uncore_imc/data_writes/}:SD" -a -- sleep 1 perf script Before: swapper 0 [000] 1479253.987551: 277766 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.987797: 246709 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988127: 329883 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988273: 146393 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988523: 249977 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988877: 354090 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989023: 145940 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989383: 359856 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989523: 140082 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) After: swapper 0 [000] 1397040.402011: 272384 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402011: 5396 uncore_imc/data_reads/: swapper 0 [000] 1397040.402011:967 uncore_imc/data_writes/: swapper 0 [000] 1397040.402259: 249153 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402259: 7231 uncore_imc/data_reads/: swapper 0 [000] 1397040.402259: 1297 uncore_imc/data_writes/: swapper 0 [000] 1397040.402508: 249108 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402508: 5333 uncore_imc/data_reads/: swapper 0 [000] 1397040.402508: 1008 uncore_imc/data_writes/: Signed-off-by: Jin Yao Acked-by: Adrian Hunter Can this patch be accepted? :) Thanks Jin Yao --- v2: Remove Fixes tag because this issue has always been here, not caused by 1405720d4f26 ("perf script: Add 'synth' event type for synthesized events"). No functional change in v2. tools/perf/builtin-script.c | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 1c322c129185..5d8a64836228 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -183,6 +183,7 @@ struct output_option { enum { OUTPUT_TYPE_SYNTH = PERF_TYPE_MAX, + OUTPUT_TYPE_OTHER, OUTPUT_TYPE_MAX }; @@ -279,6 +280,18 @@ static struct { .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, }, + + [OUTPUT_TYPE_OTHER] = { + .user_set = false, + + .fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID | + PERF_OUTPUT_CPU | PERF_OUTPUT_TIME | + PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP | + PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET | + PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD, + + .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, + }, }; struct evsel_script { @@ -339,8 +352,11 @@ static inline int output_type(unsigned int type) case PERF_TYPE_SYNTH: return OUTPUT_TYPE_SYNTH; default: - return type; + if (type < PERF_TYPE_MAX) + return type; } + + return OUTPUT_TYPE_OTHER; } static inline unsigned int attr_type(unsigned
Re: [PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number
On 9/12/20 2:58 am, Jin Yao wrote: > When unpacking the event which is from dynamic pmu, the array > output[OUTPUT_TYPE_MAX] may be overrun. For example, type number of > SKL uncore_imc is 10, but OUTPUT_TYPE_MAX is 7 now (OUTPUT_TYPE_MAX = > PERF_TYPE_MAX + 1). > > /* In builtin-script.c */ > process_event() > { > unsigned int type = output_type(attr->type); > > if (output[type].fields == 0) > return; > } > > output[10] is overrun. > > Create a type OUTPUT_TYPE_OTHER for dynamic pmu events, then > output_type(attr->type) will return OUTPUT_TYPE_OTHER here. > > Note that if PERF_TYPE_MAX ever changed, then there would be a conflict > between old perf.data files that had a dynamicaliy allocated PMU number > that would then be the same as a fixed PERF_TYPE. > > Example: > > perf record --switch-events -C 0 -e > "{cpu-clock,uncore_imc/data_reads/,uncore_imc/data_writes/}:SD" -a -- sleep 1 > perf script > > Before: > swapper 0 [000] 1479253.987551: 277766 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.987797: 246709 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988127: 329883 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988273: 146393 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988523: 249977 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.988877: 354090 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.989023: 145940 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.989383: 359856 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1479253.989523: 140082 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > > After: > swapper 0 [000] 1397040.402011: 272384 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1397040.402011: 5396 > uncore_imc/data_reads/: > swapper 0 [000] 1397040.402011:967 > uncore_imc/data_writes/: > swapper 0 [000] 1397040.402259: 249153 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1397040.402259: 7231 > uncore_imc/data_reads/: > swapper 0 [000] 1397040.402259: 1297 > uncore_imc/data_writes/: > swapper 0 [000] 1397040.402508: 249108 > cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) > swapper 0 [000] 1397040.402508: 5333 > uncore_imc/data_reads/: > swapper 0 [000] 1397040.402508: 1008 > uncore_imc/data_writes/: > > Signed-off-by: Jin Yao Acked-by: Adrian Hunter > --- > v2: > Remove Fixes tag because this issue has always been here, not caused by > 1405720d4f26 ("perf script: Add 'synth' event type for synthesized events"). > No functional change in v2. > > tools/perf/builtin-script.c | 18 +- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index 1c322c129185..5d8a64836228 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -183,6 +183,7 @@ struct output_option { > > enum { > OUTPUT_TYPE_SYNTH = PERF_TYPE_MAX, > + OUTPUT_TYPE_OTHER, > OUTPUT_TYPE_MAX > }; > > @@ -279,6 +280,18 @@ static struct { > > .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, > }, > + > + [OUTPUT_TYPE_OTHER] = { > + .user_set = false, > + > + .fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID | > + PERF_OUTPUT_CPU | PERF_OUTPUT_TIME | > + PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP | > + PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET | > + PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD, > + > + .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, > + }, > }; > > struct evsel_script { > @@ -339,8 +352,11 @@ static inline int output_type(unsigned int type) > case PERF_TYPE_SYNTH: > return OUTPUT_TYPE_SYNTH; > default: > - return type; > + if (type < PERF_TYPE_MAX) > + return type; > } > + > + return OUTPUT_TYPE_OTHER; > }
[PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number
When unpacking the event which is from dynamic pmu, the array output[OUTPUT_TYPE_MAX] may be overrun. For example, type number of SKL uncore_imc is 10, but OUTPUT_TYPE_MAX is 7 now (OUTPUT_TYPE_MAX = PERF_TYPE_MAX + 1). /* In builtin-script.c */ process_event() { unsigned int type = output_type(attr->type); if (output[type].fields == 0) return; } output[10] is overrun. Create a type OUTPUT_TYPE_OTHER for dynamic pmu events, then output_type(attr->type) will return OUTPUT_TYPE_OTHER here. Note that if PERF_TYPE_MAX ever changed, then there would be a conflict between old perf.data files that had a dynamicaliy allocated PMU number that would then be the same as a fixed PERF_TYPE. Example: perf record --switch-events -C 0 -e "{cpu-clock,uncore_imc/data_reads/,uncore_imc/data_writes/}:SD" -a -- sleep 1 perf script Before: swapper 0 [000] 1479253.987551: 277766 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.987797: 246709 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988127: 329883 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988273: 146393 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988523: 249977 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.988877: 354090 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989023: 145940 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989383: 359856 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1479253.989523: 140082 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) After: swapper 0 [000] 1397040.402011: 272384 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402011: 5396 uncore_imc/data_reads/: swapper 0 [000] 1397040.402011:967 uncore_imc/data_writes/: swapper 0 [000] 1397040.402259: 249153 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402259: 7231 uncore_imc/data_reads/: swapper 0 [000] 1397040.402259: 1297 uncore_imc/data_writes/: swapper 0 [000] 1397040.402508: 249108 cpu-clock: 9d4ddb6f cpuidle_enter_state+0xdf ([kernel.kallsyms]) swapper 0 [000] 1397040.402508: 5333 uncore_imc/data_reads/: swapper 0 [000] 1397040.402508: 1008 uncore_imc/data_writes/: Signed-off-by: Jin Yao --- v2: Remove Fixes tag because this issue has always been here, not caused by 1405720d4f26 ("perf script: Add 'synth' event type for synthesized events"). No functional change in v2. tools/perf/builtin-script.c | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 1c322c129185..5d8a64836228 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -183,6 +183,7 @@ struct output_option { enum { OUTPUT_TYPE_SYNTH = PERF_TYPE_MAX, + OUTPUT_TYPE_OTHER, OUTPUT_TYPE_MAX }; @@ -279,6 +280,18 @@ static struct { .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, }, + + [OUTPUT_TYPE_OTHER] = { + .user_set = false, + + .fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID | + PERF_OUTPUT_CPU | PERF_OUTPUT_TIME | + PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP | + PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET | + PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD, + + .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, + }, }; struct evsel_script { @@ -339,8 +352,11 @@ static inline int output_type(unsigned int type) case PERF_TYPE_SYNTH: return OUTPUT_TYPE_SYNTH; default: - return type; + if (type < PERF_TYPE_MAX) + return type; } + + return OUTPUT_TYPE_OTHER; } static inline unsigned int attr_type(unsigned int type) -- 2.17.1