Lines Matching refs:event
111 #define M_PERFCTL_EVENT(event) (((event) & 0x3ff) << 5) argument
375 static int mipspmu_event_set_period(struct perf_event *event, in mipspmu_event_set_period() argument
406 perf_event_update_userpage(event); in mipspmu_event_set_period()
411 static void mipspmu_event_update(struct perf_event *event, in mipspmu_event_update() argument
428 local64_add(delta, &event->count); in mipspmu_event_update()
432 static void mipspmu_start(struct perf_event *event, int flags) in mipspmu_start() argument
434 struct hw_perf_event *hwc = &event->hw; in mipspmu_start()
442 mipspmu_event_set_period(event, hwc, hwc->idx); in mipspmu_start()
448 static void mipspmu_stop(struct perf_event *event, int flags) in mipspmu_stop() argument
450 struct hw_perf_event *hwc = &event->hw; in mipspmu_stop()
456 mipspmu_event_update(event, hwc, hwc->idx); in mipspmu_stop()
461 static int mipspmu_add(struct perf_event *event, int flags) in mipspmu_add() argument
464 struct hw_perf_event *hwc = &event->hw; in mipspmu_add()
468 perf_pmu_disable(event->pmu); in mipspmu_add()
481 event->hw.idx = idx; in mipspmu_add()
483 cpuc->events[idx] = event; in mipspmu_add()
487 mipspmu_start(event, PERF_EF_RELOAD); in mipspmu_add()
490 perf_event_update_userpage(event); in mipspmu_add()
493 perf_pmu_enable(event->pmu); in mipspmu_add()
497 static void mipspmu_del(struct perf_event *event, int flags) in mipspmu_del() argument
500 struct hw_perf_event *hwc = &event->hw; in mipspmu_del()
505 mipspmu_stop(event, PERF_EF_UPDATE); in mipspmu_del()
509 perf_event_update_userpage(event); in mipspmu_del()
512 static void mipspmu_read(struct perf_event *event) in mipspmu_read() argument
514 struct hw_perf_event *hwc = &event->hw; in mipspmu_read()
520 mipspmu_event_update(event, hwc, hwc->idx); in mipspmu_read()
597 static int __hw_perf_event_init(struct perf_event *event);
599 static void hw_perf_event_destroy(struct perf_event *event) in hw_perf_event_destroy() argument
614 static int mipspmu_event_init(struct perf_event *event) in mipspmu_event_init() argument
619 if (has_branch_stack(event)) in mipspmu_event_init()
622 switch (event->attr.type) { in mipspmu_event_init()
632 if (event->cpu >= nr_cpumask_bits || in mipspmu_event_init()
633 (event->cpu >= 0 && !cpu_online(event->cpu))) in mipspmu_event_init()
649 return __hw_perf_event_init(event); in mipspmu_event_init()
716 static int validate_group(struct perf_event *event) in validate_group() argument
718 struct perf_event *sibling, *leader = event->group_leader; in validate_group()
731 if (mipsxx_pmu_alloc_counter(&fake_cpuc, &event->hw) < 0) in validate_group()
742 struct perf_event *event = cpuc->events[idx]; in handle_associated_event() local
743 struct hw_perf_event *hwc = &event->hw; in handle_associated_event()
745 mipspmu_event_update(event, hwc, idx); in handle_associated_event()
746 data->period = event->hw.last_period; in handle_associated_event()
747 if (!mipspmu_event_set_period(event, hwc, idx)) in handle_associated_event()
750 if (perf_event_overflow(event, data, regs)) in handle_associated_event()
1231 static void check_and_calc_range(struct perf_event *event, in check_and_calc_range() argument
1234 struct hw_perf_event *hwc = &event->hw; in check_and_calc_range()
1236 if (event->cpu >= 0) { in check_and_calc_range()
1248 hwc->config_base |= M_PERFCTL_VPEID(event->cpu); in check_and_calc_range()
1255 static void check_and_calc_range(struct perf_event *event, in check_and_calc_range() argument
1261 static int __hw_perf_event_init(struct perf_event *event) in __hw_perf_event_init() argument
1263 struct perf_event_attr *attr = &event->attr; in __hw_perf_event_init()
1264 struct hw_perf_event *hwc = &event->hw; in __hw_perf_event_init()
1269 if (PERF_TYPE_HARDWARE == event->attr.type) { in __hw_perf_event_init()
1270 if (event->attr.config >= PERF_COUNT_HW_MAX) in __hw_perf_event_init()
1272 pev = mipspmu_map_general_event(event->attr.config); in __hw_perf_event_init()
1273 } else if (PERF_TYPE_HW_CACHE == event->attr.type) { in __hw_perf_event_init()
1274 pev = mipspmu_map_cache_event(event->attr.config); in __hw_perf_event_init()
1275 } else if (PERF_TYPE_RAW == event->attr.type) { in __hw_perf_event_init()
1278 pev = mipspmu.map_raw_event(event->attr.config); in __hw_perf_event_init()
1285 if (PERF_TYPE_RAW == event->attr.type) in __hw_perf_event_init()
1298 check_and_calc_range(event, pev); in __hw_perf_event_init()
1301 if (PERF_TYPE_RAW == event->attr.type) in __hw_perf_event_init()
1329 if (event->group_leader != event) in __hw_perf_event_init()
1330 err = validate_group(event); in __hw_perf_event_init()
1332 event->destroy = hw_perf_event_destroy; in __hw_perf_event_init()
1335 event->destroy(event); in __hw_perf_event_init()