Lines Matching refs:ri
223 iaf_allocate_pmc(int cpu, int ri, struct pmc *pm, in iaf_allocate_pmc() argument
234 PMCDBG2(MDP,ALL,1, "iaf-allocate ri=%d reqcaps=0x%x", ri, pm->pm_caps); in iaf_allocate_pmc()
236 if (ri < 0 || ri > core_iaf_npmc) in iaf_allocate_pmc()
251 if (umask != ri + 1) in iaf_allocate_pmc()
254 switch (ri) { in iaf_allocate_pmc()
304 pm->pm_md.pm_iaf.pm_iaf_ctrl = (flags << (ri * 4)); in iaf_allocate_pmc()
313 iaf_config_pmc(int cpu, int ri, struct pmc *pm) in iaf_config_pmc() argument
318 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_config_pmc()
319 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iaf_config_pmc()
321 PMCDBG3(MDP,CFG,1, "iaf-config cpu=%d ri=%d pm=%p", cpu, ri, pm); in iaf_config_pmc()
326 core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri].phw_pmc = pm; in iaf_config_pmc()
332 iaf_describe(int cpu, int ri, struct pmc_info *pi, struct pmc **ppmc) in iaf_describe() argument
336 phw = &core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri]; in iaf_describe()
338 snprintf(pi->pm_name, sizeof(pi->pm_name), "IAF-%d", ri); in iaf_describe()
353 iaf_get_config(int cpu, int ri, struct pmc **ppm) in iaf_get_config() argument
355 *ppm = core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri].phw_pmc; in iaf_get_config()
361 iaf_get_msr(int ri, uint32_t *msr) in iaf_get_msr() argument
363 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_get_msr()
364 ("[iaf,%d] ri %d out of range", __LINE__, ri)); in iaf_get_msr()
366 *msr = IAF_RI_TO_MSR(ri); in iaf_get_msr()
372 iaf_read_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t *v) in iaf_read_pmc() argument
378 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_read_pmc()
379 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iaf_read_pmc()
381 tmp = rdpmc(IAF_RI_TO_MSR(ri)); in iaf_read_pmc()
388 PMCDBG4(MDP,REA,1, "iaf-read cpu=%d ri=%d msr=0x%x -> v=%jx", cpu, ri, in iaf_read_pmc()
389 IAF_RI_TO_MSR(ri), *v); in iaf_read_pmc()
395 iaf_release_pmc(int cpu, int ri, struct pmc *pmc) in iaf_release_pmc() argument
397 PMCDBG3(MDP,REL,1, "iaf-release cpu=%d ri=%d pm=%p", cpu, ri, pmc); in iaf_release_pmc()
401 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_release_pmc()
402 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iaf_release_pmc()
404 KASSERT(core_pcpu[cpu]->pc_corepmcs[ri + core_iaf_ri].phw_pmc == NULL, in iaf_release_pmc()
418 iaf_start_pmc(int cpu, int ri, struct pmc *pm) in iaf_start_pmc() argument
424 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_start_pmc()
425 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iaf_start_pmc()
427 PMCDBG2(MDP,STA,1,"iaf-start cpu=%d ri=%d", cpu, ri); in iaf_start_pmc()
433 cc->pc_globalctrl |= (1ULL << (ri + IAF_OFFSET)); in iaf_start_pmc()
444 iaf_stop_pmc(int cpu, int ri, struct pmc *pm) in iaf_stop_pmc() argument
450 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_stop_pmc()
451 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iaf_stop_pmc()
453 PMCDBG2(MDP,STA,1,"iaf-stop cpu=%d ri=%d", cpu, ri); in iaf_stop_pmc()
457 cc->pc_iafctrl &= ~(IAF_MASK << (ri * 4)); in iaf_stop_pmc()
470 iaf_write_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t v) in iaf_write_pmc() argument
476 KASSERT(ri >= 0 && ri < core_iaf_npmc, in iaf_write_pmc()
477 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iaf_write_pmc()
485 wrmsr(IAF_CTRL, cc->pc_iafctrl & ~(IAF_MASK << (ri * 4))); in iaf_write_pmc()
487 wrmsr(IAF_CTR0 + ri, v & ((1ULL << core_iaf_width) - 1)); in iaf_write_pmc()
493 "pmc=%jx", cpu, ri, IAF_RI_TO_MSR(ri), v, in iaf_write_pmc()
495 (uintmax_t) rdpmc(IAF_RI_TO_MSR(ri))); in iaf_write_pmc()
578 iap_pmc_has_overflowed(int ri) in iap_pmc_has_overflowed() argument
586 v = rdpmc(ri); in iap_pmc_has_overflowed()
591 iap_event_corei7_ok_on_counter(uint8_t evsel, int ri) in iap_event_corei7_ok_on_counter() argument
614 return (mask & (1 << ri)); in iap_event_corei7_ok_on_counter()
618 iap_event_westmere_ok_on_counter(uint8_t evsel, int ri) in iap_event_westmere_ok_on_counter() argument
642 return (mask & (1 << ri)); in iap_event_westmere_ok_on_counter()
646 iap_event_sb_sbx_ib_ibx_ok_on_counter(uint8_t evsel, int ri) in iap_event_sb_sbx_ib_ibx_ok_on_counter() argument
675 return (mask & (1 << ri)); in iap_event_sb_sbx_ib_ibx_ok_on_counter()
679 iap_event_core_ok_on_counter(uint8_t evsel, int ri) in iap_event_core_ok_on_counter() argument
709 return (mask & (1 << ri)); in iap_event_core_ok_on_counter()
713 iap_allocate_pmc(int cpu, int ri, struct pmc *pm, in iap_allocate_pmc() argument
721 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_allocate_pmc()
722 ("[core,%d] illegal row-index value %d", __LINE__, ri)); in iap_allocate_pmc()
737 if (iap_event_core_ok_on_counter(ev, ri) == 0) in iap_allocate_pmc()
741 if (iap_event_corei7_ok_on_counter(ev, ri) == 0) in iap_allocate_pmc()
746 if (iap_event_westmere_ok_on_counter(ev, ri) == 0) in iap_allocate_pmc()
757 if (iap_event_sb_sbx_ib_ibx_ok_on_counter(ev, ri) == 0) in iap_allocate_pmc()
779 iap_config_pmc(int cpu, int ri, struct pmc *pm) in iap_config_pmc() argument
784 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_config_pmc()
785 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iap_config_pmc()
787 PMCDBG3(MDP,CFG,1, "iap-config cpu=%d ri=%d pm=%p", cpu, ri, pm); in iap_config_pmc()
792 core_pcpu[cpu]->pc_corepmcs[ri].phw_pmc = pm; in iap_config_pmc()
798 iap_describe(int cpu, int ri, struct pmc_info *pi, struct pmc **ppmc) in iap_describe() argument
802 phw = &core_pcpu[cpu]->pc_corepmcs[ri]; in iap_describe()
804 snprintf(pi->pm_name, sizeof(pi->pm_name), "IAP-%d", ri); in iap_describe()
819 iap_get_config(int cpu, int ri, struct pmc **ppm) in iap_get_config() argument
821 *ppm = core_pcpu[cpu]->pc_corepmcs[ri].phw_pmc; in iap_get_config()
827 iap_get_msr(int ri, uint32_t *msr) in iap_get_msr() argument
829 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_get_msr()
830 ("[iap,%d] ri %d out of range", __LINE__, ri)); in iap_get_msr()
832 *msr = ri; in iap_get_msr()
838 iap_read_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t *v) in iap_read_pmc() argument
844 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_read_pmc()
845 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iap_read_pmc()
847 tmp = rdpmc(ri); in iap_read_pmc()
853 PMCDBG4(MDP,REA,1, "iap-read cpu=%d ri=%d msr=0x%x -> v=%jx", cpu, ri, in iap_read_pmc()
854 IAP_PMC0 + ri, *v); in iap_read_pmc()
860 iap_release_pmc(int cpu, int ri, struct pmc *pm) in iap_release_pmc() argument
864 PMCDBG3(MDP,REL,1, "iap-release cpu=%d ri=%d pm=%p", cpu, ri, in iap_release_pmc()
869 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_release_pmc()
870 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iap_release_pmc()
872 KASSERT(core_pcpu[cpu]->pc_corepmcs[ri].phw_pmc in iap_release_pmc()
879 iap_start_pmc(int cpu, int ri, struct pmc *pm) in iap_start_pmc() argument
886 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_start_pmc()
887 ("[core,%d] illegal row-index %d", __LINE__, ri)); in iap_start_pmc()
891 PMCDBG2(MDP,STA,1, "iap-start cpu=%d ri=%d", cpu, ri); in iap_start_pmc()
896 cpu, ri, IAP_EVSEL0 + ri, evsel); in iap_start_pmc()
911 wrmsr(IAP_EVSEL0 + ri, evsel | IAP_EN); in iap_start_pmc()
914 cc->pc_globalctrl |= (1ULL << ri); in iap_start_pmc()
922 iap_stop_pmc(int cpu, int ri, struct pmc *pm __unused) in iap_stop_pmc() argument
927 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_stop_pmc()
928 ("[core,%d] illegal row index %d", __LINE__, ri)); in iap_stop_pmc()
930 PMCDBG2(MDP,STO,1, "iap-stop cpu=%d ri=%d", cpu, ri); in iap_stop_pmc()
932 wrmsr(IAP_EVSEL0 + ri, 0); in iap_stop_pmc()
940 iap_write_pmc(int cpu, int ri, struct pmc *pm, pmc_value_t v) in iap_write_pmc() argument
945 KASSERT(ri >= 0 && ri < core_iap_npmc, in iap_write_pmc()
946 ("[core,%d] illegal row index %d", __LINE__, ri)); in iap_write_pmc()
953 PMCDBG4(MDP,WRI,1, "iap-write cpu=%d ri=%d msr=0x%x v=%jx", cpu, ri, in iap_write_pmc()
954 IAP_PMC0 + ri, v); in iap_write_pmc()
961 wrmsr(core_iap_wroffset + IAP_PMC0 + ri, v); in iap_write_pmc()
1009 int error, found_interrupt, ri; in core_intr() local
1017 for (ri = 0; ri < core_iap_npmc; ri++) { in core_intr()
1019 if ((pm = cc->pc_corepmcs[ri].phw_pmc) == NULL || in core_intr()
1023 if (!iap_pmc_has_overflowed(ri)) in core_intr()
1040 wrmsr(IAP_EVSEL0 + ri, pm->pm_md.pm_iap.pm_iap_evsel); in core_intr()
1041 wrmsr(core_iap_wroffset + IAP_PMC0 + ri, v); in core_intr()
1046 wrmsr(IAP_EVSEL0 + ri, pm->pm_md.pm_iap.pm_iap_evsel | IAP_EN); in core_intr()