Re: [PATCH v2] perf script: Fix overrun issue for dynamically-allocated pmu type number

2021-01-21 Thread Arnaldo Carvalho de Melo
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

2021-01-20 Thread Jiri Olsa
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

2021-01-18 Thread Jin, Yao

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

2020-12-24 Thread Jin, Yao

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

2020-12-10 Thread Adrian Hunter
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

2020-12-08 Thread Jin Yao
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