Commit 9d3bc457 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'perf-tools-fixes-for-v6.7-2-2023-12-08' of...

Merge tag 'perf-tools-fixes-for-v6.7-2-2023-12-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools

Pull perf tools fixes from Namhyung Kim:
 "A random set of small bug fixes including:

   - Fix segfault on AmpereOne due to missing default metricgroup name

   - Fix segfault on `perf list --json` due to NULL pointer"

* tag 'perf-tools-fixes-for-v6.7-2-2023-12-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools:
  perf list: Fix JSON segfault by setting the used skip_duplicate_pmus callback
  perf vendor events arm64: AmpereOne: Add missing DefaultMetricgroupName fields
  perf metrics: Avoid segv if default metricgroup isn't set
parents 2099306c b1693747
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -434,6 +434,11 @@ static void json_print_metric(void *ps __maybe_unused, const char *group,
	strbuf_release(&buf);
}

static bool json_skip_duplicate_pmus(void *ps __maybe_unused)
{
	return false;
}

static bool default_skip_duplicate_pmus(void *ps)
{
	struct print_state *print_state = ps;
@@ -503,6 +508,7 @@ int cmd_list(int argc, const char **argv)
			.print_end = json_print_end,
			.print_event = json_print_event,
			.print_metric = json_print_metric,
			.skip_duplicate_pmus = json_skip_duplicate_pmus,
		};
		ps = &json_ps;
	} else {
+2 −0
Original line number Diff line number Diff line
@@ -231,6 +231,7 @@
        "MetricName": "slots_lost_misspeculation_fraction",
        "MetricExpr": "100 * ((OP_SPEC - OP_RETIRED) / (CPU_CYCLES * #slots))",
        "BriefDescription": "Fraction of slots lost due to misspeculation",
        "DefaultMetricgroupName": "TopdownL1",
        "MetricGroup": "Default;TopdownL1",
        "ScaleUnit": "1percent of slots"
    },
@@ -238,6 +239,7 @@
        "MetricName": "retired_fraction",
        "MetricExpr": "100 * (OP_RETIRED / (CPU_CYCLES * #slots))",
        "BriefDescription": "Fraction of slots retiring, useful work",
        "DefaultMetricgroupName": "TopdownL1",
        "MetricGroup": "Default;TopdownL1",
	"ScaleUnit": "1percent of slots"
    },
+1 −1
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ static struct metric *metric__new(const struct pmu_metric *pm,

	m->pmu = pm->pmu ?: "cpu";
	m->metric_name = pm->metric_name;
	m->default_metricgroup_name = pm->default_metricgroup_name;
	m->default_metricgroup_name = pm->default_metricgroup_name ?: "";
	m->modifier = NULL;
	if (modifier) {
		m->modifier = strdup(modifier);