Commit a7f6c8c8 authored by Jin Yao's avatar Jin Yao Committed by Arnaldo Carvalho de Melo
Browse files

perf list: Hide deprecated events by default



There are some deprecated events listed by perf list. But we can't
remove them from perf list with ease because some old scripts may use
them.

Deprecated events are old names of renamed events.  When an event gets
renamed the old name is kept around for some time and marked with
Deprecated. The newer Intel event lists in the tree already have these
headers.

So we need to keep them in the event list, but provide a new option to
show them. The new option is "--deprecated".

With this patch, the deprecated events are hidden by default but they
can be displayed when option "--deprecated" is enabled.

Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@intel.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20191015025357.8708-1-yao.jin@linux.intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 9afec87e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@ Enable debugging output.
Print how named events are resolved internally into perf events, and also
any extra expressions computed by perf stat.

--deprecated::
Print deprecated events. By default the deprecated events are hidden.

[[EVENT_MODIFIERS]]
EVENT MODIFIERS
---------------
+10 −4
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ int cmd_list(int argc, const char **argv)
	int i;
	bool raw_dump = false;
	bool long_desc_flag = false;
	bool deprecated = false;
	struct option list_options[] = {
		OPT_BOOLEAN(0, "raw-dump", &raw_dump, "Dump raw events"),
		OPT_BOOLEAN('d', "desc", &desc_flag,
@@ -34,6 +35,8 @@ int cmd_list(int argc, const char **argv)
			    "Print longer event descriptions."),
		OPT_BOOLEAN(0, "details", &details_flag,
			    "Print information on the perf event names and expressions used internally by events."),
		OPT_BOOLEAN(0, "deprecated", &deprecated,
			    "Print deprecated events."),
		OPT_INCR(0, "debug", &verbose,
			     "Enable debugging output"),
		OPT_END()
@@ -55,7 +58,7 @@ int cmd_list(int argc, const char **argv)

	if (argc == 0) {
		print_events(NULL, raw_dump, !desc_flag, long_desc_flag,
				details_flag);
				details_flag, deprecated);
		return 0;
	}

@@ -78,7 +81,8 @@ int cmd_list(int argc, const char **argv)
			print_hwcache_events(NULL, raw_dump);
		else if (strcmp(argv[i], "pmu") == 0)
			print_pmu_events(NULL, raw_dump, !desc_flag,
						long_desc_flag, details_flag);
						long_desc_flag, details_flag,
						deprecated);
		else if (strcmp(argv[i], "sdt") == 0)
			print_sdt_events(NULL, NULL, raw_dump);
		else if (strcmp(argv[i], "metric") == 0 || strcmp(argv[i], "metrics") == 0)
@@ -91,7 +95,8 @@ int cmd_list(int argc, const char **argv)
			if (sep == NULL) {
				print_events(argv[i], raw_dump, !desc_flag,
							long_desc_flag,
							details_flag);
							details_flag,
							deprecated);
				continue;
			}
			sep_idx = sep - argv[i];
@@ -117,7 +122,8 @@ int cmd_list(int argc, const char **argv)
			print_hwcache_events(s, raw_dump);
			print_pmu_events(s, raw_dump, !desc_flag,
						long_desc_flag,
						details_flag);
						details_flag,
						deprecated);
			print_tracepoint_events(NULL, s, raw_dump);
			print_sdt_events(NULL, s, raw_dump);
			metricgroup__print(true, true, s, raw_dump, details_flag);
+20 −6
Original line number Diff line number Diff line
@@ -322,7 +322,8 @@ static int print_events_table_entry(void *data, char *name, char *event,
				    char *desc, char *long_desc,
				    char *pmu, char *unit, char *perpkg,
				    char *metric_expr,
				    char *metric_name, char *metric_group)
				    char *metric_name, char *metric_group,
				    char *deprecated)
{
	struct perf_entry_data *pd = data;
	FILE *outfp = pd->outfp;
@@ -354,6 +355,8 @@ static int print_events_table_entry(void *data, char *name, char *event,
		fprintf(outfp, "\t.metric_name = \"%s\",\n", metric_name);
	if (metric_group)
		fprintf(outfp, "\t.metric_group = \"%s\",\n", metric_group);
	if (deprecated)
		fprintf(outfp, "\t.deprecated = \"%s\",\n", deprecated);
	fprintf(outfp, "},\n");

	return 0;
@@ -371,6 +374,7 @@ struct event_struct {
	char *metric_expr;
	char *metric_name;
	char *metric_group;
	char *deprecated;
};

#define ADD_EVENT_FIELD(field) do { if (field) {		\
@@ -398,6 +402,7 @@ struct event_struct {
	op(metric_expr);					\
	op(metric_name);					\
	op(metric_group);					\
	op(deprecated);						\
} while (0)

static LIST_HEAD(arch_std_events);
@@ -416,7 +421,8 @@ static void free_arch_std_events(void)
static int save_arch_std_events(void *data, char *name, char *event,
				char *desc, char *long_desc, char *pmu,
				char *unit, char *perpkg, char *metric_expr,
				char *metric_name, char *metric_group)
				char *metric_name, char *metric_group,
				char *deprecated)
{
	struct event_struct *es;

@@ -479,7 +485,8 @@ static int
try_fixup(const char *fn, char *arch_std, char **event, char **desc,
	  char **name, char **long_desc, char **pmu, char **filter,
	  char **perpkg, char **unit, char **metric_expr, char **metric_name,
	  char **metric_group, unsigned long long eventcode)
	  char **metric_group, unsigned long long eventcode,
	  char **deprecated)
{
	/* try to find matching event from arch standard values */
	struct event_struct *es;
@@ -507,7 +514,8 @@ int json_events(const char *fn,
		      char *long_desc,
		      char *pmu, char *unit, char *perpkg,
		      char *metric_expr,
		      char *metric_name, char *metric_group),
		      char *metric_name, char *metric_group,
		      char *deprecated),
	  void *data)
{
	int err;
@@ -536,6 +544,7 @@ int json_events(const char *fn,
		char *metric_expr = NULL;
		char *metric_name = NULL;
		char *metric_group = NULL;
		char *deprecated = NULL;
		char *arch_std = NULL;
		unsigned long long eventcode = 0;
		struct msrmap *msr = NULL;
@@ -614,6 +623,8 @@ int json_events(const char *fn,
				addfield(map, &unit, "", "", val);
			} else if (json_streq(map, field, "PerPkg")) {
				addfield(map, &perpkg, "", "", val);
			} else if (json_streq(map, field, "Deprecated")) {
				addfield(map, &deprecated, "", "", val);
			} else if (json_streq(map, field, "MetricName")) {
				addfield(map, &metric_name, "", "", val);
			} else if (json_streq(map, field, "MetricGroup")) {
@@ -658,12 +669,14 @@ int json_events(const char *fn,
			err = try_fixup(fn, arch_std, &event, &desc, &name,
					&long_desc, &pmu, &filter, &perpkg,
					&unit, &metric_expr, &metric_name,
					&metric_group, eventcode);
					&metric_group, eventcode,
					&deprecated);
			if (err)
				goto free_strings;
		}
		err = func(data, name, real_event(name, event), desc, long_desc,
			   pmu, unit, perpkg, metric_expr, metric_name, metric_group);
			   pmu, unit, perpkg, metric_expr, metric_name,
			   metric_group, deprecated);
free_strings:
		free(event);
		free(desc);
@@ -673,6 +686,7 @@ free_strings:
		free(pmu);
		free(filter);
		free(perpkg);
		free(deprecated);
		free(unit);
		free(metric_expr);
		free(metric_name);
+2 −1
Original line number Diff line number Diff line
@@ -7,7 +7,8 @@ int json_events(const char *fn,
				char *long_desc,
				char *pmu,
				char *unit, char *perpkg, char *metric_expr,
				char *metric_name, char *metric_group),
				char *metric_name, char *metric_group,
				char *deprecated),
		void *data);
char *get_cpu_str(void);

+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ struct pmu_event {
	const char *metric_expr;
	const char *metric_name;
	const char *metric_group;
	const char *deprecated;
};

/*
Loading