Lines Matching +full:scrubber +full:- +full:done
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2003-2008 Joseph Koshy
82 * like "cache-misses", or "instructions-retired". These aliases are
193 .pm_evc_name = #CLASS "-", \
194 .pm_evc_name_size = sizeof(#CLASS "-") - 1, \
228 .pm_evc_name = "SOFT-",
229 .pm_evc_name_size = sizeof("SOFT-") - 1,
295 static int pmc_syscall = -1;
316 return (-1); in pmc_parse_mask()
319 return (-1); in pmc_parse_mask()
322 for (pm = pmask; pm->pm_name && strcasecmp(r, pm->pm_name); in pmc_parse_mask()
325 if (pm->pm_name == NULL) /* not found */ in pmc_parse_mask()
326 return (-1); in pmc_parse_mask()
327 *evmask |= pm->pm_value; in pmc_parse_mask()
335 #define KWPREFIXMATCH(p,kw) (strncasecmp((p), (kw), sizeof((kw)) - 1) == 0)
345 EV_ALIAS("branches", "k8-fr-retired-taken-branches"),
346 EV_ALIAS("branch-mispredicts",
347 "k8-fr-retired-taken-branches-mispredicted"),
349 EV_ALIAS("dc-misses", "k8-dc-miss"),
350 EV_ALIAS("ic-misses", "k8-ic-miss"),
351 EV_ALIAS("instructions", "k8-fr-retired-x86-instructions"),
352 EV_ALIAS("interrupts", "k8-fr-taken-hardware-interrupts"),
353 EV_ALIAS("unhalted-cycles", "k8-bu-cpu-clk-unhalted"),
365 __K8MASK(add-pipe-excluding-junk-ops, 0),
366 __K8MASK(multiply-pipe-excluding-junk-ops, 1),
367 __K8MASK(store-pipe-excluding-junk-ops, 2),
368 __K8MASK(add-pipe-junk-ops, 3),
369 __K8MASK(multiply-pipe-junk-ops, 4),
370 __K8MASK(store-pipe-junk-ops, 5),
388 __K8MASK(locked-instructions, 0),
389 __K8MASK(cycles-in-request, 1),
390 __K8MASK(cycles-to-complete, 2),
406 __K8MASK(scrubber, 0),
428 __K8MASK(ic-fill, 0),
429 __K8MASK(dc-fill, 1),
430 __K8MASK(tlb-reload, 2),
431 __K8MASK(tag-snoop, 3),
438 __K8MASK(ic-fill, 0),
439 __K8MASK(dc-fill, 1),
440 __K8MASK(tlb-reload, 2),
446 __K8MASK(dirty-l2-victim, 0),
447 __K8MASK(victim-from-l2, 1),
454 __K8MASK(mmx-3dnow, 1),
455 __K8MASK(packed-sse-sse2, 2),
456 __K8MASK(scalar-sse-sse2, 3),
462 __K8MASK(low-op-pos-0, 0),
463 __K8MASK(low-op-pos-1, 1),
464 __K8MASK(low-op-pos-2, 2),
470 __K8MASK(x87-reclass-microfaults, 0),
471 __K8MASK(sse-retype-microfaults, 1),
472 __K8MASK(sse-reclass-microfaults, 2),
473 __K8MASK(sse-and-x87-microtraps, 3),
479 __K8MASK(page-hit, 0),
480 __K8MASK(page-miss, 1),
481 __K8MASK(page-conflict, 2),
487 __K8MASK(dimm-turnaround, 0),
488 __K8MASK(read-to-write-turnaround, 1),
489 __K8MASK(write-to-read-turnaround, 2),
495 __K8MASK(memory-controller-hi-pri-bypass, 0),
496 __K8MASK(memory-controller-lo-pri-bypass, 1),
497 __K8MASK(dram-controller-interface-bypass, 2),
498 __K8MASK(dram-controller-queue-bypass, 3),
516 __K8MASK(probe-miss, 0),
517 __K8MASK(probe-hit, 1),
518 __K8MASK(probe-hit-dirty-no-memory-cancel, 2),
519 __K8MASK(probe-hit-dirty-with-memory-cancel, 3),
527 __K8MASK(buffer-release, 2),
551 pmc_config->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in k8_allocate_pmc()
552 pmc_config->pm_md.pm_amd.pm_amd_config = 0; in k8_allocate_pmc()
631 return (-1); in k8_allocate_pmc()
635 return (-1); in k8_allocate_pmc()
637 pmc_config->pm_caps |= PMC_CAP_THRESHOLD; in k8_allocate_pmc()
638 pmc_config->pm_md.pm_amd.pm_amd_config |= in k8_allocate_pmc()
642 pmc_config->pm_caps |= PMC_CAP_EDGE; in k8_allocate_pmc()
644 pmc_config->pm_caps |= PMC_CAP_INVERT; in k8_allocate_pmc()
647 return (-1); in k8_allocate_pmc()
648 pmc_config->pm_caps |= PMC_CAP_QUALIFIER; in k8_allocate_pmc()
650 pmc_config->pm_caps |= PMC_CAP_SYSTEM; in k8_allocate_pmc()
652 pmc_config->pm_caps |= PMC_CAP_USER; in k8_allocate_pmc()
654 return (-1); in k8_allocate_pmc()
672 if (evmask & (evmask - 1)) /* > 1 bit set */ in k8_allocate_pmc()
673 return (-1); in k8_allocate_pmc()
676 pmc_config->pm_caps |= PMC_CAP_QUALIFIER; in k8_allocate_pmc()
681 for (pm = pmask; pm->pm_name; pm++) in k8_allocate_pmc()
682 evmask |= pm->pm_value; in k8_allocate_pmc()
683 pmc_config->pm_caps |= PMC_CAP_QUALIFIER; in k8_allocate_pmc()
687 if (pmc_config->pm_caps & PMC_CAP_QUALIFIER) in k8_allocate_pmc()
688 pmc_config->pm_md.pm_amd.pm_amd_config = in k8_allocate_pmc()
702 return (-1); in tsc_allocate_pmc()
706 return (-1); in tsc_allocate_pmc()
708 pmc_config->pm_md.pm_amd.pm_amd_config = 0; in tsc_allocate_pmc()
709 pmc_config->pm_caps |= PMC_CAP_READ; in tsc_allocate_pmc()
716 EV_ALIAS("instructions", "SOFT-CLOCK.HARD"),
728 return (-1); in soft_allocate_pmc()
730 pmc_config->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in soft_allocate_pmc()
736 EV_ALIAS("dc-misses", "L1_DCACHE_REFILL"),
737 EV_ALIAS("ic-misses", "L1_ICACHE_REFILL"),
743 EV_ALIAS("dc-misses", "L1_DCACHE_REFILL"),
744 EV_ALIAS("ic-misses", "L1_ICACHE_REFILL"),
781 pmc_config->pm_caps |= PMC_CAP_SYSTEM; in arm64_allocate_pmc()
783 pmc_config->pm_caps |= PMC_CAP_USER; in arm64_allocate_pmc()
785 return (-1); in arm64_allocate_pmc()
802 pmc_config->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in cmn600_pmu_allocate_pmc()
803 pmc_config->pm_caps |= PMC_CAP_SYSTEM; in cmn600_pmu_allocate_pmc()
804 pmc_config->pm_md.pm_cmn600.pma_cmn600_config = 0; in cmn600_pmu_allocate_pmc()
807 * * nodeid - node coordinates x[2-3],y[2-3],p[1],s[2] in cmn600_pmu_allocate_pmc()
809 * * occupancy - numeric value to select desired filter. in cmn600_pmu_allocate_pmc()
810 * * xpport - East, West, North, South, devport0, devport1 (or 0, 1, ..., 5) in cmn600_pmu_allocate_pmc()
811 * * xpchannel - REQ, RSP, SNP, DAT (or 0, 1, 2, 3) in cmn600_pmu_allocate_pmc()
818 return (-1); in cmn600_pmu_allocate_pmc()
822 return (-1); in cmn600_pmu_allocate_pmc()
824 pmc_config->pm_md.pm_cmn600.pma_cmn600_nodeid |= nodeid; in cmn600_pmu_allocate_pmc()
829 return (-1); in cmn600_pmu_allocate_pmc()
833 return (-1); in cmn600_pmu_allocate_pmc()
835 pmc_config->pm_md.pm_cmn600.pma_cmn600_occupancy = occupancy; in cmn600_pmu_allocate_pmc()
839 return (-1); in cmn600_pmu_allocate_pmc()
850 return (-1); in cmn600_pmu_allocate_pmc()
853 pmc_config->pm_md.pm_cmn600.pma_cmn600_config |= xpport << 2; in cmn600_pmu_allocate_pmc()
857 return (-1); in cmn600_pmu_allocate_pmc()
868 return (-1); in cmn600_pmu_allocate_pmc()
871 pmc_config->pm_md.pm_cmn600.pma_cmn600_config |= xpchannel << 5; in cmn600_pmu_allocate_pmc()
873 return (-1); in cmn600_pmu_allocate_pmc()
887 pmc_config->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in dmc620_pmu_allocate_pmc()
888 pmc_config->pm_caps |= PMC_CAP_SYSTEM; in dmc620_pmu_allocate_pmc()
889 pmc_config->pm_md.pm_dmc620.pm_dmc620_config = 0; in dmc620_pmu_allocate_pmc()
895 return (-1); in dmc620_pmu_allocate_pmc()
899 return (-1); in dmc620_pmu_allocate_pmc()
901 pmc_config->pm_caps |= PMC_CAP_THRESHOLD; in dmc620_pmu_allocate_pmc()
902 pmc_config->pm_md.pm_dmc620.pm_dmc620_config |= count; in dmc620_pmu_allocate_pmc()
905 pmc_config->pm_caps |= PMC_CAP_INVERT; in dmc620_pmu_allocate_pmc()
909 return (-1); in dmc620_pmu_allocate_pmc()
911 pmc_config->pm_caps |= PMC_CAP_QUALIFIER; in dmc620_pmu_allocate_pmc()
912 pmc_config->pm_md.pm_dmc620.pm_dmc620_match = match; in dmc620_pmu_allocate_pmc()
916 return (-1); in dmc620_pmu_allocate_pmc()
920 return (-1); in dmc620_pmu_allocate_pmc()
922 pmc_config->pm_md.pm_dmc620.pm_dmc620_mask = mask; in dmc620_pmu_allocate_pmc()
923 pmc_config->pm_caps |= PMC_CAP_QUALIFIER; in dmc620_pmu_allocate_pmc()
925 return (-1); in dmc620_pmu_allocate_pmc()
937 EV_ALIAS("branch-mispredicts", "MISPREDICTED_BRANCHES"),
965 pmc_config->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); in powerpc_allocate_pmc()
969 pmc_config->pm_caps |= PMC_CAP_SYSTEM; in powerpc_allocate_pmc()
971 pmc_config->pm_caps |= PMC_CAP_USER; in powerpc_allocate_pmc()
973 pmc_config->pm_caps |= (PMC_CAP_USER | PMC_CAP_SYSTEM); in powerpc_allocate_pmc()
975 return (-1); in powerpc_allocate_pmc()
1004 if ((nc == ' ' || nc == '_' || nc == '-' || nc == '.') && in pmc_match_event_name()
1005 (cc == ' ' || cc == '_' || cc == '-' || cc == '.')) in pmc_match_event_name()
1034 ev = pcd->pm_evc_event_table; in pmc_match_event_class()
1035 for (n = 0; n < pcd->pm_evc_event_table_size; n++, ev++) in pmc_match_event_class()
1036 if (pmc_match_event_name(name, ev->pm_ev_name)) in pmc_match_event_class()
1061 retval = -1; in pmc_allocate()
1077 * Try to pull the raw event ID directly from the pmu-events table. If in pmc_allocate()
1092 for (alias = pmc_mdep_event_aliases; alias->pm_alias; alias++) in pmc_allocate()
1093 if (!strcasecmp(ctrspec, alias->pm_alias)) { in pmc_allocate()
1094 spec_copy = strdup(alias->pm_spec); in pmc_allocate()
1111 if (pcd != NULL && strncasecmp(ctrname, pcd->pm_evc_name, in pmc_allocate()
1112 pcd->pm_evc_name_size) == 0) { in pmc_allocate()
1114 pcd->pm_evc_name_size, pcd)) == NULL) { in pmc_allocate()
1137 pmc_config.pm_ev = ev->pm_ev_code; in pmc_allocate()
1138 pmc_config.pm_class = pcd->pm_evc_class; in pmc_allocate()
1140 if (pcd->pm_evc_allocate_pmc(ev->pm_ev_code, r, &pmc_config) < 0) { in pmc_allocate()
1181 return (-1); in pmc_capabilities()
1192 return (-1); in pmc_configure_logfile()
1199 if (pmc_syscall == -1) { in pmc_cpuinfo()
1201 return (-1); in pmc_cpuinfo()
1247 * is responsible for freeing this space when done.
1331 return (-1); in pmc_event_names_of_class()
1335 return (-1); in pmc_event_names_of_class()
1340 for (;count--; ev++, names++) in pmc_event_names_of_class()
1341 *names = ev->pm_ev_name; in pmc_event_names_of_class()
1364 return (-1); in pmc_get_driver_stats()
1366 /* copy out fields in the current userland<->library interface */ in pmc_get_driver_stats()
1367 ds->pm_intr_ignored = gms.pm_intr_ignored; in pmc_get_driver_stats()
1368 ds->pm_intr_processed = gms.pm_intr_processed; in pmc_get_driver_stats()
1369 ds->pm_intr_bufferfull = gms.pm_intr_bufferfull; in pmc_get_driver_stats()
1370 ds->pm_syscalls = gms.pm_syscalls; in pmc_get_driver_stats()
1371 ds->pm_syscall_errors = gms.pm_syscall_errors; in pmc_get_driver_stats()
1372 ds->pm_buffer_requests = gms.pm_buffer_requests; in pmc_get_driver_stats()
1373 ds->pm_buffer_requests_failed = gms.pm_buffer_requests_failed; in pmc_get_driver_stats()
1374 ds->pm_log_sweeps = gms.pm_log_sweeps; in pmc_get_driver_stats()
1385 return (-1); in pmc_get_msr()
1399 if (pmc_syscall != -1) /* already inited */ in pmc_init()
1404 return (-1); in pmc_init()
1408 return (-1); in pmc_init()
1412 /* check the kernel module's ABI against our compiled-in version */ in pmc_init()
1415 return (pmc_syscall = -1); in pmc_init()
1420 return (pmc_syscall = -1); in pmc_init()
1425 return (pmc_syscall = -1); in pmc_init()
1439 return (-1); in pmc_init()
1446 return (pmc_syscall = -1); in pmc_init()
1493 return (pmc_syscall = -1); in pmc_init()
1515 return (pmc_syscall = -1); in pmc_init()
1608 return (pmc_syscall = -1); in pmc_init()
1623 if ((cap & (cap - 1)) || cap < PMC_CAP_FIRST || in pmc_name_of_capability()
1630 return (pmc_capability_names[i - 1]); in pmc_name_of_capability()
1743 if (pe == ev->pm_ev_code) in _pmc_name_of_event()
1744 return (ev->pm_ev_name); in _pmc_name_of_event()
1786 if (pmc_syscall == -1) { in pmc_ncpu()
1788 return (-1); in pmc_ncpu()
1797 if (pmc_syscall == -1) { in pmc_npmc()
1799 return (-1); in pmc_npmc()
1804 return (-1); in pmc_npmc()
1817 return (-1); in pmc_pmcinfo()
1823 return (-1); in pmc_pmcinfo()
1825 pmci->pm_cpu = cpu; in pmc_pmcinfo()
1829 return (-1); in pmc_pmcinfo()
1832 /* kernel<->library, library<->userland interfaces are identical */ in pmc_pmcinfo()
1844 pmc_read_op.pm_value = -1; in pmc_read()
1847 return (-1); in pmc_read()
1872 return (-1); in pmc_rw()
1887 return (-1); in pmc_set()
1922 return (-1); in pmc_width()