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

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
...@@ -434,6 +434,11 @@ static void json_print_metric(void *ps __maybe_unused, const char *group, ...@@ -434,6 +434,11 @@ static void json_print_metric(void *ps __maybe_unused, const char *group,
strbuf_release(&buf); strbuf_release(&buf);
} }
static bool json_skip_duplicate_pmus(void *ps __maybe_unused)
{
return false;
}
static bool default_skip_duplicate_pmus(void *ps) static bool default_skip_duplicate_pmus(void *ps)
{ {
struct print_state *print_state = ps; struct print_state *print_state = ps;
...@@ -503,6 +508,7 @@ int cmd_list(int argc, const char **argv) ...@@ -503,6 +508,7 @@ int cmd_list(int argc, const char **argv)
.print_end = json_print_end, .print_end = json_print_end,
.print_event = json_print_event, .print_event = json_print_event,
.print_metric = json_print_metric, .print_metric = json_print_metric,
.skip_duplicate_pmus = json_skip_duplicate_pmus,
}; };
ps = &json_ps; ps = &json_ps;
} else { } else {
......
...@@ -231,6 +231,7 @@ ...@@ -231,6 +231,7 @@
"MetricName": "slots_lost_misspeculation_fraction", "MetricName": "slots_lost_misspeculation_fraction",
"MetricExpr": "100 * ((OP_SPEC - OP_RETIRED) / (CPU_CYCLES * #slots))", "MetricExpr": "100 * ((OP_SPEC - OP_RETIRED) / (CPU_CYCLES * #slots))",
"BriefDescription": "Fraction of slots lost due to misspeculation", "BriefDescription": "Fraction of slots lost due to misspeculation",
"DefaultMetricgroupName": "TopdownL1",
"MetricGroup": "Default;TopdownL1", "MetricGroup": "Default;TopdownL1",
"ScaleUnit": "1percent of slots" "ScaleUnit": "1percent of slots"
}, },
...@@ -238,6 +239,7 @@ ...@@ -238,6 +239,7 @@
"MetricName": "retired_fraction", "MetricName": "retired_fraction",
"MetricExpr": "100 * (OP_RETIRED / (CPU_CYCLES * #slots))", "MetricExpr": "100 * (OP_RETIRED / (CPU_CYCLES * #slots))",
"BriefDescription": "Fraction of slots retiring, useful work", "BriefDescription": "Fraction of slots retiring, useful work",
"DefaultMetricgroupName": "TopdownL1",
"MetricGroup": "Default;TopdownL1", "MetricGroup": "Default;TopdownL1",
"ScaleUnit": "1percent of slots" "ScaleUnit": "1percent of slots"
}, },
......
...@@ -225,7 +225,7 @@ static struct metric *metric__new(const struct pmu_metric *pm, ...@@ -225,7 +225,7 @@ static struct metric *metric__new(const struct pmu_metric *pm,
m->pmu = pm->pmu ?: "cpu"; m->pmu = pm->pmu ?: "cpu";
m->metric_name = pm->metric_name; 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; m->modifier = NULL;
if (modifier) { if (modifier) {
m->modifier = strdup(modifier); m->modifier = strdup(modifier);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment