Lines Matching refs:perf_ibs

82 struct perf_ibs {  struct
190 static struct perf_ibs perf_ibs_fetch;
191 static struct perf_ibs perf_ibs_op;
193 static struct perf_ibs *get_ibs_pmu(int type) in get_ibs_pmu()
259 struct perf_ibs *perf_ibs; in perf_ibs_init() local
263 perf_ibs = get_ibs_pmu(event->attr.type); in perf_ibs_init()
264 if (perf_ibs) { in perf_ibs_init()
267 perf_ibs = &perf_ibs_op; in perf_ibs_init()
273 if (event->pmu != &perf_ibs->pmu) in perf_ibs_init()
276 if (config & ~perf_ibs->config_mask) in perf_ibs_init()
280 if (config & perf_ibs->cnt_mask) in perf_ibs_init()
294 max_cnt = config & perf_ibs->cnt_mask; in perf_ibs_init()
295 config &= ~perf_ibs->cnt_mask; in perf_ibs_init()
310 hwc->config_base = perf_ibs->msr; in perf_ibs_init()
316 static int perf_ibs_set_period(struct perf_ibs *perf_ibs, in perf_ibs_set_period() argument
322 overflow = perf_event_set_period(hwc, 1<<4, perf_ibs->max_period, period); in perf_ibs_set_period()
347 perf_ibs_event_update(struct perf_ibs *perf_ibs, struct perf_event *event, in perf_ibs_event_update() argument
350 u64 count = perf_ibs->get_count(*config); in perf_ibs_event_update()
359 count = perf_ibs->get_count(*config); in perf_ibs_event_update()
363 static inline void perf_ibs_enable_event(struct perf_ibs *perf_ibs, in perf_ibs_enable_event() argument
366 wrmsrl(hwc->config_base, hwc->config | config | perf_ibs->enable_mask); in perf_ibs_enable_event()
376 static inline void perf_ibs_disable_event(struct perf_ibs *perf_ibs, in perf_ibs_disable_event() argument
379 config &= ~perf_ibs->cnt_mask; in perf_ibs_disable_event()
382 config &= ~perf_ibs->enable_mask; in perf_ibs_disable_event()
395 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_start() local
396 struct cpu_perf_ibs *pcpu = this_cpu_ptr(perf_ibs->pcpu); in perf_ibs_start()
405 perf_ibs_set_period(perf_ibs, hwc, &period); in perf_ibs_start()
412 perf_ibs_enable_event(perf_ibs, hwc, period >> 4); in perf_ibs_start()
420 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_stop() local
421 struct cpu_perf_ibs *pcpu = this_cpu_ptr(perf_ibs->pcpu); in perf_ibs_stop()
443 perf_ibs_disable_event(perf_ibs, hwc, config); in perf_ibs_stop()
465 config &= ~perf_ibs->valid_mask; in perf_ibs_stop()
467 perf_ibs_event_update(perf_ibs, event, &config); in perf_ibs_stop()
473 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_add() local
474 struct cpu_perf_ibs *pcpu = this_cpu_ptr(perf_ibs->pcpu); in perf_ibs_add()
491 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_del() local
492 struct cpu_perf_ibs *pcpu = this_cpu_ptr(perf_ibs->pcpu); in perf_ibs_del()
519 static struct perf_ibs perf_ibs_fetch = {
544 static struct perf_ibs perf_ibs_op = {
569 static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs) in perf_ibs_handle_irq() argument
571 struct cpu_perf_ibs *pcpu = this_cpu_ptr(perf_ibs->pcpu); in perf_ibs_handle_irq()
603 if (!(*buf++ & perf_ibs->valid_mask)) in perf_ibs_handle_irq()
607 perf_ibs_event_update(perf_ibs, event, config); in perf_ibs_handle_irq()
609 if (!perf_ibs_set_period(perf_ibs, hwc, &period)) in perf_ibs_handle_irq()
615 check_rip = (perf_ibs == &perf_ibs_op && (ibs_caps & IBS_CAPS_RIPINVALIDCHK)); in perf_ibs_handle_irq()
617 offset_max = perf_ibs->offset_max; in perf_ibs_handle_irq()
625 offset = find_next_bit(perf_ibs->offset_mask, in perf_ibs_handle_irq()
626 perf_ibs->offset_max, in perf_ibs_handle_irq()
675 perf_ibs_enable_event(perf_ibs, hwc, period); in perf_ibs_handle_irq()
701 static __init int perf_ibs_pmu_init(struct perf_ibs *perf_ibs, char *name) in perf_ibs_pmu_init() argument
710 perf_ibs->pcpu = pcpu; in perf_ibs_pmu_init()
713 if (perf_ibs->format_attrs[0]) { in perf_ibs_pmu_init()
714 memset(&perf_ibs->format_group, 0, sizeof(perf_ibs->format_group)); in perf_ibs_pmu_init()
715 perf_ibs->format_group.name = "format"; in perf_ibs_pmu_init()
716 perf_ibs->format_group.attrs = perf_ibs->format_attrs; in perf_ibs_pmu_init()
718 memset(&perf_ibs->attr_groups, 0, sizeof(perf_ibs->attr_groups)); in perf_ibs_pmu_init()
719 perf_ibs->attr_groups[0] = &perf_ibs->format_group; in perf_ibs_pmu_init()
720 perf_ibs->pmu.attr_groups = perf_ibs->attr_groups; in perf_ibs_pmu_init()
723 ret = perf_pmu_register(&perf_ibs->pmu, name, -1); in perf_ibs_pmu_init()
725 perf_ibs->pcpu = NULL; in perf_ibs_pmu_init()