All of lore.kernel.org
 help / color / mirror / Atom feed
From: kajoljain <kjain@linux.ibm.com>
To: Ian Rogers <irogers@google.com>, Andi Kleen <ak@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Jin Yao <yao.jin@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>,
	John Garry <john.garry@huawei.com>,
	"Paul A . Clarke" <pc@us.ibm.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Riccardo Mancini <rickyman7@gmail.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Kees Cook <keescook@chromium.org>,
	Sami Tolvanen <samitolvanen@google.com>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jacob Keller <jacob.e.keller@intel.com>,
	Zhen Lei <thunder.leizhen@huawei.com>,
	ToastC <mrtoastcheng@gmail.com>,
	Joakim Zhang <qiangqing.zhang@nxp.com>,
	Felix Fietkau <nbd@nbd.name>,
	Jiapeng Chong <jiapeng.chong@linux.alibaba.com>,
	Song Liu <songliubraving@fb.com>, Fabian Hemmer <copy@copy.sh>,
	Alexander Antonov <alexander.antonov@linux.intel.com>,
	Nicholas Fraser <nfraser@codeweavers.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Denys Zagorui <dzagorui@cisco.com>,
	Wan Jiabing <wanjiabing@vivo.com>,
	Thomas Richter <tmricht@linux.ibm.com>,
	Sumanth Korikkar <sumanthk@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Andrew Kilroy <andrew.kilroy@arm.com>
Cc: Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH v2 04/21] perf pmu: Make pmu_event tables const.
Date: Tue, 26 Oct 2021 11:48:18 +0530	[thread overview]
Message-ID: <b2de056d-7741-32cf-22e9-a4fe8b9bd06d@linux.ibm.com> (raw)
In-Reply-To: <20211015172132.1162559-5-irogers@google.com>



On 10/15/21 10:51 PM, Ian Rogers wrote:
> Make lookup nature of data structures clearer through their type. Reduce
> scope of architecture specific pmu_event tables by making them static.
> 
> Suggested-by: John Garry <john.garry@huawei.com>
> Acked-by: Andi Kleen <ak@linux.intel.com>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/arch/powerpc/util/header.c |  2 +-
>  tools/perf/pmu-events/jevents.c       |  2 +-
>  tools/perf/pmu-events/pmu-events.h    |  4 +--
>  tools/perf/tests/pmu-events.c         | 16 ++++++------
>  tools/perf/util/metricgroup.c         | 36 +++++++++++++--------------
>  tools/perf/util/metricgroup.h         |  6 ++---
>  tools/perf/util/pmu.c                 |  8 +++---
>  tools/perf/util/pmu.h                 |  2 +-
>  tools/perf/util/s390-sample-raw.c     |  2 +-
>  9 files changed, 39 insertions(+), 39 deletions(-)

Patch looks good to me.

Reviewed-by: kajol Jain<kjain@linux.ibm.com>

Thanks,
Kajol Jain

> 
> diff --git a/tools/perf/arch/powerpc/util/header.c b/tools/perf/arch/powerpc/util/header.c
> index 58b2d610aadb..e8fe36b10d20 100644
> --- a/tools/perf/arch/powerpc/util/header.c
> +++ b/tools/perf/arch/powerpc/util/header.c
> @@ -40,7 +40,7 @@ get_cpuid_str(struct perf_pmu *pmu __maybe_unused)
>  	return bufp;
>  }
>  
> -int arch_get_runtimeparam(struct pmu_event *pe)
> +int arch_get_runtimeparam(const struct pmu_event *pe)
>  {
>  	int count;
>  	char path[PATH_MAX] = "/devices/hv_24x7/interface/";
> diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
> index a31de0f77097..5ed1abedb724 100644
> --- a/tools/perf/pmu-events/jevents.c
> +++ b/tools/perf/pmu-events/jevents.c
> @@ -362,7 +362,7 @@ static int close_table;
>  
>  static void print_events_table_prefix(FILE *fp, const char *tblname)
>  {
> -	fprintf(fp, "struct pmu_event %s[] = {\n", tblname);
> +	fprintf(fp, "static const struct pmu_event %s[] = {\n", tblname);
>  	close_table = 1;
>  }
>  
> diff --git a/tools/perf/pmu-events/pmu-events.h b/tools/perf/pmu-events/pmu-events.h
> index f6c9c9fc4ab2..6efe73976440 100644
> --- a/tools/perf/pmu-events/pmu-events.h
> +++ b/tools/perf/pmu-events/pmu-events.h
> @@ -41,12 +41,12 @@ struct pmu_events_map {
>  	const char *cpuid;
>  	const char *version;
>  	const char *type;		/* core, uncore etc */
> -	struct pmu_event *table;
> +	const struct pmu_event *table;
>  };
>  
>  struct pmu_sys_events {
>  	const char *name;
> -	struct pmu_event *table;
> +	const struct pmu_event *table;
>  };
>  
>  /*
> diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c
> index c0f8b61871c8..cc5cea141beb 100644
> --- a/tools/perf/tests/pmu-events.c
> +++ b/tools/perf/tests/pmu-events.c
> @@ -256,7 +256,7 @@ static const struct pmu_events_map *__test_pmu_get_events_map(void)
>  	return NULL;
>  }
>  
> -static struct pmu_event *__test_pmu_get_sys_events_table(void)
> +static const struct pmu_event *__test_pmu_get_sys_events_table(void)
>  {
>  	const struct pmu_sys_events *tables = &pmu_sys_event_tables[0];
>  
> @@ -268,7 +268,7 @@ static struct pmu_event *__test_pmu_get_sys_events_table(void)
>  	return NULL;
>  }
>  
> -static int compare_pmu_events(struct pmu_event *e1, const struct pmu_event *e2)
> +static int compare_pmu_events(const struct pmu_event *e1, const struct pmu_event *e2)
>  {
>  	if (!is_same(e1->name, e2->name)) {
>  		pr_debug2("testing event e1 %s: mismatched name string, %s vs %s\n",
> @@ -420,9 +420,9 @@ static int compare_alias_to_test_event(struct perf_pmu_alias *alias,
>  /* Verify generated events from pmu-events.c are as expected */
>  static int test_pmu_event_table(void)
>  {
> -	struct pmu_event *sys_event_tables = __test_pmu_get_sys_events_table();
> +	const struct pmu_event *sys_event_tables = __test_pmu_get_sys_events_table();
>  	const struct pmu_events_map *map = __test_pmu_get_events_map();
> -	struct pmu_event *table;
> +	const struct pmu_event *table;
>  	int map_events = 0, expected_events;
>  
>  	/* ignore 3x sentinels */
> @@ -774,7 +774,7 @@ static int check_parse_id(const char *id, struct parse_events_error *error,
>  	return ret;
>  }
>  
> -static int check_parse_cpu(const char *id, bool same_cpu, struct pmu_event *pe)
> +static int check_parse_cpu(const char *id, bool same_cpu, const struct pmu_event *pe)
>  {
>  	struct parse_events_error error = { .idx = 0, };
>  
> @@ -838,7 +838,7 @@ static int resolve_metric_simple(struct expr_parse_ctx *pctx,
>  		all = true;
>  		hashmap__for_each_entry_safe(pctx->ids, cur, cur_tmp, bkt) {
>  			struct metric_ref *ref;
> -			struct pmu_event *pe;
> +			const struct pmu_event *pe;
>  
>  			pe = metricgroup__find_metric(cur->key, map);
>  			if (!pe)
> @@ -887,7 +887,7 @@ static int test_parsing(void)
>  {
>  	const struct pmu_events_map *cpus_map = pmu_events_map__find();
>  	const struct pmu_events_map *map;
> -	struct pmu_event *pe;
> +	const struct pmu_event *pe;
>  	int i, j, k;
>  	int ret = 0;
>  	struct expr_parse_ctx *ctx;
> @@ -1028,7 +1028,7 @@ static int metric_parse_fake(const char *str)
>  static int test_parsing_fake(void)
>  {
>  	const struct pmu_events_map *map;
> -	struct pmu_event *pe;
> +	const struct pmu_event *pe;
>  	unsigned int i, j;
>  	int err = 0;
>  
> diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c
> index 74ea0a3540ce..b60ccbbf0829 100644
> --- a/tools/perf/util/metricgroup.c
> +++ b/tools/perf/util/metricgroup.c
> @@ -427,7 +427,7 @@ static bool match_metric(const char *n, const char *list)
>  	return false;
>  }
>  
> -static bool match_pe_metric(struct pmu_event *pe, const char *metric)
> +static bool match_pe_metric(const struct pmu_event *pe, const char *metric)
>  {
>  	return match_metric(pe->metric_group, metric) ||
>  	       match_metric(pe->metric_name, metric);
> @@ -511,7 +511,7 @@ static void metricgroup__print_strlist(struct strlist *metrics, bool raw)
>  		putchar('\n');
>  }
>  
> -static int metricgroup__print_pmu_event(struct pmu_event *pe,
> +static int metricgroup__print_pmu_event(const struct pmu_event *pe,
>  					bool metricgroups, char *filter,
>  					bool raw, bool details,
>  					struct rblist *groups,
> @@ -586,14 +586,14 @@ struct metricgroup_print_sys_idata {
>  	bool details;
>  };
>  
> -typedef int (*metricgroup_sys_event_iter_fn)(struct pmu_event *pe, void *);
> +typedef int (*metricgroup_sys_event_iter_fn)(const struct pmu_event *pe, void *);
>  
>  struct metricgroup_iter_data {
>  	metricgroup_sys_event_iter_fn fn;
>  	void *data;
>  };
>  
> -static int metricgroup__sys_event_iter(struct pmu_event *pe, void *data)
> +static int metricgroup__sys_event_iter(const struct pmu_event *pe, void *data)
>  {
>  	struct metricgroup_iter_data *d = data;
>  	struct perf_pmu *pmu = NULL;
> @@ -612,7 +612,7 @@ static int metricgroup__sys_event_iter(struct pmu_event *pe, void *data)
>  	return 0;
>  }
>  
> -static int metricgroup__print_sys_event_iter(struct pmu_event *pe, void *data)
> +static int metricgroup__print_sys_event_iter(const struct pmu_event *pe, void *data)
>  {
>  	struct metricgroup_print_sys_idata *d = data;
>  
> @@ -624,7 +624,7 @@ void metricgroup__print(bool metrics, bool metricgroups, char *filter,
>  			bool raw, bool details)
>  {
>  	const struct pmu_events_map *map = pmu_events_map__find();
> -	struct pmu_event *pe;
> +	const struct pmu_event *pe;
>  	int i;
>  	struct rblist groups;
>  	struct rb_node *node, *next;
> @@ -756,7 +756,7 @@ static void metricgroup___watchdog_constraint_hint(const char *name, bool foot)
>  		   "    echo 1 > /proc/sys/kernel/nmi_watchdog\n");
>  }
>  
> -static bool metricgroup__has_constraint(struct pmu_event *pe)
> +static bool metricgroup__has_constraint(const struct pmu_event *pe)
>  {
>  	if (!pe->metric_constraint)
>  		return false;
> @@ -770,7 +770,7 @@ static bool metricgroup__has_constraint(struct pmu_event *pe)
>  	return false;
>  }
>  
> -int __weak arch_get_runtimeparam(struct pmu_event *pe __maybe_unused)
> +int __weak arch_get_runtimeparam(const struct pmu_event *pe __maybe_unused)
>  {
>  	return 1;
>  }
> @@ -785,7 +785,7 @@ struct metricgroup_add_iter_data {
>  };
>  
>  static int __add_metric(struct list_head *metric_list,
> -			struct pmu_event *pe,
> +			const struct pmu_event *pe,
>  			bool metric_no_group,
>  			int runtime,
>  			struct metric **mp,
> @@ -909,10 +909,10 @@ static int __add_metric(struct list_head *metric_list,
>  		    (match_metric(__pe->metric_group, __metric) ||	\
>  		     match_metric(__pe->metric_name, __metric)))
>  
> -struct pmu_event *metricgroup__find_metric(const char *metric,
> -					   const struct pmu_events_map *map)
> +const struct pmu_event *metricgroup__find_metric(const char *metric,
> +						 const struct pmu_events_map *map)
>  {
> -	struct pmu_event *pe;
> +	const struct pmu_event *pe;
>  	int i;
>  
>  	map_for_each_event(pe, i, map) {
> @@ -968,7 +968,7 @@ static int recursion_check(struct metric *m, const char *id, struct expr_id **pa
>  }
>  
>  static int add_metric(struct list_head *metric_list,
> -		      struct pmu_event *pe,
> +		      const struct pmu_event *pe,
>  		      bool metric_no_group,
>  		      struct metric **mp,
>  		      struct expr_id *parent,
> @@ -993,7 +993,7 @@ static int __resolve_metric(struct metric *m,
>  		all = true;
>  		hashmap__for_each_entry(m->pctx->ids, cur, bkt) {
>  			struct expr_id *parent;
> -			struct pmu_event *pe;
> +			const struct pmu_event *pe;
>  
>  			pe = metricgroup__find_metric(cur->key, map);
>  			if (!pe)
> @@ -1040,7 +1040,7 @@ static int resolve_metric(bool metric_no_group,
>  }
>  
>  static int add_metric(struct list_head *metric_list,
> -		      struct pmu_event *pe,
> +		      const struct pmu_event *pe,
>  		      bool metric_no_group,
>  		      struct metric **m,
>  		      struct expr_id *parent,
> @@ -1070,7 +1070,7 @@ static int add_metric(struct list_head *metric_list,
>  	return ret;
>  }
>  
> -static int metricgroup__add_metric_sys_event_iter(struct pmu_event *pe,
> +static int metricgroup__add_metric_sys_event_iter(const struct pmu_event *pe,
>  						  void *data)
>  {
>  	struct metricgroup_add_iter_data *d = data;
> @@ -1102,7 +1102,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
>  				   const struct pmu_events_map *map)
>  {
>  	struct expr_ids ids = { .cnt = 0, };
> -	struct pmu_event *pe;
> +	const struct pmu_event *pe;
>  	struct metric *m;
>  	LIST_HEAD(list);
>  	int i, ret;
> @@ -1286,7 +1286,7 @@ int metricgroup__parse_groups_test(struct evlist *evlist,
>  bool metricgroup__has_metric(const char *metric)
>  {
>  	const struct pmu_events_map *map = pmu_events_map__find();
> -	struct pmu_event *pe;
> +	const struct pmu_event *pe;
>  	int i;
>  
>  	if (!map)
> diff --git a/tools/perf/util/metricgroup.h b/tools/perf/util/metricgroup.h
> index c931596557bf..88ba939a3082 100644
> --- a/tools/perf/util/metricgroup.h
> +++ b/tools/perf/util/metricgroup.h
> @@ -43,8 +43,8 @@ int metricgroup__parse_groups(const struct option *opt,
>  			      bool metric_no_group,
>  			      bool metric_no_merge,
>  			      struct rblist *metric_events);
> -struct pmu_event *metricgroup__find_metric(const char *metric,
> -					   const struct pmu_events_map *map);
> +const struct pmu_event *metricgroup__find_metric(const char *metric,
> +						 const struct pmu_events_map *map);
>  int metricgroup__parse_groups_test(struct evlist *evlist,
>  				   const struct pmu_events_map *map,
>  				   const char *str,
> @@ -55,7 +55,7 @@ int metricgroup__parse_groups_test(struct evlist *evlist,
>  void metricgroup__print(bool metrics, bool groups, char *filter,
>  			bool raw, bool details);
>  bool metricgroup__has_metric(const char *metric);
> -int arch_get_runtimeparam(struct pmu_event *pe __maybe_unused);
> +int arch_get_runtimeparam(const struct pmu_event *pe __maybe_unused);
>  void metricgroup__rblist_exit(struct rblist *metric_events);
>  
>  int metricgroup__copy_metric_events(struct evlist *evlist, struct cgroup *cgrp,
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index c04a89cc7cef..cdd6c3f6caf1 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -315,7 +315,7 @@ static bool perf_pmu_merge_alias(struct perf_pmu_alias *newalias,
>  }
>  
>  static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
> -				 char *desc, char *val, struct pmu_event *pe)
> +				 char *desc, char *val, const struct pmu_event *pe)
>  {
>  	struct parse_events_term *term;
>  	struct perf_pmu_alias *alias;
> @@ -834,7 +834,7 @@ void pmu_add_cpu_aliases_map(struct list_head *head, struct perf_pmu *pmu,
>  	i = 0;
>  	while (1) {
>  		const char *cpu_name = is_arm_pmu_core(name) ? name : "cpu";
> -		struct pmu_event *pe = &map->table[i++];
> +		const struct pmu_event *pe = &map->table[i++];
>  		const char *pname = pe->pmu ? pe->pmu : cpu_name;
>  
>  		if (!pe->name) {
> @@ -882,7 +882,7 @@ void pmu_for_each_sys_event(pmu_sys_event_iter_fn fn, void *data)
>  			break;
>  
>  		while (1) {
> -			struct pmu_event *pe = &event_table->table[j++];
> +			const struct pmu_event *pe = &event_table->table[j++];
>  			int ret;
>  
>  			if (!pe->name && !pe->metric_group && !pe->metric_name)
> @@ -900,7 +900,7 @@ struct pmu_sys_event_iter_data {
>  	struct perf_pmu *pmu;
>  };
>  
> -static int pmu_add_sys_aliases_iter_fn(struct pmu_event *pe, void *data)
> +static int pmu_add_sys_aliases_iter_fn(const struct pmu_event *pe, void *data)
>  {
>  	struct pmu_sys_event_iter_data *idata = data;
>  	struct perf_pmu *pmu = idata->pmu;
> diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
> index dd5cdde6a3d0..cc9f9e001347 100644
> --- a/tools/perf/util/pmu.h
> +++ b/tools/perf/util/pmu.h
> @@ -127,7 +127,7 @@ const struct pmu_events_map *pmu_events_map__find(void);
>  bool pmu_uncore_alias_match(const char *pmu_name, const char *name);
>  void perf_pmu_free_alias(struct perf_pmu_alias *alias);
>  
> -typedef int (*pmu_sys_event_iter_fn)(struct pmu_event *pe, void *data);
> +typedef int (*pmu_sys_event_iter_fn)(const struct pmu_event *pe, void *data);
>  void pmu_for_each_sys_event(pmu_sys_event_iter_fn fn, void *data);
>  int perf_pmu__convert_scale(const char *scale, char **end, double *sval);
>  
> diff --git a/tools/perf/util/s390-sample-raw.c b/tools/perf/util/s390-sample-raw.c
> index 13f33d1ddb78..cd3a34840389 100644
> --- a/tools/perf/util/s390-sample-raw.c
> +++ b/tools/perf/util/s390-sample-raw.c
> @@ -140,7 +140,7 @@ static const char *get_counter_name(int set, int nr, const struct pmu_events_map
>  	int rc, event_nr, wanted = get_counterset_start(set) + nr;
>  
>  	if (map) {
> -		struct pmu_event *evp = map->table;
> +		const struct pmu_event *evp = map->table;
>  
>  		for (; evp->name || evp->event || evp->desc; ++evp) {
>  			if (evp->name == NULL || evp->event == NULL)
> 

  parent reply	other threads:[~2021-10-26  6:19 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-15 17:21 [PATCH v2 00/21] perf metric: Fixes and allow modifiers Ian Rogers
2021-10-15 17:21 ` [PATCH v2 01/21] tools lib: Add list_sort Ian Rogers
2021-10-15 17:21 ` [PATCH v2 02/21] perf pmu: Add const to pmu_events_map Ian Rogers
2021-10-26  5:20   ` kajoljain
2021-10-15 17:21 ` [PATCH v2 03/21] perf pmu: Make pmu_sys_event_tables const Ian Rogers
2021-10-19 11:06   ` John Garry
2021-10-26  5:26   ` kajoljain
2021-10-15 17:21 ` [PATCH v2 04/21] perf pmu: Make pmu_event tables const Ian Rogers
2021-10-19 11:19   ` John Garry
2021-10-20 13:24     ` Arnaldo Carvalho de Melo
2021-10-26  6:18   ` kajoljain [this message]
2021-10-15 17:21 ` [PATCH v2 05/21] perf metric: Move runtime value to the expr context Ian Rogers
2021-10-26  8:10   ` kajoljain
2021-10-15 17:21 ` [PATCH v2 06/21] perf metric: Add documentation and rename a variable Ian Rogers
2021-10-26  8:18   ` kajoljain
2021-10-15 17:21 ` [PATCH v2 07/21] perf metric: Add metric new and free Ian Rogers
2021-10-19 11:30   ` John Garry
2021-10-19 11:30     ` John Garry
2021-10-15 17:21 ` [PATCH v2 08/21] perf metric: Only add a referenced metric once Ian Rogers
2021-10-15 17:21 ` [PATCH v2 09/21] perf metric: Modify resolution and recursion check Ian Rogers
2021-10-15 17:21 ` [PATCH v2 10/21] perf metric: Comment data structures Ian Rogers
2021-10-15 17:21 ` [PATCH v2 11/21] perf metric: Document the internal 'struct metric' Ian Rogers
2021-10-15 17:21 ` [PATCH v2 12/21] perf metric: Simplify metric_refs calculation Ian Rogers
2021-10-15 17:21 ` [PATCH v2 13/21] perf parse-events: Add const to evsel name Ian Rogers
2021-10-15 17:21 ` [PATCH v2 14/21] perf parse-events: Add new "metric-id" term Ian Rogers
2021-10-15 17:21 ` [PATCH v2 15/21] perf parse-events: Allow config on kernel PMU events Ian Rogers
2021-10-15 17:21 ` [PATCH v2 16/21] perf metric: Encode and use metric-id as qualifier Ian Rogers
2021-10-15 17:21 ` [PATCH v2 17/21] perf expr: Add subset utility Ian Rogers
2021-10-15 17:21 ` [PATCH v2 18/21] perf metrics: Modify setup and deduplication Ian Rogers
2021-10-15 17:21 ` [PATCH v2 19/21] perf metric: Switch fprintf to pr_err Ian Rogers
2021-10-15 17:21 ` [PATCH v2 20/21] perf parse-events: Identify broken modifiers Ian Rogers
2021-10-15 17:21 ` [PATCH v2 21/21] perf metric: Allow modifiers on metrics Ian Rogers
2021-10-19 15:06   ` Arnaldo Carvalho de Melo
2021-10-19 15:13     ` Arnaldo Carvalho de Melo
2021-10-19 15:17       ` Arnaldo Carvalho de Melo
2021-10-19 15:18         ` Arnaldo Carvalho de Melo
2021-10-19 20:00           ` Ian Rogers
2021-10-20  0:35             ` Arnaldo Carvalho de Melo
2021-10-20 14:31 ` [PATCH v2 00/21] perf metric: Fixes and allow modifiers Arnaldo Carvalho de Melo

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=b2de056d-7741-32cf-22e9-a4fe8b9bd06d@linux.ibm.com \
    --to=kjain@linux.ibm.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.antonov@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andrew.kilroy@arm.com \
    --cc=copy@copy.sh \
    --cc=dzagorui@cisco.com \
    --cc=eranian@google.com \
    --cc=hca@linux.ibm.com \
    --cc=irogers@google.com \
    --cc=jacob.e.keller@intel.com \
    --cc=jiapeng.chong@linux.alibaba.com \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=kan.liang@linux.intel.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=mrtoastcheng@gmail.com \
    --cc=namhyung@kernel.org \
    --cc=nbd@nbd.name \
    --cc=ndesaulniers@google.com \
    --cc=nfraser@codeweavers.com \
    --cc=pc@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=qiangqing.zhang@nxp.com \
    --cc=rickyman7@gmail.com \
    --cc=samitolvanen@google.com \
    --cc=songliubraving@fb.com \
    --cc=sumanthk@linux.ibm.com \
    --cc=thunder.leizhen@huawei.com \
    --cc=tmricht@linux.ibm.com \
    --cc=wanjiabing@vivo.com \
    --cc=yao.jin@linux.intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.