Lines Matching refs:arc_pmu
30 struct arc_pmu { struct
96 static struct arc_pmu *arc_pmu; variable
173 hwc->sample_period = arc_pmu->max_period; in arc_pmu_event_init()
194 if (arc_pmu->ev_hw_idx[event->attr.config] < 0) in arc_pmu_event_init()
196 hwc->config |= arc_pmu->ev_hw_idx[event->attr.config]; in arc_pmu_event_init()
206 hwc->config |= arc_pmu->ev_hw_idx[ret]; in arc_pmu_event_init()
212 if (event->attr.config >= arc_pmu->n_events) in arc_pmu_event_init()
218 arc_pmu->raw_entry[event->attr.config].name); in arc_pmu_event_init()
266 if (left > arc_pmu->max_period) in arc_pmu_event_set_period()
267 left = arc_pmu->max_period; in arc_pmu_event_set_period()
269 value = arc_pmu->max_period - left; in arc_pmu_event_set_period()
367 if (idx == arc_pmu->n_counters) in arc_pmu_add()
380 lower_32_bits(arc_pmu->max_period)); in arc_pmu_add()
382 upper_32_bits(arc_pmu->max_period)); in arc_pmu_add()
408 arc_pmu_disable(&arc_pmu->pmu); in arc_pmu_intr()
449 arc_pmu_enable(&arc_pmu->pmu); in arc_pmu_intr()
505 memmove(arc_pmu->raw_entry[j].name, str, ARCPMU_EVENT_NAME_LEN - 1); in arc_pmu_add_raw_event_attr()
506 arc_pmu->attr[j].attr.attr.name = arc_pmu->raw_entry[j].name; in arc_pmu_add_raw_event_attr()
507 arc_pmu->attr[j].attr.attr.mode = VERIFY_OCTAL_PERMISSIONS(0444); in arc_pmu_add_raw_event_attr()
508 arc_pmu->attr[j].attr.show = arc_pmu_events_sysfs_show; in arc_pmu_add_raw_event_attr()
509 arc_pmu->attr[j].id = j; in arc_pmu_add_raw_event_attr()
510 arc_pmu->attrs[j] = &(arc_pmu->attr[j].attr.attr); in arc_pmu_add_raw_event_attr()
515 arc_pmu->attr = devm_kmalloc_array(dev, arc_pmu->n_events + 1, in arc_pmu_raw_alloc()
516 sizeof(*arc_pmu->attr), GFP_KERNEL | __GFP_ZERO); in arc_pmu_raw_alloc()
517 if (!arc_pmu->attr) in arc_pmu_raw_alloc()
520 arc_pmu->attrs = devm_kmalloc_array(dev, arc_pmu->n_events + 1, in arc_pmu_raw_alloc()
521 sizeof(*arc_pmu->attrs), GFP_KERNEL | __GFP_ZERO); in arc_pmu_raw_alloc()
522 if (!arc_pmu->attrs) in arc_pmu_raw_alloc()
525 arc_pmu->raw_entry = devm_kmalloc_array(dev, arc_pmu->n_events, in arc_pmu_raw_alloc()
526 sizeof(*arc_pmu->raw_entry), GFP_KERNEL | __GFP_ZERO); in arc_pmu_raw_alloc()
527 if (!arc_pmu->raw_entry) in arc_pmu_raw_alloc()
556 arc_pmu->ev_hw_idx[i] = j; in arc_pmu_map_hw_event()
590 arc_pmu = devm_kzalloc(&pdev->dev, sizeof(struct arc_pmu), GFP_KERNEL); in arc_pmu_device_probe()
591 if (!arc_pmu) in arc_pmu_device_probe()
594 arc_pmu->n_events = cc_bcr.c; in arc_pmu_device_probe()
601 arc_pmu->n_counters = pct_bcr.c; in arc_pmu_device_probe()
604 arc_pmu->max_period = (1ULL << counter_size) / 2 - 1ULL; in arc_pmu_device_probe()
607 arc_pmu->n_counters, counter_size, cc_bcr.c, in arc_pmu_device_probe()
612 arc_pmu->ev_hw_idx[i] = -1; in arc_pmu_device_probe()
624 arc_pmu_events_attr_gr.attrs = arc_pmu->attrs; in arc_pmu_device_probe()
625 arc_pmu->attr_groups[ARCPMU_ATTR_GR_EVENTS] = &arc_pmu_events_attr_gr; in arc_pmu_device_probe()
626 arc_pmu->attr_groups[ARCPMU_ATTR_GR_FORMATS] = &arc_pmu_format_attr_gr; in arc_pmu_device_probe()
628 arc_pmu->pmu = (struct pmu) { in arc_pmu_device_probe()
637 .attr_groups = arc_pmu->attr_groups, in arc_pmu_device_probe()
648 arc_pmu->irq = irq; in arc_pmu_device_probe()
657 arc_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT; in arc_pmu_device_probe()
663 return perf_pmu_register(&arc_pmu->pmu, "arc_pct", PERF_TYPE_RAW); in arc_pmu_device_probe()