lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 11 Jan 2022 15:07:47 +0000
From:   Andrew Kilroy <andrew.kilroy@....com>
To:     linux-kernel@...r.kernel.org, linux-perf-users@...r.kernel.org,
        acme@...nel.org, john.garry@...wei.com, irogers@...gle.com,
        ak@...ux.intel.com
Cc:     Andrew Kilroy <andrew.kilroy@....com>,
        Mark Rutland <mark.rutland@....com>,
        Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
        Jiri Olsa <jolsa@...hat.com>,
        Namhyung Kim <namhyung@...nel.org>
Subject: [RFC PATCH v2 3/5] perf stat: Topdown json metrics setup function

Move into its own function, the set up of json metrics to measure L1
topdown statistics

Also move the setup of the metrics_only member of stat_config outside,
since its supposed to be common to both the kernel events and json
metrics implementations

Signed-off-by: Andrew Kilroy <andrew.kilroy@....com>
---
 tools/perf/builtin-stat.c | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index ab956ac97d94..6122f3a764f8 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1651,15 +1651,12 @@ static int perf_stat_init_aggr_mode_file(struct perf_stat *st)
 
 static int try_non_json_metrics_topdown(void)
 {
-	int err;
+	int err = 0;
 	const char **metric_attrs = topdown_metric_attrs;
 	unsigned int max_level = 1;
 	char *str = NULL;
 	bool warn = false;
 
-	if (!force_metric_only)
-		stat_config.metric_only = true;
-
 	if (pmu_have_event("cpu", topdown_metric_L2_attrs[5])) {
 		metric_attrs = topdown_metric_L2_attrs;
 		max_level = 2;
@@ -1727,6 +1724,18 @@ static int try_non_json_metrics_topdown(void)
 	return err;
 }
 
+static int try_json_metrics_topdown(void)
+{
+	if (metricgroup__parse_groups_to_evlist(evsel_list, "TopDownL1",
+						stat_config.metric_no_group,
+						stat_config.metric_no_merge,
+						&stat_config.metric_events) < 0) {
+		pr_err("Could not form list of metrics for topdown\n");
+		return -1;
+	}
+	return 0;
+}
+
 /*
  * Add default attributes, if there were no attributes specified or
  * if -d/--detailed, -d -d or -d -d -d is used:
@@ -1926,20 +1935,18 @@ static int add_default_attributes(void)
 	}
 
 	if (topdown_run) {
+		if (!force_metric_only)
+			stat_config.metric_only = true;
+
 		if (topdown_can_use_json_metrics()) {
-			if (metricgroup__parse_groups_to_evlist(evsel_list, "TopDownL1",
-								stat_config.metric_no_group,
-								stat_config.metric_no_merge,
-								&stat_config.metric_events) < 0) {
-				pr_err("Could not form list of metrics for topdown\n");
-				return -1;
-			}
+			err = try_json_metrics_topdown();
+			if (err)
+				return err;
 		} else {
 			err = try_non_json_metrics_topdown();
 			if (err)
 				return err;
 		}
-
 	}
 
 	if (!evsel_list->core.nr_entries) {
-- 
2.17.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ