perf mem/c2c: Avoid printing empty lines for unsupported events
authorRavi Bangoria <ravi.bangoria@amd.com>
Thu, 6 Oct 2022 15:39:44 +0000 (21:09 +0530)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 6 Oct 2022 19:31:14 +0000 (16:31 -0300)
The 'perf mem' and 'perf c2c' tools can be used with 3 different events:
load, store and combined load-store. Some architectures might support
only partial set of events in which case, perf prints an empty line for
unsupported events.  Avoid that.

Ex, AMD Zen cpus supports only combined load-store event and does not
support individual load and store event.

Before patch:
  $ perf mem record -e list

  mem-ldst     : available
  $

After patch:

  $ perf mem record -e list
  mem-ldst     : available
  $

Signed-off-by: Ravi Bangoria <ravi.bangoria@amd.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ali Saidi <alisaidi@amazon.com>
Cc: Ananth Narayan <ananth.narayan@amd.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Joe Mario <jmario@redhat.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Kim Phillips <kim.phillips@amd.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sandipan Das <sandipan.das@amd.com>
Cc: Santosh Shukla <santosh.shukla@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Link: https://lore.kernel.org/r/20221006153946.7816-7-ravi.bangoria@amd.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/mem-events.c

index 8909dc7b14a71b15249fd94f8abc0153c09e1f07..6c7feecd2e049d29c13e413d35b72e9195273da5 100644 (file)
@@ -156,11 +156,12 @@ void perf_mem_events__list(void)
        for (j = 0; j < PERF_MEM_EVENTS__MAX; j++) {
                struct perf_mem_event *e = perf_mem_events__ptr(j);
 
-               fprintf(stderr, "%-13s%-*s%s\n",
-                       e->tag ?: "",
-                       verbose > 0 ? 25 : 0,
-                       verbose > 0 ? perf_mem_events__name(j, NULL) : "",
-                       e->supported ? ": available" : "");
+               fprintf(stderr, "%-*s%-*s%s",
+                       e->tag ? 13 : 0,
+                       e->tag ? : "",
+                       e->tag && verbose > 0 ? 25 : 0,
+                       e->tag && verbose > 0 ? perf_mem_events__name(j, NULL) : "",
+                       e->supported ? ": available\n" : "");
        }
 }