Lines Matching defs:ri
222 iaf_allocate_pmc(int cpu, int ri, struct pmc *pm,
233 PMCDBG2(MDP,ALL,1, "iaf-allocate ri=%d reqcaps=0x%x", ri, pm->pm_caps);
235 if (ri < 0 || ri > core_iaf_npmc)
250 if (umask != ri + 1)
253 switch (ri) {
303 pm->pm_md.pm_iaf.pm_iaf_ctrl = (flags << (ri * 4));
312 iaf_config_pmc(int cpu, int ri, struct pmc *pm)
317 KASSERT(ri >= 0 && ri < core_iaf_npmc,
318 ("[core,%d] illegal row-index %d", __LINE__, ri));
320 PMCDBG3(MDP,CFG,1, "iaf-config cpu=%d ri=%d pm=%p", cpu, ri, pm);
325 core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri].phw_pmc = pm;
331 iaf_describe(int cpu, int ri, struct pmc_info *pi, struct pmc **ppmc)
335 phw = &core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri];
337 snprintf(pi->pm_name, sizeof(pi->pm_name), "IAF-%d", ri);
352 iaf_get_config(int cpu, int ri, struct pmc **ppm)
354 *ppm = core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri].phw_pmc;
360 iaf_get_msr(int ri, uint32_t *msr)
362 KASSERT(ri >= 0 && ri < core_iaf_npmc,
363 ("[iaf,%d] ri %d out of range", __LINE__, ri));
365 *msr = IAF_RI_TO_MSR(ri);
371 iaf_read_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t *v)
377 KASSERT(ri >= 0 && ri < core_iaf_npmc,
378 ("[core,%d] illegal row-index %d", __LINE__, ri));
380 tmp = rdpmc(IAF_RI_TO_MSR(ri));
387 PMCDBG4(MDP,REA,1, "iaf-read cpu=%d ri=%d msr=0x%x -> v=%jx", cpu, ri,
388 IAF_RI_TO_MSR(ri), *v);
394 iaf_release_pmc(int cpu, int ri, struct pmc *pmc)
396 PMCDBG3(MDP,REL,1, "iaf-release cpu=%d ri=%d pm=%p", cpu, ri, pmc);
400 KASSERT(ri >= 0 && ri < core_iaf_npmc,
401 ("[core,%d] illegal row-index %d", __LINE__, ri));
403 KASSERT(core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri].phw_pmc == NULL,
417 iaf_start_pmc(int cpu, int ri, struct pmc *pm)
423 KASSERT(ri >= 0 && ri < core_iaf_npmc,
424 ("[core,%d] illegal row-index %d", __LINE__, ri));
426 PMCDBG2(MDP,STA,1,"iaf-start cpu=%d ri=%d", cpu, ri);
432 cc->pc_globalctrl |= (1ULL << (ri + IAF_OFFSET));
443 iaf_stop_pmc(int cpu, int ri, struct pmc *pm)
449 KASSERT(ri >= 0 && ri < core_iaf_npmc,
450 ("[core,%d] illegal row-index %d", __LINE__, ri));
452 PMCDBG2(MDP,STA,1,"iaf-stop cpu=%d ri=%d", cpu, ri);
456 cc->pc_iafctrl &= ~(IAF_MASK << (ri * 4));
469 iaf_write_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t v)
475 KASSERT(ri >= 0 && ri < core_iaf_npmc,
476 ("[core,%d] illegal row-index %d", __LINE__, ri));
484 wrmsr(IAF_CTRL, cc->pc_iafctrl & ~(IAF_MASK << (ri * 4)));
486 wrmsr(IAF_CTR0 + ri, v & ((1ULL << core_iaf_width) - 1));
491 PMCDBG6(MDP,WRI,1, "iaf-write cpu=%d ri=%d msr=0x%x v=%jx iafctrl=%jx "
492 "pmc=%jx", cpu, ri, IAF_RI_TO_MSR(ri), v,
494 (uintmax_t) rdpmc(IAF_RI_TO_MSR(ri)));
577 iap_pmc_has_overflowed(int ri)
585 v = rdpmc(ri);
590 iap_event_corei7_ok_on_counter(uint8_t evsel, int ri)
613 return (mask & (1 << ri));
617 iap_event_westmere_ok_on_counter(uint8_t evsel, int ri)
641 return (mask & (1 << ri));
645 iap_event_sb_sbx_ib_ibx_ok_on_counter(uint8_t evsel, int ri)
674 return (mask & (1 << ri));
678 iap_event_core_ok_on_counter(uint8_t evsel, int ri)
708 return (mask & (1 << ri));
712 iap_allocate_pmc(int cpu, int ri, struct pmc *pm,
720 KASSERT(ri >= 0 && ri < core_iap_npmc,
721 ("[core,%d] illegal row-index value %d", __LINE__, ri));
736 if (iap_event_core_ok_on_counter(ev, ri) == 0)
740 if (iap_event_corei7_ok_on_counter(ev, ri) == 0)
745 if (iap_event_westmere_ok_on_counter(ev, ri) == 0)
756 if (iap_event_sb_sbx_ib_ibx_ok_on_counter(ev, ri) == 0)
778 iap_config_pmc(int cpu, int ri, struct pmc *pm)
783 KASSERT(ri >= 0 && ri < core_iap_npmc,
784 ("[core,%d] illegal row-index %d", __LINE__, ri));
786 PMCDBG3(MDP,CFG,1, "iap-config cpu=%d ri=%d pm=%p", cpu, ri, pm);
791 core_pcpu[cpu]->pc_corepmcs[ri].phw_pmc = pm;
797 iap_describe(int cpu, int ri, struct pmc_info *pi, struct pmc **ppmc)
801 phw = &core_pcpu[cpu]->pc_corepmcs[ri];
803 snprintf(pi->pm_name, sizeof(pi->pm_name), "IAP-%d", ri);
818 iap_get_config(int cpu, int ri, struct pmc **ppm)
820 *ppm = core_pcpu[cpu]->pc_corepmcs[ri].phw_pmc;
826 iap_get_msr(int ri, uint32_t *msr)
828 KASSERT(ri >= 0 && ri < core_iap_npmc,
829 ("[iap,%d] ri %d out of range", __LINE__, ri));
831 *msr = ri;
837 iap_read_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t *v)
843 KASSERT(ri >= 0 && ri < core_iap_npmc,
844 ("[core,%d] illegal row-index %d", __LINE__, ri));
846 tmp = rdpmc(ri);
852 PMCDBG4(MDP,REA,1, "iap-read cpu=%d ri=%d msr=0x%x -> v=%jx", cpu, ri,
853 IAP_PMC0 + ri, *v);
859 iap_release_pmc(int cpu, int ri, struct pmc *pm)
863 PMCDBG3(MDP,REL,1, "iap-release cpu=%d ri=%d pm=%p", cpu, ri,
868 KASSERT(ri >= 0 && ri < core_iap_npmc,
869 ("[core,%d] illegal row-index %d", __LINE__, ri));
871 KASSERT(core_pcpu[cpu]->pc_corepmcs[ri].phw_pmc
878 iap_start_pmc(int cpu, int ri, struct pmc *pm)
885 KASSERT(ri >= 0 && ri < core_iap_npmc,
886 ("[core,%d] illegal row-index %d", __LINE__, ri));
890 PMCDBG2(MDP,STA,1, "iap-start cpu=%d ri=%d", cpu, ri);
894 PMCDBG4(MDP,STA,2, "iap-start/2 cpu=%d ri=%d evselmsr=0x%x evsel=0x%x",
895 cpu, ri, IAP_EVSEL0 + ri, evsel);
910 wrmsr(IAP_EVSEL0 + ri, evsel | IAP_EN);
913 cc->pc_globalctrl |= (1ULL << ri);
921 iap_stop_pmc(int cpu, int ri, struct pmc *pm __unused)
926 KASSERT(ri >= 0 && ri < core_iap_npmc,
927 ("[core,%d] illegal row index %d", __LINE__, ri));
929 PMCDBG2(MDP,STO,1, "iap-stop cpu=%d ri=%d", cpu, ri);
931 wrmsr(IAP_EVSEL0 + ri, 0);
939 iap_write_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t v)
944 KASSERT(ri >= 0 && ri < core_iap_npmc,
945 ("[core,%d] illegal row index %d", __LINE__, ri));
952 PMCDBG4(MDP,WRI,1, "iap-write cpu=%d ri=%d msr=0x%x v=%jx", cpu, ri,
953 IAP_PMC0 + ri, v);
960 wrmsr(core_iap_wroffset + IAP_PMC0 + ri, v);
1008 int error, found_interrupt, ri;
1016 for (ri = 0; ri < core_iap_npmc; ri++) {
1018 if ((pm = cc->pc_corepmcs[ri].phw_pmc) == NULL ||
1022 if (!iap_pmc_has_overflowed(ri))
1039 wrmsr(IAP_EVSEL0 + ri, pm->pm_md.pm_iap.pm_iap_evsel);
1040 wrmsr(core_iap_wroffset + IAP_PMC0 + ri, v);
1045 wrmsr(IAP_EVSEL0 + ri, pm->pm_md.pm_iap.pm_iap_evsel | IAP_EN);