Lines Matching +full:event +full:- +full:name
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
46 #include "pmu-events/pmu-events.h"
62 {"UNHALTED-CORE-CYCLES", "cpu_clk_unhalted.thread"},
64 {"LLC-MISSES", "LONGEST_LAT_CACHE.MISS"},
66 {"LLC-REFERENCE", "LONGEST_LAT_CACHE.REFERENCE"},
68 {"LLC-MISS-RHITM", "mem_load_l3_miss_retired.remote_hitm"},
72 {"BRANCH-INSTRUCTION-RETIRED", "BR_INST_RETIRED.ALL_BRANCHES"},
74 {"BRANCH-MISSES-RETIRED", "BR_MISP_RETIRED.ALL_BRANCHES"},
75 {"unhalted-cycles", "cpu_clk_unhalted.thread"},
77 {"branch-mispredicts", "br_misp_retired.all_branches"},
80 {"ic-misses", "frontend_retired.l1i_miss"},
86 {"UNHALTED-CORE-CYCLES", "ls_not_halted_cyc"},
88 {"LLC-MISSES", "l3_comb_clstr_state.request_miss"},
90 {"LLC-REFERENCE", "l3_request_g1.caching_l3_cache_accesses"},
92 {"BRANCH-INSTRUCTION-RETIRED", "ex_ret_brn"},
94 {"BRANCH-MISSES-RETIRED", "ex_ret_brn_misp"},
95 {"unhalted-cycles", "ls_not_halted_cyc"},
97 {"branch-mispredicts", "ex_ret_brn_misp"},
112 (void *)NULL, 0) == -1) in pmu_events_mfr()
134 pmu_alias_get(const char *name) in pmu_alias_get() argument
141 return (name); in pmu_alias_get()
147 return (name); in pmu_alias_get()
149 for (pa = pmu_alias_table; pa->pa_alias != NULL; pa++) in pmu_alias_get()
150 if (strcasecmp(name, pa->pa_alias) == 0) in pmu_alias_get()
151 return (pa->pa_name); in pmu_alias_get()
153 return (name); in pmu_alias_get()
158 pmu_alias_get(const char *name) in pmu_alias_get() argument
160 return (name); in pmu_alias_get()
167 {"UNHALTED-CORE-CYCLES", "CPU_CYCLES"},
169 {"LLC-MISSES", "LL_CACHE_MISS_RD"},
171 {"LLC-REFERENCE", "LL_CACHE_RD"},
173 {"BRANCH-INSTRUCTION-RETIRED", "BR_RETIRED"},
175 {"BRANCH-MISSES-RETIRED", "BR_MIS_PRED_RETIRED"},
176 {"unhalted-cycles", "CPU_CYCLES"},
178 {"branch-mispredicts", "BR_MIS_PRED_RETIRED"},
185 pmu_alias_get(const char *name) in pmu_alias_get() argument
189 for (pa = pmu_armv8_alias_table; pa->pa_alias != NULL; pa++) in pmu_alias_get()
190 if (strcasecmp(name, pa->pa_alias) == 0) in pmu_alias_get()
191 return (pa->pa_name); in pmu_alias_get()
193 return (name); in pmu_alias_get()
199 pmu_alias_get(const char *name) in pmu_alias_get() argument
202 return (name); in pmu_alias_get()
238 (void *)NULL, 0) == -1) in pmu_events_map_get()
241 for (pme = pmu_events_map; pme->cpuid != NULL; pme++) { in pmu_events_map_get()
242 if (regcomp(&re, pme->cpuid, REG_EXTENDED) != 0) { in pmu_events_map_get()
244 pme->cpuid); in pmu_events_map_get()
251 || buf[pmatch[0].rm_eo] == '-')) in pmu_events_map_get()
267 for (i = 0, pe = pme->table; pe->name || pe->desc || pe->event; pe++, i++) { in pmu_event_get()
268 if (pe->name == NULL) in pmu_event_get()
270 if (strcasecmp(pe->name, event_name) == 0) { in pmu_event_get()
280 pmc_pmu_idx_get_by_event(const char *cpuid, const char *event) in pmc_pmu_idx_get_by_event() argument
285 realname = pmu_alias_get(event); in pmc_pmu_idx_get_by_event()
287 return (-1); in pmc_pmu_idx_get_by_event()
298 assert(pme->table[idx].name); in pmc_pmu_event_get_by_idx()
299 return (pme->table[idx].name); in pmc_pmu_event_get_by_idx()
305 char *event; in pmu_parse_event() local
309 if ((event = strdup(eventin)) == NULL) in pmu_parse_event()
311 r = event; in pmu_parse_event()
313 ped->ped_period = DEFAULT_SAMPLE_COUNT; in pmu_parse_event()
314 ped->ped_umask = -1; in pmu_parse_event()
315 while ((kvp = strsep(&event, ",")) != NULL) { in pmu_parse_event()
321 ped->ped_umask = strtol(value, NULL, 16); in pmu_parse_event()
322 else if (strcmp(key, "event") == 0) in pmu_parse_event()
323 ped->ped_event = strtol(value, NULL, 16); in pmu_parse_event()
325 ped->ped_period = strtol(value, NULL, 10); in pmu_parse_event()
327 ped->ped_offcore_rsp = strtol(value, NULL, 16); in pmu_parse_event()
329 ped->ped_any = strtol(value, NULL, 10); in pmu_parse_event()
331 ped->ped_cmask = strtol(value, NULL, 10); in pmu_parse_event()
333 ped->ped_inv = strtol(value, NULL, 10); in pmu_parse_event()
335 ped->ped_edge = strtol(value, NULL, 10); in pmu_parse_event()
337 ped->ped_frontend = strtol(value, NULL, 16); in pmu_parse_event()
339 ped->ped_ldlat = strtol(value, NULL, 16); in pmu_parse_event()
341 ped->ped_fc_mask = strtol(value, NULL, 16); in pmu_parse_event()
343 ped->ped_ch_mask = strtol(value, NULL, 16); in pmu_parse_event()
345 ped->ped_config1 = strtol(value, NULL, 16); in pmu_parse_event()
347 ped->ped_l3_thread = strtol(value, NULL, 16); in pmu_parse_event()
349 ped->ped_l3_slice = strtol(value, NULL, 16); in pmu_parse_event()
369 if (pe->event == NULL) in pmc_pmu_sample_rate_get()
371 if (pmu_parse_event(&ped, pe->event)) in pmc_pmu_sample_rate_get()
399 for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { in pmc_pmu_print_counters()
400 if (pe->name == NULL) in pmc_pmu_print_counters()
402 if (event_name != NULL && strcasestr(pe->name, event_name) == NULL) in pmc_pmu_print_counters()
404 printf("\t%s\n", pe->name); in pmc_pmu_print_counters()
406 pmu_parse_event(&ped, pe->event); in pmc_pmu_print_counters()
418 for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { in pmc_pmu_print_counter_desc()
419 if (pe->name == NULL) in pmc_pmu_print_counter_desc()
421 if (strcasestr(pe->name, ev) != NULL && in pmc_pmu_print_counter_desc()
422 pe->desc != NULL) in pmc_pmu_print_counter_desc()
423 printf("%s:\t%s\n", pe->name, pe->desc); in pmc_pmu_print_counter_desc()
435 for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { in pmc_pmu_print_counter_desc_long()
436 if (pe->name == NULL) in pmc_pmu_print_counter_desc_long()
438 if (strcasestr(pe->name, ev) != NULL) { in pmc_pmu_print_counter_desc_long()
439 if (pe->long_desc != NULL) in pmc_pmu_print_counter_desc_long()
440 printf("%s:\n%s\n", pe->name, pe->long_desc); in pmc_pmu_print_counter_desc_long()
441 else if (pe->desc != NULL) in pmc_pmu_print_counter_desc_long()
442 printf("%s:\t%s\n", pe->name, pe->desc); in pmc_pmu_print_counter_desc_long()
455 for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { in pmc_pmu_print_counter_full()
456 if (pe->name == NULL) in pmc_pmu_print_counter_full()
458 if (strcasestr(pe->name, ev) == NULL) in pmc_pmu_print_counter_full()
460 printf("name: %s\n", pe->name); in pmc_pmu_print_counter_full()
461 if (pe->long_desc != NULL) in pmc_pmu_print_counter_full()
462 printf("desc: %s\n", pe->long_desc); in pmc_pmu_print_counter_full()
463 else if (pe->desc != NULL) in pmc_pmu_print_counter_full()
464 printf("desc: %s\n", pe->desc); in pmc_pmu_print_counter_full()
465 if (pe->event != NULL) in pmc_pmu_print_counter_full()
466 printf("event: %s\n", pe->event); in pmc_pmu_print_counter_full()
467 if (pe->topic != NULL) in pmc_pmu_print_counter_full()
468 printf("topic: %s\n", pe->topic); in pmc_pmu_print_counter_full()
469 if (pe->pmu != NULL) in pmc_pmu_print_counter_full()
470 printf("pmu: %s\n", pe->pmu); in pmc_pmu_print_counter_full()
471 if (pe->unit != NULL) in pmc_pmu_print_counter_full()
472 printf("unit: %s\n", pe->unit); in pmc_pmu_print_counter_full()
473 if (pe->perpkg != NULL) in pmc_pmu_print_counter_full()
474 printf("perpkg: %s\n", pe->perpkg); in pmc_pmu_print_counter_full()
475 if (pe->metric_expr != NULL) in pmc_pmu_print_counter_full()
476 printf("metric_expr: %s\n", pe->metric_expr); in pmc_pmu_print_counter_full()
477 if (pe->metric_name != NULL) in pmc_pmu_print_counter_full()
478 printf("metric_name: %s\n", pe->metric_name); in pmc_pmu_print_counter_full()
479 if (pe->metric_group != NULL) in pmc_pmu_print_counter_full()
480 printf("metric_group: %s\n", pe->metric_group); in pmc_pmu_print_counter_full()
491 int idx = -1; in pmc_pmu_amd_pmcallocate()
493 amd = &pm->pm_md.pm_amd; in pmc_pmu_amd_pmcallocate()
494 if (ped->ped_umask > 0) { in pmc_pmu_amd_pmcallocate()
495 pm->pm_caps |= PMC_CAP_QUALIFIER; in pmc_pmu_amd_pmcallocate()
496 amd->pm_amd_config |= AMD_PMC_TO_UNITMASK(ped->ped_umask); in pmc_pmu_amd_pmcallocate()
498 pm->pm_class = PMC_CLASS_K8; in pmc_pmu_amd_pmcallocate()
501 if (strcmp("l3cache", pe->topic) == 0){ in pmc_pmu_amd_pmcallocate()
502 amd->pm_amd_config |= AMD_PMC_TO_EVENTMASK(ped->ped_event); in pmc_pmu_amd_pmcallocate()
503 amd->pm_amd_sub_class = PMC_AMD_SUB_CLASS_L3_CACHE; in pmc_pmu_amd_pmcallocate()
504 amd->pm_amd_config |= AMD_PMC_TO_L3SLICE(ped->ped_l3_slice); in pmc_pmu_amd_pmcallocate()
505 amd->pm_amd_config |= AMD_PMC_TO_L3CORE(ped->ped_l3_thread); in pmc_pmu_amd_pmcallocate()
507 else if (strcmp("data fabric", pe->topic) == 0){ in pmc_pmu_amd_pmcallocate()
509 amd->pm_amd_config |= AMD_PMC_TO_EVENTMASK_DF(ped->ped_event); in pmc_pmu_amd_pmcallocate()
510 amd->pm_amd_sub_class = PMC_AMD_SUB_CLASS_DATA_FABRIC; in pmc_pmu_amd_pmcallocate()
513 amd->pm_amd_config |= AMD_PMC_TO_EVENTMASK(ped->ped_event); in pmc_pmu_amd_pmcallocate()
514 amd->pm_amd_sub_class = PMC_AMD_SUB_CLASS_CORE; in pmc_pmu_amd_pmcallocate()
515 if ((pm->pm_caps & (PMC_CAP_USER|PMC_CAP_SYSTEM)) == 0 || in pmc_pmu_amd_pmcallocate()
516 (pm->pm_caps & (PMC_CAP_USER|PMC_CAP_SYSTEM)) == in pmc_pmu_amd_pmcallocate()
518 amd->pm_amd_config |= (AMD_PMC_USR | AMD_PMC_OS); in pmc_pmu_amd_pmcallocate()
519 else if (pm->pm_caps & PMC_CAP_USER) in pmc_pmu_amd_pmcallocate()
520 amd->pm_amd_config |= AMD_PMC_USR; in pmc_pmu_amd_pmcallocate()
521 else if (pm->pm_caps & PMC_CAP_SYSTEM) in pmc_pmu_amd_pmcallocate()
522 amd->pm_amd_config |= AMD_PMC_OS; in pmc_pmu_amd_pmcallocate()
523 if (ped->ped_edge) in pmc_pmu_amd_pmcallocate()
524 amd->pm_amd_config |= AMD_PMC_EDGE; in pmc_pmu_amd_pmcallocate()
525 if (ped->ped_inv) in pmc_pmu_amd_pmcallocate()
526 amd->pm_amd_config |= AMD_PMC_INVERT; in pmc_pmu_amd_pmcallocate()
527 if (pm->pm_caps & PMC_CAP_INTERRUPT) in pmc_pmu_amd_pmcallocate()
528 amd->pm_amd_config |= AMD_PMC_INT; in pmc_pmu_amd_pmcallocate()
539 iap = &pm->pm_md.pm_iap; in pmc_pmu_intel_pmcallocate()
542 pm->pm_class = PMC_CLASS_UCP; in pmc_pmu_intel_pmcallocate()
543 pm->pm_caps |= PMC_CAP_QUALIFIER; in pmc_pmu_intel_pmcallocate()
544 } else if (ped->ped_event == 0x0) { in pmc_pmu_intel_pmcallocate()
545 pm->pm_class = PMC_CLASS_IAF; in pmc_pmu_intel_pmcallocate()
547 pm->pm_class = PMC_CLASS_IAP; in pmc_pmu_intel_pmcallocate()
548 pm->pm_caps |= PMC_CAP_QUALIFIER; in pmc_pmu_intel_pmcallocate()
550 iap->pm_iap_config |= IAP_EVSEL(ped->ped_event); in pmc_pmu_intel_pmcallocate()
551 if (ped->ped_umask > 0) in pmc_pmu_intel_pmcallocate()
552 iap->pm_iap_config |= IAP_UMASK(ped->ped_umask); in pmc_pmu_intel_pmcallocate()
553 iap->pm_iap_config |= IAP_CMASK(ped->ped_cmask); in pmc_pmu_intel_pmcallocate()
554 iap->pm_iap_rsp = ped->ped_offcore_rsp; in pmc_pmu_intel_pmcallocate()
556 if ((pm->pm_caps & (PMC_CAP_USER|PMC_CAP_SYSTEM)) == 0 || in pmc_pmu_intel_pmcallocate()
557 (pm->pm_caps & (PMC_CAP_USER|PMC_CAP_SYSTEM)) == in pmc_pmu_intel_pmcallocate()
559 iap->pm_iap_config |= (IAP_USR | IAP_OS); in pmc_pmu_intel_pmcallocate()
560 else if (pm->pm_caps & PMC_CAP_USER) in pmc_pmu_intel_pmcallocate()
561 iap->pm_iap_config |= IAP_USR; in pmc_pmu_intel_pmcallocate()
562 else if (pm->pm_caps & PMC_CAP_SYSTEM) in pmc_pmu_intel_pmcallocate()
563 iap->pm_iap_config |= IAP_OS; in pmc_pmu_intel_pmcallocate()
564 if (ped->ped_edge) in pmc_pmu_intel_pmcallocate()
565 iap->pm_iap_config |= IAP_EDGE; in pmc_pmu_intel_pmcallocate()
566 if (ped->ped_any) in pmc_pmu_intel_pmcallocate()
567 iap->pm_iap_config |= IAP_ANY; in pmc_pmu_intel_pmcallocate()
568 if (ped->ped_inv) in pmc_pmu_intel_pmcallocate()
569 iap->pm_iap_config |= IAP_INV; in pmc_pmu_intel_pmcallocate()
570 if (pm->pm_caps & PMC_CAP_INTERRUPT) in pmc_pmu_intel_pmcallocate()
571 iap->pm_iap_config |= IAP_INT; in pmc_pmu_intel_pmcallocate()
581 int idx = -1; in pmc_pmu_pmcallocate_md()
586 bzero(&pm->pm_md, sizeof(pm->pm_md)); in pmc_pmu_pmcallocate_md()
587 pm->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in pmc_pmu_pmcallocate_md()
592 pm->pm_ev = idx; in pmc_pmu_pmcallocate_md()
594 if (pe->event == NULL) in pmc_pmu_pmcallocate_md()
596 if (pmu_parse_event(&ped, pe->event)) in pmc_pmu_pmcallocate_md()
612 int idx = -1; in pmc_pmu_pmcallocate_md()
614 bzero(&pm->pm_md, sizeof(pm->pm_md)); in pmc_pmu_pmcallocate_md()
615 pm->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in pmc_pmu_pmcallocate_md()
620 if (pe->event == NULL) in pmc_pmu_pmcallocate_md()
622 if (pmu_parse_event(&ped, pe->event)) in pmc_pmu_pmcallocate_md()
625 pm->pm_ev = idx; in pmc_pmu_pmcallocate_md()
626 pm->pm_md.pm_event = ped.ped_event; in pmc_pmu_pmcallocate_md()
627 pm->pm_class = PMC_CLASS_POWER8; in pmc_pmu_pmcallocate_md()
638 int idx = -1; in pmc_pmu_pmcallocate_md()
643 if (pe->event == NULL) in pmc_pmu_pmcallocate_md()
645 if (pmu_parse_event(&ped, pe->event)) in pmc_pmu_pmcallocate_md()
649 pm->pm_ev = idx; in pmc_pmu_pmcallocate_md()
650 pm->pm_md.pm_md_config = ped.ped_event; in pmc_pmu_pmcallocate_md()
651 pm->pm_class = PMC_CLASS_ARMV8; in pmc_pmu_pmcallocate_md()
652 pm->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in pmc_pmu_pmcallocate_md()
674 pm->pm_ev = 0; in pmc_pmu_pmcallocate()
675 pm->pm_caps = 0; in pmc_pmu_pmcallocate()
676 pm->pm_class = 0; in pmc_pmu_pmcallocate()
681 pm->pm_flags |= PMC_F_EV_PMU; in pmc_pmu_pmcallocate()