[PATCH v1 13/40] perf parse-events: Set attr.type to PMU type early

Ian Rogers posted 40 patches 2 years, 7 months ago
There is a newer version of this series
[PATCH v1 13/40] perf parse-events: Set attr.type to PMU type early
Posted by Ian Rogers 2 years, 7 months ago
Set attr.type to PMU type early so that later terms can override the
value. Setting the value in perf_pmu__config means that earlier steps,
like config_term_pmu, can override the value.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/util/parse-events.c | 2 +-
 tools/perf/util/pmu.c          | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index d71019dcd614..4ba01577618e 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1492,9 +1492,9 @@ int parse_events_add_pmu(struct parse_events_state *parse_state,
 	} else {
 		memset(&attr, 0, sizeof(attr));
 	}
+	attr.type = pmu->type;
 
 	if (!head_config) {
-		attr.type = pmu->type;
 		evsel = __add_event(list, &parse_state->idx, &attr,
 				    /*init_attr=*/true, /*name=*/NULL,
 				    /*metric_id=*/NULL, pmu,
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index ad209c88a124..cb33d869f1ed 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -1398,7 +1398,6 @@ int perf_pmu__config(struct perf_pmu *pmu, struct perf_event_attr *attr,
 {
 	bool zero = !!pmu->default_config;
 
-	attr->type = pmu->type;
 	return perf_pmu__config_terms(pmu->name, &pmu->format, attr,
 				      head_terms, zero, err);
 }
-- 
2.40.1.495.gc816e09b53d-goog
Re: [PATCH v1 13/40] perf parse-events: Set attr.type to PMU type early
Posted by Liang, Kan 2 years, 7 months ago

On 2023-04-26 3:00 a.m., Ian Rogers wrote:
> Set attr.type to PMU type early so that later terms can override the
> value. Setting the value in perf_pmu__config means that earlier steps,
> like config_term_pmu, can override the value.
>

Looks good to me.

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

Thanks,
Kan

> Signed-off-by: Ian Rogers <irogers@google.com> ---
>  tools/perf/util/parse-events.c | 2 +-
>  tools/perf/util/pmu.c          | 1 -
>  2 files changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> index d71019dcd614..4ba01577618e 100644
> --- a/tools/perf/util/parse-events.c
> +++ b/tools/perf/util/parse-events.c
> @@ -1492,9 +1492,9 @@ int parse_events_add_pmu(struct parse_events_state *parse_state,
>  	} else {
>  		memset(&attr, 0, sizeof(attr));
>  	}
> +	attr.type = pmu->type;
>  
>  	if (!head_config) {
> -		attr.type = pmu->type;
>  		evsel = __add_event(list, &parse_state->idx, &attr,
>  				    /*init_attr=*/true, /*name=*/NULL,
>  				    /*metric_id=*/NULL, pmu,
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index ad209c88a124..cb33d869f1ed 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -1398,7 +1398,6 @@ int perf_pmu__config(struct perf_pmu *pmu, struct perf_event_attr *attr,
>  {
>  	bool zero = !!pmu->default_config;
>  
> -	attr->type = pmu->type;
>  	return perf_pmu__config_terms(pmu->name, &pmu->format, attr,
>  				      head_terms, zero, err);
>  }