[PATCH v2 01/43] perf stat: Disable TopdownL1 on hybrid

Ian Rogers posted 43 patches 2 years, 9 months ago
There is a newer version of this series
[PATCH v2 01/43] perf stat: Disable TopdownL1 on hybrid
Posted by Ian Rogers 2 years, 9 months ago
Bugs with event parsing, event grouping and metrics causes the
TopdownL1 metricgroup to crash the perf command. Temporarily disable
the group if no events/metrics are spcecified.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/builtin-stat.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index efda63f6bf32..be9677aa642f 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1885,7 +1885,12 @@ static int add_default_attributes(void)
 		 * Add TopdownL1 metrics if they exist. To minimize
 		 * multiplexing, don't request threshold computation.
 		 */
-		if (metricgroup__has_metric("TopdownL1") &&
+		/*
+		 * TODO: TopdownL1 is disabled on hybrid CPUs to avoid a crashes
+		 * caused by exposing latent bugs. This is fixed properly in:
+		 * https://lore.kernel.org/lkml/bff481ba-e60a-763f-0aa0-3ee53302c480@linux.intel.com/
+		 */
+		if (metricgroup__has_metric("TopdownL1") && !perf_pmu__has_hybrid() &&
 		    metricgroup__parse_groups(evsel_list, "TopdownL1",
 					    /*metric_no_group=*/false,
 					    /*metric_no_merge=*/false,
@@ -1894,6 +1899,7 @@ static int add_default_attributes(void)
 					    stat_config.system_wide,
 					    &stat_config.metric_events) < 0)
 			return -1;
+
 		/* Platform specific attrs */
 		if (evlist__add_default_attrs(evsel_list, default_null_attrs) < 0)
 			return -1;
-- 
2.40.1.495.gc816e09b53d-goog
Re: [PATCH v2 01/43] perf stat: Disable TopdownL1 on hybrid
Posted by Liang, Kan 2 years, 9 months ago

On 2023-04-28 3:37 a.m., Ian Rogers wrote:
> Bugs with event parsing, event grouping and metrics causes the
> TopdownL1 metricgroup to crash the perf command. Temporarily disable
> the group if no events/metrics are spcecified.
> 

I think it's OK to only disable the metric for perf stat default
temporarily on hybrid as a workaround for 6.4.
Now, the only problem is the default of perf stat on pre-icl in 6.4.

> Signed-off-by: Ian Rogers <irogers@google.com>

Reviewed-by: Kan Liang <kan.liang@linux.intel.com>

Arnaldo, could you please back port this for 6.4 as well?

Thanks,
Kan
> ---
>  tools/perf/builtin-stat.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index efda63f6bf32..be9677aa642f 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -1885,7 +1885,12 @@ static int add_default_attributes(void)
>  		 * Add TopdownL1 metrics if they exist. To minimize
>  		 * multiplexing, don't request threshold computation.
>  		 */
> -		if (metricgroup__has_metric("TopdownL1") &&
> +		/*
> +		 * TODO: TopdownL1 is disabled on hybrid CPUs to avoid a crashes
> +		 * caused by exposing latent bugs. This is fixed properly in:
> +		 * https://lore.kernel.org/lkml/bff481ba-e60a-763f-0aa0-3ee53302c480@linux.intel.com/
> +		 */
> +		if (metricgroup__has_metric("TopdownL1") && !perf_pmu__has_hybrid() &&
>  		    metricgroup__parse_groups(evsel_list, "TopdownL1",
>  					    /*metric_no_group=*/false,
>  					    /*metric_no_merge=*/false,
> @@ -1894,6 +1899,7 @@ static int add_default_attributes(void)
>  					    stat_config.system_wide,
>  					    &stat_config.metric_events) < 0)
>  			return -1;
> +
>  		/* Platform specific attrs */
>  		if (evlist__add_default_attrs(evsel_list, default_null_attrs) < 0)
>  			return -1;
Re: [PATCH v2 01/43] perf stat: Disable TopdownL1 on hybrid
Posted by Arnaldo Carvalho de Melo 2 years, 9 months ago
Em Fri, Apr 28, 2023 at 09:31:30AM -0400, Liang, Kan escreveu:
> 
> 
> On 2023-04-28 3:37 a.m., Ian Rogers wrote:
> > Bugs with event parsing, event grouping and metrics causes the
> > TopdownL1 metricgroup to crash the perf command. Temporarily disable
> > the group if no events/metrics are spcecified.
> > 
> 
> I think it's OK to only disable the metric for perf stat default
> temporarily on hybrid as a workaround for 6.4.
> Now, the only problem is the default of perf stat on pre-icl in 6.4.
> 
> > Signed-off-by: Ian Rogers <irogers@google.com>
> 
> Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
> 
> Arnaldo, could you please back port this for 6.4 as well?

Sure, picking this one now
 
> Thanks,
> Kan
> > ---
> >  tools/perf/builtin-stat.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> > index efda63f6bf32..be9677aa642f 100644
> > --- a/tools/perf/builtin-stat.c
> > +++ b/tools/perf/builtin-stat.c
> > @@ -1885,7 +1885,12 @@ static int add_default_attributes(void)
> >  		 * Add TopdownL1 metrics if they exist. To minimize
> >  		 * multiplexing, don't request threshold computation.
> >  		 */
> > -		if (metricgroup__has_metric("TopdownL1") &&
> > +		/*
> > +		 * TODO: TopdownL1 is disabled on hybrid CPUs to avoid a crashes
> > +		 * caused by exposing latent bugs. This is fixed properly in:
> > +		 * https://lore.kernel.org/lkml/bff481ba-e60a-763f-0aa0-3ee53302c480@linux.intel.com/
> > +		 */
> > +		if (metricgroup__has_metric("TopdownL1") && !perf_pmu__has_hybrid() &&
> >  		    metricgroup__parse_groups(evsel_list, "TopdownL1",
> >  					    /*metric_no_group=*/false,
> >  					    /*metric_no_merge=*/false,
> > @@ -1894,6 +1899,7 @@ static int add_default_attributes(void)
> >  					    stat_config.system_wide,
> >  					    &stat_config.metric_events) < 0)
> >  			return -1;
> > +
> >  		/* Platform specific attrs */
> >  		if (evlist__add_default_attrs(evsel_list, default_null_attrs) < 0)
> >  			return -1;

-- 

- Arnaldo