linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kajoljain <kjain@linux.ibm.com>
To: Jiri Olsa <jolsa@kernel.org>, Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ian Rogers <irogers@google.com>,
	lkml <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Michael Petlan <mpetlan@redhat.com>,
	Andi Kleen <ak@linux.intel.com>,
	John Garry <john.garry@huawei.com>,
	"Paul A. Clarke" <pc@us.ibm.com>,
	Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH 18/19] perf metric: Rename struct egroup to metric
Date: Sun, 26 Jul 2020 14:50:58 +0530	[thread overview]
Message-ID: <9e82392e-5511-9746-c916-0d4714027d60@linux.ibm.com> (raw)
In-Reply-To: <20200719181320.785305-19-jolsa@kernel.org>



On 7/19/20 11:43 PM, Jiri Olsa wrote:
> Renaming struct egroup to metric, because it seems
> to make more sense. Plus renaming all the variables
> that hold egroup to appropriate names.
> 
> Acked-by: Ian Rogers <irogers@google.com>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---

Reviewed-By : Kajol Jain<kjain@linux.ibm.com>

Thanks,
Kajol Jain
>  tools/perf/util/metricgroup.c | 142 +++++++++++++++++-----------------
>  1 file changed, 71 insertions(+), 71 deletions(-)
> 
> diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c
> index 2a45ee94fd61..9d5fff36042d 100644
> --- a/tools/perf/util/metricgroup.c
> +++ b/tools/perf/util/metricgroup.c
> @@ -115,7 +115,7 @@ struct metric_ref_node {
>  	struct list_head list;
>  };
>  
> -struct egroup {
> +struct metric {
>  	struct list_head nd;
>  	struct expr_parse_ctx pctx;
>  	const char *metric_name;
> @@ -262,7 +262,7 @@ static int metricgroup__setup_events(struct list_head *groups,
>  	struct metric_expr *expr;
>  	int i = 0;
>  	int ret = 0;
> -	struct egroup *eg;
> +	struct metric *m;
>  	struct evsel *evsel, *tmp;
>  	unsigned long *evlist_used;
>  
> @@ -270,23 +270,23 @@ static int metricgroup__setup_events(struct list_head *groups,
>  	if (!evlist_used)
>  		return -ENOMEM;
>  
> -	list_for_each_entry (eg, groups, nd) {
> +	list_for_each_entry (m, groups, nd) {
>  		struct evsel **metric_events;
>  		struct metric_ref *metric_refs = NULL;
>  
>  		metric_events = calloc(sizeof(void *),
> -				hashmap__size(&eg->pctx.ids) + 1);
> +				hashmap__size(&m->pctx.ids) + 1);
>  		if (!metric_events) {
>  			ret = -ENOMEM;
>  			break;
>  		}
> -		evsel = find_evsel_group(perf_evlist, &eg->pctx,
> +		evsel = find_evsel_group(perf_evlist, &m->pctx,
>  					 metric_no_merge,
> -					 eg->has_constraint, metric_events,
> +					 m->has_constraint, metric_events,
>  					 evlist_used);
>  		if (!evsel) {
>  			pr_debug("Cannot resolve %s: %s\n",
> -					eg->metric_name, eg->metric_expr);
> +					m->metric_name, m->metric_expr);
>  			free(metric_events);
>  			continue;
>  		}
> @@ -309,10 +309,10 @@ static int metricgroup__setup_events(struct list_head *groups,
>  		 * Collect and store collected nested expressions
>  		 * for metric processing.
>  		 */
> -		if (eg->metric_refs_cnt) {
> +		if (m->metric_refs_cnt) {
>  			struct metric_ref_node *ref;
>  
> -			metric_refs = zalloc(sizeof(struct metric_ref) * (eg->metric_refs_cnt + 1));
> +			metric_refs = zalloc(sizeof(struct metric_ref) * (m->metric_refs_cnt + 1));
>  			if (!metric_refs) {
>  				ret = -ENOMEM;
>  				free(metric_events);
> @@ -320,7 +320,7 @@ static int metricgroup__setup_events(struct list_head *groups,
>  			}
>  
>  			i = 0;
> -			list_for_each_entry(ref, &eg->metric_refs, list) {
> +			list_for_each_entry(ref, &m->metric_refs, list) {
>  				/*
>  				 * Intentionally passing just const char pointers,
>  				 * originally from 'struct pmu_event' object.
> @@ -334,11 +334,11 @@ static int metricgroup__setup_events(struct list_head *groups,
>  		};
>  
>  		expr->metric_refs = metric_refs;
> -		expr->metric_expr = eg->metric_expr;
> -		expr->metric_name = eg->metric_name;
> -		expr->metric_unit = eg->metric_unit;
> +		expr->metric_expr = m->metric_expr;
> +		expr->metric_name = m->metric_name;
> +		expr->metric_unit = m->metric_unit;
>  		expr->metric_events = metric_events;
> -		expr->runtime = eg->runtime;
> +		expr->runtime = m->runtime;
>  		list_add(&expr->nd, &me->head);
>  	}
>  
> @@ -643,41 +643,41 @@ static int __add_metric(struct list_head *group_list,
>  			struct pmu_event *pe,
>  			bool metric_no_group,
>  			int runtime,
> -			struct egroup **egp,
> +			struct metric **mp,
>  			struct expr_id *parent,
>  		        struct expr_ids *ids)
>  {
>  	struct metric_ref_node *ref;
> -	struct egroup *eg;
> +	struct metric *m;
>  
> -	if (*egp == NULL) {
> +	if (*mp == NULL) {
>  		/*
>  		 * We got in here for the parent group,
>  		 * allocate it and put it on the list.
>  		 */
> -		eg = zalloc(sizeof(*eg));
> -		if (!eg)
> +		m = zalloc(sizeof(*m));
> +		if (!m)
>  			return -ENOMEM;
>  
> -		expr__ctx_init(&eg->pctx);
> -		eg->metric_name = pe->metric_name;
> -		eg->metric_expr = pe->metric_expr;
> -		eg->metric_unit = pe->unit;
> -		eg->runtime = runtime;
> -		eg->has_constraint = metric_no_group || metricgroup__has_constraint(pe);
> -		INIT_LIST_HEAD(&eg->metric_refs);
> -		eg->metric_refs_cnt = 0;
> -		*egp = eg;
> +		expr__ctx_init(&m->pctx);
> +		m->metric_name = pe->metric_name;
> +		m->metric_expr = pe->metric_expr;
> +		m->metric_unit = pe->unit;
> +		m->runtime = runtime;
> +		m->has_constraint = metric_no_group || metricgroup__has_constraint(pe);
> +		INIT_LIST_HEAD(&m->metric_refs);
> +		m->metric_refs_cnt = 0;
> +		*mp = m;
>  
>  		parent = expr_ids__alloc(ids);
>  		if (!parent) {
> -			free(eg);
> +			free(m);
>  			return -EINVAL;
>  		}
>  
>  		parent->id = strdup(pe->metric_name);
>  		if (!parent->id) {
> -			free(eg);
> +			free(m);
>  			return -ENOMEM;
>  		}
>  	} else {
> @@ -686,7 +686,7 @@ static int __add_metric(struct list_head *group_list,
>  		 * recursive metricgroup__add_metric call, add
>  		 * it to the parent group.
>  		 */
> -		eg = *egp;
> +		m = *mp;
>  
>  		ref = malloc(sizeof(*ref));
>  		if (!ref)
> @@ -701,21 +701,21 @@ static int __add_metric(struct list_head *group_list,
>  		ref->metric_name = pe->metric_name;
>  		ref->metric_expr = pe->metric_expr;
>  
> -		list_add(&ref->list, &eg->metric_refs);
> -		eg->metric_refs_cnt++;
> +		list_add(&ref->list, &m->metric_refs);
> +		m->metric_refs_cnt++;
>  	}
>  
>  	/* Force all found IDs in metric to have us as parent ID. */
>  	WARN_ON_ONCE(!parent);
> -	eg->pctx.parent = parent;
> +	m->pctx.parent = parent;
>  
>  	/*
>  	 * For both the parent and referenced metrics, we parse
>  	 * all the metric's IDs and add it to the parent context.
>  	 */
> -	if (expr__find_other(pe->metric_expr, NULL, &eg->pctx, runtime) < 0) {
> -		expr__ctx_clear(&eg->pctx);
> -		free(eg);
> +	if (expr__find_other(pe->metric_expr, NULL, &m->pctx, runtime) < 0) {
> +		expr__ctx_clear(&m->pctx);
> +		free(m);
>  		return -EINVAL;
>  	}
>  
> @@ -723,23 +723,23 @@ static int __add_metric(struct list_head *group_list,
>  	 * We add new group only in the 'parent' call,
>  	 * so bail out for referenced metric case.
>  	 */
> -	if (eg->metric_refs_cnt)
> +	if (m->metric_refs_cnt)
>  		return 0;
>  
>  	if (list_empty(group_list))
> -		list_add(&eg->nd, group_list);
> +		list_add(&m->nd, group_list);
>  	else {
>  		struct list_head *pos;
>  
>  		/* Place the largest groups at the front. */
>  		list_for_each_prev(pos, group_list) {
> -			struct egroup *old = list_entry(pos, struct egroup, nd);
> +			struct metric *old = list_entry(pos, struct metric, nd);
>  
> -			if (hashmap__size(&eg->pctx.ids) <=
> +			if (hashmap__size(&m->pctx.ids) <=
>  			    hashmap__size(&old->pctx.ids))
>  				break;
>  		}
> -		list_add(&eg->nd, pos);
> +		list_add(&m->nd, pos);
>  	}
>  
>  	return 0;
> @@ -769,7 +769,7 @@ static struct pmu_event *find_metric(const char *metric, struct pmu_events_map *
>  	return NULL;
>  }
>  
> -static int recursion_check(struct egroup *eg, const char *id, struct expr_id **parent,
> +static int recursion_check(struct metric *m, const char *id, struct expr_id **parent,
>  			   struct expr_ids *ids)
>  {
>  	struct expr_id_data *data;
> @@ -782,7 +782,7 @@ static int recursion_check(struct egroup *eg, const char *id, struct expr_id **p
>  	 * if we already processed 'id', if we did, it's recursion
>  	 * and we fail.
>  	 */
> -	ret = expr__get_id(&eg->pctx, id, &data);
> +	ret = expr__get_id(&m->pctx, id, &data);
>  	if (ret)
>  		return ret;
>  
> @@ -816,11 +816,11 @@ static int recursion_check(struct egroup *eg, const char *id, struct expr_id **p
>  static int add_metric(struct list_head *group_list,
>  		      struct pmu_event *pe,
>  		      bool metric_no_group,
> -		      struct egroup **egp,
> +		      struct metric **mp,
>  		      struct expr_id *parent,
>  		      struct expr_ids *ids);
>  
> -static int resolve_metric(struct egroup *eg,
> +static int resolve_metric(struct metric *m,
>  			  bool metric_no_group,
>  			  struct list_head *group_list,
>  			  struct pmu_events_map *map,
> @@ -837,7 +837,7 @@ static int resolve_metric(struct egroup *eg,
>  	 */
>  	do {
>  		all = true;
> -		hashmap__for_each_entry((&eg->pctx.ids), cur, bkt) {
> +		hashmap__for_each_entry((&m->pctx.ids), cur, bkt) {
>  			struct expr_id *parent;
>  			struct pmu_event *pe;
>  
> @@ -845,16 +845,16 @@ static int resolve_metric(struct egroup *eg,
>  			if (!pe)
>  				continue;
>  
> -			ret = recursion_check(eg, cur->key, &parent, ids);
> +			ret = recursion_check(m, cur->key, &parent, ids);
>  			if (ret)
>  				return ret;
>  
>  			all = false;
>  			/* The metric key itself needs to go out.. */
> -			expr__del_id(&eg->pctx, cur->key);
> +			expr__del_id(&m->pctx, cur->key);
>  
>  			/* ... and it gets resolved to the parent context. */
> -			ret = add_metric(group_list, pe, metric_no_group, &eg, parent, ids);
> +			ret = add_metric(group_list, pe, metric_no_group, &m, parent, ids);
>  			if (ret)
>  				return ret;
>  
> @@ -872,7 +872,7 @@ static int resolve_metric(struct egroup *eg,
>  static int add_metric(struct list_head *group_list,
>  		      struct pmu_event *pe,
>  		      bool metric_no_group,
> -		      struct egroup **egp,
> +		      struct metric **m,
>  		      struct expr_id *parent,
>  		      struct expr_ids *ids)
>  {
> @@ -881,7 +881,7 @@ static int add_metric(struct list_head *group_list,
>  	pr_debug("metric expr %s for %s\n", pe->metric_expr, pe->metric_name);
>  
>  	if (!strstr(pe->metric_expr, "?")) {
> -		ret = __add_metric(group_list, pe, metric_no_group, 1, egp, parent, ids);
> +		ret = __add_metric(group_list, pe, metric_no_group, 1, m, parent, ids);
>  	} else {
>  		int j, count;
>  
> @@ -893,7 +893,7 @@ static int add_metric(struct list_head *group_list,
>  		 */
>  
>  		for (j = 0; j < count && !ret; j++) {
> -			ret = __add_metric(group_list, pe, metric_no_group, j, egp, parent, ids);
> +			ret = __add_metric(group_list, pe, metric_no_group, j, m, parent, ids);
>  		}
>  	}
>  
> @@ -908,16 +908,16 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
>  {
>  	struct expr_ids ids = { 0 };
>  	struct pmu_event *pe;
> -	struct egroup *eg;
> +	struct metric *m;
>  	LIST_HEAD(list);
>  	int i, ret;
>  	bool has_match = false;
>  
>  	map_for_each_metric(pe, i, map, metric) {
>  		has_match = true;
> -		eg = NULL;
> +		m = NULL;
>  
> -		ret = add_metric(&list, pe, metric_no_group, &eg, NULL, &ids);
> +		ret = add_metric(&list, pe, metric_no_group, &m, NULL, &ids);
>  		if (ret)
>  			return ret;
>  
> @@ -925,7 +925,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
>  		 * Process any possible referenced metrics
>  		 * included in the expression.
>  		 */
> -		ret = resolve_metric(eg, metric_no_group,
> +		ret = resolve_metric(m, metric_no_group,
>  				     &list, map, &ids);
>  		if (ret)
>  			return ret;
> @@ -935,16 +935,16 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
>  	if (!has_match)
>  		return -EINVAL;
>  
> -	list_for_each_entry(eg, &list, nd) {
> +	list_for_each_entry(m, &list, nd) {
>  		if (events->len > 0)
>  			strbuf_addf(events, ",");
>  
> -		if (eg->has_constraint) {
> +		if (m->has_constraint) {
>  			metricgroup__add_metric_non_group(events,
> -							  &eg->pctx);
> +							  &m->pctx);
>  		} else {
>  			metricgroup__add_metric_weak_group(events,
> -							   &eg->pctx);
> +							   &m->pctx);
>  		}
>  	}
>  
> @@ -986,25 +986,25 @@ static int metricgroup__add_metric_list(const char *list, bool metric_no_group,
>  	return ret;
>  }
>  
> -static void egroup__free_refs(struct egroup *egroup)
> +static void metric__free_refs(struct metric *metric)
>  {
>  	struct metric_ref_node *ref, *tmp;
>  
> -	list_for_each_entry_safe(ref, tmp, &egroup->metric_refs, list) {
> +	list_for_each_entry_safe(ref, tmp, &metric->metric_refs, list) {
>  		list_del(&ref->list);
>  		free(ref);
>  	}
>  }
>  
> -static void metricgroup__free_egroups(struct list_head *group_list)
> +static void metricgroup__free_metrics(struct list_head *group_list)
>  {
> -	struct egroup *eg, *egtmp;
> +	struct metric *m, *tmp;
>  
> -	list_for_each_entry_safe (eg, egtmp, group_list, nd) {
> -		egroup__free_refs(eg);
> -		expr__ctx_clear(&eg->pctx);
> -		list_del_init(&eg->nd);
> -		free(eg);
> +	list_for_each_entry_safe (m, tmp, group_list, nd) {
> +		metric__free_refs(m);
> +		expr__ctx_clear(&m->pctx);
> +		list_del_init(&m->nd);
> +		free(m);
>  	}
>  }
>  
> @@ -1037,7 +1037,7 @@ static int parse_groups(struct evlist *perf_evlist, const char *str,
>  	ret = metricgroup__setup_events(&group_list, metric_no_merge,
>  					perf_evlist, metric_events);
>  out:
> -	metricgroup__free_egroups(&group_list);
> +	metricgroup__free_metrics(&group_list);
>  	return ret;
>  }
>  
> 

  reply	other threads:[~2020-07-26  9:21 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-19 18:13 [PATCHv3 00/19] perf metric: Add support to reuse metric Jiri Olsa
2020-07-19 18:13 ` [PATCH 01/19] perf metric: Fix memory leak in expr__add_id function Jiri Olsa
2020-07-19 21:41   ` Ian Rogers
2020-07-28 12:26     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 02/19] perf metric: Add " Jiri Olsa
2020-07-26  9:16   ` kajoljain
2020-07-28 12:27     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 03/19] perf metric: Change expr__get_id to return struct expr_id_data Jiri Olsa
2020-07-26  9:17   ` kajoljain
2020-07-28 12:28     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 04/19] perf metric: Add expr__del_id function Jiri Olsa
2020-07-26  9:17   ` kajoljain
2020-07-28 12:28     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 05/19] perf metric: Add macros for iterating map events Jiri Olsa
2020-07-19 21:46   ` Ian Rogers
2020-07-28 12:29     ` Arnaldo Carvalho de Melo
2020-07-26  9:17   ` kajoljain
2020-07-19 18:13 ` [PATCH 06/19] perf metric: Add add_metric function Jiri Olsa
2020-07-26  9:17   ` kajoljain
2020-07-28 12:30     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 07/19] perf metric: Rename __metricgroup__add_metric to __add_metric Jiri Olsa
2020-07-26  9:18   ` kajoljain
2020-07-28 12:30     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 08/19] perf metric: Collect referenced metrics in struct metric_ref_node Jiri Olsa
2020-07-19 22:18   ` Ian Rogers
2020-07-26  9:18     ` kajoljain
2020-07-28 12:31     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 09/19] perf metric: Collect referenced metrics in struct metric_expr Jiri Olsa
2020-07-26  9:18   ` kajoljain
2020-07-28 12:32     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 10/19] perf metric: Add referenced metrics to hash data Jiri Olsa
2020-07-19 22:32   ` Ian Rogers
2020-07-26  9:18     ` kajoljain
2020-07-28 12:32     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 11/19] perf metric: Compute referenced metrics Jiri Olsa
2020-07-26  9:19   ` kajoljain
2020-07-28 12:33     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 12/19] perf metric: Add events for the current list Jiri Olsa
2020-07-19 22:34   ` Ian Rogers
2020-07-26  9:19     ` kajoljain
2020-07-28 12:33     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 13/19] perf metric: Add cache_miss_cycles to metric parse test Jiri Olsa
2020-07-26  9:19   ` kajoljain
2020-07-28 12:34     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 14/19] perf metric: Add DCache_L2 " Jiri Olsa
2020-07-26  9:19   ` kajoljain
2020-07-28 12:34     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 15/19] perf metric: Add recursion check when processing nested metrics Jiri Olsa
2020-07-19 22:40   ` Ian Rogers
2020-07-26  9:20     ` kajoljain
2020-07-28 12:35     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 16/19] perf metric: Make compute_single function more precise Jiri Olsa
2020-07-28 12:36   ` Arnaldo Carvalho de Melo
2020-07-28 17:26     ` Ian Rogers
2020-07-28 20:17       ` kajoljain
2020-07-29 11:08         ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 17/19] perf metric: Add metric group test Jiri Olsa
2020-07-19 22:41   ` Ian Rogers
2020-07-26  9:20     ` kajoljain
2020-07-28 12:37     ` Arnaldo Carvalho de Melo
2020-07-19 18:13 ` [PATCH 18/19] perf metric: Rename struct egroup to metric Jiri Olsa
2020-07-26  9:20   ` kajoljain [this message]
2020-07-19 18:13 ` [PATCH 19/19] perf metric: Rename group_list to metric_list Jiri Olsa
2020-07-19 22:42   ` Ian Rogers
2020-07-26  9:21   ` kajoljain
2020-07-28 12:38     ` Arnaldo Carvalho de Melo
2020-07-20  6:44 ` [PATCHv3 00/19] perf metric: Add support to reuse metric kajoljain
2020-07-20  7:22   ` Jiri Olsa
2020-07-20  8:09     ` kajoljain
2020-07-20  8:19       ` Jiri Olsa
2020-07-20  9:02         ` kajoljain
2020-07-20 19:16           ` Jiri Olsa
2020-07-24  5:52             ` kajoljain
2020-07-25 11:51               ` Jiri Olsa
2020-07-26  9:14                 ` kajoljain
2020-07-28 12:39             ` Arnaldo Carvalho de Melo
2020-07-28 12:54               ` Jiri Olsa
2020-07-28 13:01                 ` Jiri Olsa
2020-07-28 13:34                   ` [PATCHv3 20/19] perf metric: Fix runtime metric for powerpc Jiri Olsa
2020-07-28 15:22                   ` [PATCHv3 00/19] perf metric: Add support to reuse metric Arnaldo Carvalho de Melo
2020-07-21 14:48 ` Paul A. Clarke
2020-07-22 18:11   ` Jiri Olsa
2020-07-23 15:59     ` Paul A. Clarke
2020-07-25 11:52       ` Jiri Olsa
2020-07-28 12:42       ` Arnaldo Carvalho de Melo
2020-07-23 17:14     ` Paul A. Clarke
2020-07-23 17:40       ` Andi Kleen
2020-07-29  9:18 [PATCHv4 " Jiri Olsa
2020-07-29  9:19 ` [PATCH 18/19] perf metric: Rename struct egroup to metric Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9e82392e-5511-9746-c916-0d4714027d60@linux.ibm.com \
    --to=kjain@linux.ibm.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=john.garry@huawei.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=pc@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).