Lines Matching +full:ddr +full:- +full:pmu
1 // SPDX-License-Identifier: GPL-2.0
3 * An empty pmu-events.c file used when there is no architecture json files in
8 #include "pmu-events/pmu-events.h"
10 #include "util/pmu.h"
31 .desc = "Memory cluster signals to block micro-op dispatch for any reason",
46 .pmu = "hisi_sccl,ddrc",
51 ….desc = "A cross-core snoop resulted from L3 Eviction which misses in some processor core. Unit: u…
53 .long_desc = "A cross-core snoop resulted from L3 Eviction which misses in some processor core",
54 .pmu = "uncore_cbox",
57 .name = "event-hyphen",
62 .pmu = "uncore_cbox",
65 .name = "event-two-hyph",
70 .pmu = "uncore_cbox",
78 .pmu = "hisi_sccl,l3c",
86 .pmu = "uncore_imc_free_running",
94 .pmu = "uncore_imc",
131 .metric_expr = "l1d\\-loads\\-misses / inst_retired.any",
135 .metric_expr = "l1i\\-loads\\-misses / inst_retired.any",
148 .metric_expr = "max(l2_rqsts.all_demand_data_rd - l2_rqsts.demand_data_rd_hit, 0) + "
186 /* Struct used to make the PMU event table implementation opaque to callers. */
191 /* Struct used to make the PMU metric table implementation opaque to callers. */
197 * Map a CPU to its table of PMU events. The CPU is identified by the
198 * cpuid field, which is an arch-specific identifier for the CPU.
199 * The identifier specified in tools/perf/pmu-events/arch/xxx/mapfile
213 * table of PMU events.
234 .desc = "ddr write-cycles event. Unit: uncore_sys_ddr_pmu ",
237 .pmu = "uncore_sys_ddr_pmu",
242 .desc = "ccn read-cycles event. Unit: uncore_sys_ccn_pmu ",
245 .pmu = "uncore_sys_ccn_pmu",
269 int pmu_events_table__for_each_event(const struct pmu_events_table *table, struct perf_pmu *pmu, in pmu_events_table__for_each_event() argument
272 for (const struct pmu_event *pe = &table->entries[0]; pe->name; pe++) { in pmu_events_table__for_each_event()
275 if (pmu && !pmu__name_match(pmu, pe->pmu)) in pmu_events_table__for_each_event()
286 struct perf_pmu *pmu, in pmu_events_table__find_event() argument
291 for (const struct pmu_event *pe = &table->entries[0]; pe->name; pe++) { in pmu_events_table__find_event()
292 if (pmu && !pmu__name_match(pmu, pe->pmu)) in pmu_events_table__find_event()
295 if (!strcasecmp(pe->name, name)) in pmu_events_table__find_event()
298 return -1000; in pmu_events_table__find_event()
302 struct perf_pmu *pmu) in pmu_events_table__num_events() argument
306 for (const struct pmu_event *pe = &table->entries[0]; pe->name; pe++) { in pmu_events_table__num_events()
307 if (pmu && !pmu__name_match(pmu, pe->pmu)) in pmu_events_table__num_events()
318 for (const struct pmu_metric *pm = &table->entries[0]; pm->metric_expr; pm++) { in pmu_metrics_table__for_each_metric()
327 const struct pmu_events_table *perf_pmu__find_events_table(struct perf_pmu *pmu) in perf_pmu__find_events_table() argument
330 char *cpuid = perf_pmu__getcpuid(pmu); in perf_pmu__find_events_table()
343 if (!map->cpuid) in perf_pmu__find_events_table()
346 if (!strcmp_cpuid_str(map->cpuid, cpuid)) { in perf_pmu__find_events_table()
347 table = &map->event_table; in perf_pmu__find_events_table()
355 const struct pmu_metrics_table *perf_pmu__find_metrics_table(struct perf_pmu *pmu) in perf_pmu__find_metrics_table() argument
358 char *cpuid = perf_pmu__getcpuid(pmu); in perf_pmu__find_metrics_table()
371 if (!map->cpuid) in perf_pmu__find_metrics_table()
374 if (!strcmp_cpuid_str(map->cpuid, cpuid)) { in perf_pmu__find_metrics_table()
375 table = &map->metric_table; in perf_pmu__find_metrics_table()
386 tables->arch; in find_core_events_table()
388 if (!strcmp(tables->arch, arch) && !strcmp_cpuid_str(tables->cpuid, cpuid)) in find_core_events_table()
389 return &tables->event_table; in find_core_events_table()
397 tables->arch; in find_core_metrics_table()
399 if (!strcmp(tables->arch, arch) && !strcmp_cpuid_str(tables->cpuid, cpuid)) in find_core_metrics_table()
400 return &tables->metric_table; in find_core_metrics_table()
407 for (const struct pmu_events_map *tables = &pmu_events_map[0]; tables->arch; tables++) { in pmu_for_each_core_event()
408 int ret = pmu_events_table__for_each_event(&tables->event_table, in pmu_for_each_core_event()
409 /*pmu=*/ NULL, fn, data); in pmu_for_each_core_event()
420 tables->arch; in pmu_for_each_core_metric()
422 int ret = pmu_metrics_table__for_each_metric(&tables->metric_table, fn, data); in pmu_for_each_core_metric()
433 tables->name; in find_sys_events_table()
435 if (!strcmp(tables->name, name)) in find_sys_events_table()
436 return &tables->table; in find_sys_events_table()
444 tables->name; in pmu_for_each_sys_event()
446 int ret = pmu_events_table__for_each_event(&tables->table, /*pmu=*/ NULL, fn, data); in pmu_for_each_sys_event()