Lines Matching +full:add +full:- +full:pmem

1 // SPDX-License-Identifier: GPL-2.0
12 #include "mem-events.h"
23 E("ldlat-loads", "cpu/mem-loads,ldlat=%u/P", "cpu/events/mem-loads"),
24 E("ldlat-stores", "cpu/mem-stores/P", "cpu/events/mem-stores"),
51 e->name, perf_mem_events__loads_ldlat); in perf_mem_events__name()
56 return e->name; in perf_mem_events__name()
74 return -ENOMEM; in perf_mem_events__parse()
84 if (!e->tag) in perf_mem_events__parse()
87 if (strstr(e->tag, tok)) in perf_mem_events__parse()
88 e->record = found = true; in perf_mem_events__parse()
99 pr_err("failed: event '%s' not found, use '-e list' to get list of available events\n", str); in perf_mem_events__parse()
100 return -1; in perf_mem_events__parse()
110 scnprintf(sysfs_name, sizeof(sysfs_name), e->sysfs_name, pmu->name); in perf_mem_event__supported()
122 return -ENOENT; in perf_mem_events__init()
130 * and "e->supported" will keep false. in perf_mem_events__init()
132 if (!e->tag) in perf_mem_events__init()
141 e->supported |= perf_mem_event__supported(mnt, pmu, e); in perf_mem_events__init()
142 if (e->supported) { in perf_mem_events__init()
149 return found ? 0 : -ENOENT; in perf_mem_events__init()
159 fprintf(stderr, "%-*s%-*s%s", in perf_mem_events__list()
160 e->tag ? 13 : 0, in perf_mem_events__list()
161 e->tag ? : "", in perf_mem_events__list()
162 e->tag && verbose > 0 ? 25 : 0, in perf_mem_events__list()
163 e->tag && verbose > 0 ? perf_mem_events__name(j, NULL) : "", in perf_mem_events__list()
164 e->supported ? ": available\n" : ""); in perf_mem_events__list()
177 perf_mem_events__name(idx, pmu->name)); in perf_mem_events__print_unsupport_hybrid()
191 if (!e->record) in perf_mem_events__record_args()
195 if (!e->supported) { in perf_mem_events__record_args()
198 return -1; in perf_mem_events__record_args()
201 rec_argv[i++] = "-e"; in perf_mem_events__record_args()
206 if (!e->supported) { in perf_mem_events__record_args()
208 return -1; in perf_mem_events__record_args()
212 const char *s = perf_mem_events__name(j, pmu->name); in perf_mem_events__record_args()
217 rec_argv[i++] = "-e"; in perf_mem_events__record_args()
221 return -1; in perf_mem_events__record_args()
251 sz -= 1; /* -1 for null termination */ in perf_mem__tlb_scnprintf()
255 m = mem_info->data_src.mem_dtlb; in perf_mem__tlb_scnprintf()
270 l += scnprintf(out + l, sz - l, tlb_access[i]); in perf_mem__tlb_scnprintf()
273 l += scnprintf(out, sz - l, "N/A"); in perf_mem__tlb_scnprintf()
275 l += scnprintf(out + l, sz - l, " hit"); in perf_mem__tlb_scnprintf()
277 l += scnprintf(out + l, sz - l, " miss"); in perf_mem__tlb_scnprintf()
306 [PERF_MEM_LVLNUM_PMEM] = "PMEM",
329 op = mem_info->data_src.mem_op; in perf_mem__op_scnprintf()
356 sz -= 1; /* -1 for null termination */ in perf_mem__lvl_scnprintf()
362 data_src = mem_info->data_src; in perf_mem__lvl_scnprintf()
377 l += scnprintf(out + l, sz - l, "%s ", mem_hops[data_src.mem_hops]); in perf_mem__lvl_scnprintf()
380 l += scnprintf(out + l, sz - l, mem_lvlnum[lvl]); in perf_mem__lvl_scnprintf()
382 l += scnprintf(out + l, sz - l, "L%d", lvl); in perf_mem__lvl_scnprintf()
384 l += scnprintf(out + l, sz - l, " %s", hit_miss); in perf_mem__lvl_scnprintf()
403 l += scnprintf(out + l, sz - l, mem_lvl[i]); in perf_mem__lvl_scnprintf()
407 l += scnprintf(out + l, sz - l, " %s", hit_miss); in perf_mem__lvl_scnprintf()
434 sz -= 1; /* -1 for null termination */ in perf_mem__snp_scnprintf()
438 m = mem_info->data_src.mem_snoop; in perf_mem__snp_scnprintf()
447 l += scnprintf(out + l, sz - l, snoop_access[i]); in perf_mem__snp_scnprintf()
452 m = mem_info->data_src.mem_snoopx; in perf_mem__snp_scnprintf()
462 l += scnprintf(out + l, sz - l, snoopx_access[i]); in perf_mem__snp_scnprintf()
466 l += scnprintf(out, sz - l, "N/A"); in perf_mem__snp_scnprintf()
477 mask = mem_info->data_src.mem_lock; in perf_mem__lck_scnprintf()
494 sz -= 1; /* -1 for null termination */ in perf_mem__blk_scnprintf()
498 mask = mem_info->data_src.mem_blk; in perf_mem__blk_scnprintf()
501 l += scnprintf(out + l, sz - l, " N/A"); in perf_mem__blk_scnprintf()
505 l += scnprintf(out + l, sz - l, " Data"); in perf_mem__blk_scnprintf()
507 l += scnprintf(out + l, sz - l, " Addr"); in perf_mem__blk_scnprintf()
517 i += perf_mem__op_scnprintf(out + i, sz - i, mem_info); in perf_script__meminfo_scnprintf()
518 i += scnprintf(out + i, sz - i, "|LVL "); in perf_script__meminfo_scnprintf()
520 i += scnprintf(out + i, sz - i, "|SNP "); in perf_script__meminfo_scnprintf()
521 i += perf_mem__snp_scnprintf(out + i, sz - i, mem_info); in perf_script__meminfo_scnprintf()
522 i += scnprintf(out + i, sz - i, "|TLB "); in perf_script__meminfo_scnprintf()
523 i += perf_mem__tlb_scnprintf(out + i, sz - i, mem_info); in perf_script__meminfo_scnprintf()
524 i += scnprintf(out + i, sz - i, "|LCK "); in perf_script__meminfo_scnprintf()
525 i += perf_mem__lck_scnprintf(out + i, sz - i, mem_info); in perf_script__meminfo_scnprintf()
526 i += scnprintf(out + i, sz - i, "|BLK "); in perf_script__meminfo_scnprintf()
527 i += perf_mem__blk_scnprintf(out + i, sz - i, mem_info); in perf_script__meminfo_scnprintf()
534 union perf_mem_data_src *data_src = &mi->data_src; in c2c_decode_stats()
535 u64 daddr = mi->daddr.addr; in c2c_decode_stats()
536 u64 op = data_src->mem_op; in c2c_decode_stats()
537 u64 lvl = data_src->mem_lvl; in c2c_decode_stats()
538 u64 snoop = data_src->mem_snoop; in c2c_decode_stats()
539 u64 snoopx = data_src->mem_snoopx; in c2c_decode_stats()
540 u64 lock = data_src->mem_lock; in c2c_decode_stats()
541 u64 blk = data_src->mem_blk; in c2c_decode_stats()
550 bool mrem = (data_src->mem_remote && !data_src->mem_hops); in c2c_decode_stats()
555 stats->__f++; \ in c2c_decode_stats()
556 stats->tot_hitm++; \ in c2c_decode_stats()
561 stats->__f++; \ in c2c_decode_stats()
562 stats->tot_peer++; \ in c2c_decode_stats()
567 stats->nr_entries++; in c2c_decode_stats()
569 if (lock & P(LOCK, LOCKED)) stats->locks++; in c2c_decode_stats()
571 if (blk & P(BLK, DATA)) stats->blk_data++; in c2c_decode_stats()
572 if (blk & P(BLK, ADDR)) stats->blk_addr++; in c2c_decode_stats()
576 stats->load++; in c2c_decode_stats()
579 stats->ld_noadrs++; in c2c_decode_stats()
580 return -1; in c2c_decode_stats()
584 if (lvl & P(LVL, UNC)) stats->ld_uncache++; in c2c_decode_stats()
585 if (lvl & P(LVL, IO)) stats->ld_io++; in c2c_decode_stats()
586 if (lvl & P(LVL, LFB)) stats->ld_fbhit++; in c2c_decode_stats()
587 if (lvl & P(LVL, L1 )) stats->ld_l1hit++; in c2c_decode_stats()
589 stats->ld_l2hit++; in c2c_decode_stats()
598 stats->ld_llchit++; in c2c_decode_stats()
605 stats->lcl_dram++; in c2c_decode_stats()
607 stats->ld_shared++; in c2c_decode_stats()
609 stats->ld_excl++; in c2c_decode_stats()
615 stats->rmt_dram++; in c2c_decode_stats()
617 stats->ld_shared++; in c2c_decode_stats()
619 stats->ld_excl++; in c2c_decode_stats()
627 stats->rmt_hit++; in c2c_decode_stats()
631 stats->rmt_hit++; in c2c_decode_stats()
637 stats->ld_miss++; in c2c_decode_stats()
641 stats->store++; in c2c_decode_stats()
644 stats->st_noadrs++; in c2c_decode_stats()
645 return -1; in c2c_decode_stats()
649 if (lvl & P(LVL, UNC)) stats->st_uncache++; in c2c_decode_stats()
650 if (lvl & P(LVL, L1 )) stats->st_l1hit++; in c2c_decode_stats()
653 if (lvl & P(LVL, L1)) stats->st_l1miss++; in c2c_decode_stats()
655 stats->st_na++; in c2c_decode_stats()
658 stats->noparse++; in c2c_decode_stats()
659 return -1; in c2c_decode_stats()
662 if (!mi->daddr.ms.map || !mi->iaddr.ms.map) { in c2c_decode_stats()
663 stats->nomap++; in c2c_decode_stats()
664 return -1; in c2c_decode_stats()
672 void c2c_add_stats(struct c2c_stats *stats, struct c2c_stats *add) in c2c_add_stats() argument
674 stats->nr_entries += add->nr_entries; in c2c_add_stats()
676 stats->locks += add->locks; in c2c_add_stats()
677 stats->store += add->store; in c2c_add_stats()
678 stats->st_uncache += add->st_uncache; in c2c_add_stats()
679 stats->st_noadrs += add->st_noadrs; in c2c_add_stats()
680 stats->st_l1hit += add->st_l1hit; in c2c_add_stats()
681 stats->st_l1miss += add->st_l1miss; in c2c_add_stats()
682 stats->st_na += add->st_na; in c2c_add_stats()
683 stats->load += add->load; in c2c_add_stats()
684 stats->ld_excl += add->ld_excl; in c2c_add_stats()
685 stats->ld_shared += add->ld_shared; in c2c_add_stats()
686 stats->ld_uncache += add->ld_uncache; in c2c_add_stats()
687 stats->ld_io += add->ld_io; in c2c_add_stats()
688 stats->ld_miss += add->ld_miss; in c2c_add_stats()
689 stats->ld_noadrs += add->ld_noadrs; in c2c_add_stats()
690 stats->ld_fbhit += add->ld_fbhit; in c2c_add_stats()
691 stats->ld_l1hit += add->ld_l1hit; in c2c_add_stats()
692 stats->ld_l2hit += add->ld_l2hit; in c2c_add_stats()
693 stats->ld_llchit += add->ld_llchit; in c2c_add_stats()
694 stats->lcl_hitm += add->lcl_hitm; in c2c_add_stats()
695 stats->rmt_hitm += add->rmt_hitm; in c2c_add_stats()
696 stats->tot_hitm += add->tot_hitm; in c2c_add_stats()
697 stats->lcl_peer += add->lcl_peer; in c2c_add_stats()
698 stats->rmt_peer += add->rmt_peer; in c2c_add_stats()
699 stats->tot_peer += add->tot_peer; in c2c_add_stats()
700 stats->rmt_hit += add->rmt_hit; in c2c_add_stats()
701 stats->lcl_dram += add->lcl_dram; in c2c_add_stats()
702 stats->rmt_dram += add->rmt_dram; in c2c_add_stats()
703 stats->blk_data += add->blk_data; in c2c_add_stats()
704 stats->blk_addr += add->blk_addr; in c2c_add_stats()
705 stats->nomap += add->nomap; in c2c_add_stats()
706 stats->noparse += add->noparse; in c2c_add_stats()