Lines Matching refs:event
90 struct perf_event *event[MAX_HWEVENTS]; member
861 static u64 sparc_perf_event_update(struct perf_event *event, in sparc_perf_event_update() argument
879 local64_add(delta, &event->count); in sparc_perf_event_update()
885 static int sparc_perf_event_set_period(struct perf_event *event, in sparc_perf_event_set_period() argument
912 perf_event_update_userpage(event); in sparc_perf_event_set_period()
922 struct perf_event *cp = cpuc->event[i]; in read_in_all_counters()
948 struct perf_event *cp = cpuc->event[i]; in calculate_single_pcr()
967 cpuc->pcr[0] |= cpuc->event[0]->hw.config_base; in calculate_single_pcr()
970 static void sparc_pmu_start(struct perf_event *event, int flags);
981 struct perf_event *cp = cpuc->event[i]; in calculate_multiple_pcrs()
994 struct perf_event *cp = cpuc->event[i]; in calculate_multiple_pcrs()
1056 struct perf_event *event) in active_event_index() argument
1061 if (cpuc->event[i] == event) in active_event_index()
1068 static void sparc_pmu_start(struct perf_event *event, int flags) in sparc_pmu_start() argument
1071 int idx = active_event_index(cpuc, event); in sparc_pmu_start()
1074 WARN_ON_ONCE(!(event->hw.state & PERF_HES_UPTODATE)); in sparc_pmu_start()
1075 sparc_perf_event_set_period(event, &event->hw, idx); in sparc_pmu_start()
1078 event->hw.state = 0; in sparc_pmu_start()
1080 sparc_pmu_enable_event(cpuc, &event->hw, idx); in sparc_pmu_start()
1083 static void sparc_pmu_stop(struct perf_event *event, int flags) in sparc_pmu_stop() argument
1086 int idx = active_event_index(cpuc, event); in sparc_pmu_stop()
1088 if (!(event->hw.state & PERF_HES_STOPPED)) { in sparc_pmu_stop()
1089 sparc_pmu_disable_event(cpuc, &event->hw, idx); in sparc_pmu_stop()
1090 event->hw.state |= PERF_HES_STOPPED; in sparc_pmu_stop()
1093 if (!(event->hw.state & PERF_HES_UPTODATE) && (flags & PERF_EF_UPDATE)) { in sparc_pmu_stop()
1094 sparc_perf_event_update(event, &event->hw, idx); in sparc_pmu_stop()
1095 event->hw.state |= PERF_HES_UPTODATE; in sparc_pmu_stop()
1099 static void sparc_pmu_del(struct perf_event *event, int _flags) in sparc_pmu_del() argument
1108 if (event == cpuc->event[i]) { in sparc_pmu_del()
1112 sparc_pmu_stop(event, PERF_EF_UPDATE); in sparc_pmu_del()
1118 cpuc->event[i - 1] = cpuc->event[i]; in sparc_pmu_del()
1124 perf_event_update_userpage(event); in sparc_pmu_del()
1134 static void sparc_pmu_read(struct perf_event *event) in sparc_pmu_read() argument
1137 int idx = active_event_index(cpuc, event); in sparc_pmu_read()
1138 struct hw_perf_event *hwc = &event->hw; in sparc_pmu_read()
1140 sparc_perf_event_update(event, hwc, idx); in sparc_pmu_read()
1212 static void hw_perf_event_destroy(struct perf_event *event) in hw_perf_event_destroy() argument
1302 struct perf_event *event; in check_excludes() local
1314 event = evts[i]; in check_excludes()
1316 eu = event->attr.exclude_user; in check_excludes()
1317 ek = event->attr.exclude_kernel; in check_excludes()
1318 eh = event->attr.exclude_hv; in check_excludes()
1320 } else if (event->attr.exclude_user != eu || in check_excludes()
1321 event->attr.exclude_kernel != ek || in check_excludes()
1322 event->attr.exclude_hv != eh) { in check_excludes()
1334 struct perf_event *event; in collect_events() local
1344 list_for_each_entry(event, &group->sibling_list, group_entry) { in collect_events()
1345 if (!is_software_event(event) && in collect_events()
1346 event->state != PERF_EVENT_STATE_OFF) { in collect_events()
1349 evts[n] = event; in collect_events()
1350 events[n] = event->hw.event_base; in collect_events()
1357 static int sparc_pmu_add(struct perf_event *event, int ef_flags) in sparc_pmu_add() argument
1369 cpuc->event[n0] = event; in sparc_pmu_add()
1370 cpuc->events[n0] = event->hw.event_base; in sparc_pmu_add()
1373 event->hw.state = PERF_HES_UPTODATE; in sparc_pmu_add()
1375 event->hw.state |= PERF_HES_STOPPED; in sparc_pmu_add()
1385 if (check_excludes(cpuc->event, n0, 1)) in sparc_pmu_add()
1387 if (sparc_check_constraints(cpuc->event, cpuc->events, n0 + 1)) in sparc_pmu_add()
1400 static int sparc_pmu_event_init(struct perf_event *event) in sparc_pmu_event_init() argument
1402 struct perf_event_attr *attr = &event->attr; in sparc_pmu_event_init()
1404 struct hw_perf_event *hwc = &event->hw; in sparc_pmu_event_init()
1414 if (has_branch_stack(event)) in sparc_pmu_event_init()
1459 if (event->group_leader != event) { in sparc_pmu_event_init()
1460 n = collect_events(event->group_leader, in sparc_pmu_event_init()
1467 evts[n] = event; in sparc_pmu_event_init()
1481 event->destroy = hw_perf_event_destroy; in sparc_pmu_event_init()
1551 if (check_excludes(cpuc->event, 0, n)) in sparc_pmu_commit_txn()
1553 if (sparc_check_constraints(cpuc->event, cpuc->events, n)) in sparc_pmu_commit_txn()
1634 struct perf_event *event = cpuc->event[i]; in perf_event_nmi_handler() local
1643 hwc = &event->hw; in perf_event_nmi_handler()
1644 val = sparc_perf_event_update(event, hwc, idx); in perf_event_nmi_handler()
1649 if (!sparc_perf_event_set_period(event, hwc, idx)) in perf_event_nmi_handler()
1652 if (perf_event_overflow(event, &data, regs)) in perf_event_nmi_handler()
1653 sparc_pmu_stop(event, 0); in perf_event_nmi_handler()