Lines Matching refs:event
74 armpmu_map_event(struct perf_event *event, in armpmu_map_event() argument
82 u64 config = event->attr.config; in armpmu_map_event()
84 switch (event->attr.type) { in armpmu_map_event()
96 int armpmu_event_set_period(struct perf_event *event) in armpmu_event_set_period() argument
98 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_event_set_period()
99 struct hw_perf_event *hwc = &event->hw; in armpmu_event_set_period()
123 armpmu->write_counter(event, (u64)(-left) & 0xffffffff); in armpmu_event_set_period()
125 perf_event_update_userpage(event); in armpmu_event_set_period()
130 u64 armpmu_event_update(struct perf_event *event) in armpmu_event_update() argument
132 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_event_update()
133 struct hw_perf_event *hwc = &event->hw; in armpmu_event_update()
138 new_raw_count = armpmu->read_counter(event); in armpmu_event_update()
146 local64_add(delta, &event->count); in armpmu_event_update()
153 armpmu_read(struct perf_event *event) in armpmu_read() argument
155 armpmu_event_update(event); in armpmu_read()
159 armpmu_stop(struct perf_event *event, int flags) in armpmu_stop() argument
161 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_stop()
162 struct hw_perf_event *hwc = &event->hw; in armpmu_stop()
169 armpmu->disable(event); in armpmu_stop()
170 armpmu_event_update(event); in armpmu_stop()
175 static void armpmu_start(struct perf_event *event, int flags) in armpmu_start() argument
177 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_start()
178 struct hw_perf_event *hwc = &event->hw; in armpmu_start()
195 armpmu_event_set_period(event); in armpmu_start()
196 armpmu->enable(event); in armpmu_start()
200 armpmu_del(struct perf_event *event, int flags) in armpmu_del() argument
202 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_del()
204 struct hw_perf_event *hwc = &event->hw; in armpmu_del()
207 armpmu_stop(event, PERF_EF_UPDATE); in armpmu_del()
211 armpmu->clear_event_idx(hw_events, event); in armpmu_del()
213 perf_event_update_userpage(event); in armpmu_del()
217 armpmu_add(struct perf_event *event, int flags) in armpmu_add() argument
219 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_add()
221 struct hw_perf_event *hwc = &event->hw; in armpmu_add()
225 perf_pmu_disable(event->pmu); in armpmu_add()
228 idx = armpmu->get_event_idx(hw_events, event); in armpmu_add()
238 event->hw.idx = idx; in armpmu_add()
239 armpmu->disable(event); in armpmu_add()
240 hw_events->events[idx] = event; in armpmu_add()
244 armpmu_start(event, PERF_EF_RELOAD); in armpmu_add()
247 perf_event_update_userpage(event); in armpmu_add()
250 perf_pmu_enable(event->pmu); in armpmu_add()
256 struct perf_event *event) in validate_event() argument
258 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in validate_event()
260 if (is_software_event(event)) in validate_event()
263 if (event->state < PERF_EVENT_STATE_OFF) in validate_event()
266 if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec) in validate_event()
269 return armpmu->get_event_idx(hw_events, event) >= 0; in validate_event()
273 validate_group(struct perf_event *event) in validate_group() argument
275 struct perf_event *sibling, *leader = event->group_leader; in validate_group()
294 if (!validate_event(&fake_pmu, event)) in validate_group()
352 hw_perf_event_destroy(struct perf_event *event) in hw_perf_event_destroy() argument
354 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in hw_perf_event_destroy()
372 __hw_perf_event_init(struct perf_event *event) in __hw_perf_event_init() argument
374 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in __hw_perf_event_init()
375 struct hw_perf_event *hwc = &event->hw; in __hw_perf_event_init()
378 mapping = armpmu->map_event(event); in __hw_perf_event_init()
381 pr_debug("event %x:%llx not supported\n", event->attr.type, in __hw_perf_event_init()
382 event->attr.config); in __hw_perf_event_init()
401 armpmu->set_event_filter(hwc, &event->attr)) && in __hw_perf_event_init()
402 event_requires_mode_exclusion(&event->attr)) { in __hw_perf_event_init()
413 if (!is_sampling_event(event)) { in __hw_perf_event_init()
425 if (event->group_leader != event) { in __hw_perf_event_init()
426 if (validate_group(event) != 0) in __hw_perf_event_init()
433 static int armpmu_event_init(struct perf_event *event) in armpmu_event_init() argument
435 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_event_init()
440 if (has_branch_stack(event)) in armpmu_event_init()
443 if (armpmu->map_event(event) == -ENOENT) in armpmu_event_init()
446 event->destroy = hw_perf_event_destroy; in armpmu_event_init()
461 err = __hw_perf_event_init(event); in armpmu_event_init()
463 hw_perf_event_destroy(event); in armpmu_event_init()