Lines Matching refs:event
61 struct perf_event *event[XCHAL_NUM_PERF_COUNTERS];
145 static void xtensa_perf_event_update(struct perf_event *event,
153 new_raw_count = xtensa_pmu_read_counter(event->hw.idx);
159 local64_add(delta, &event->count);
163 static bool xtensa_perf_event_set_period(struct perf_event *event,
169 if (!is_sampling_event(event)) {
192 perf_event_update_userpage(event);
207 static int xtensa_pmu_event_init(struct perf_event *event)
211 switch (event->attr.type) {
213 if (event->attr.config >= ARRAY_SIZE(xtensa_hw_ctl) ||
214 xtensa_hw_ctl[event->attr.config] == 0)
216 event->hw.config = xtensa_hw_ctl[event->attr.config];
220 ret = xtensa_pmu_cache_event(event->attr.config);
223 event->hw.config = ret;
228 if ((event->attr.config & XTENSA_PMU_PMCTRL_SELECT) ==
231 event->hw.config = (event->attr.config &
249 static void xtensa_pmu_start(struct perf_event *event, int flags)
251 struct hw_perf_event *hwc = &event->hw;
258 WARN_ON_ONCE(!(event->hw.state & PERF_HES_UPTODATE));
259 xtensa_perf_event_set_period(event, hwc, idx);
267 static void xtensa_pmu_stop(struct perf_event *event, int flags)
269 struct hw_perf_event *hwc = &event->hw;
280 !(event->hw.state & PERF_HES_UPTODATE)) {
281 xtensa_perf_event_update(event, &event->hw, idx);
282 event->hw.state |= PERF_HES_UPTODATE;
290 static int xtensa_pmu_add(struct perf_event *event, int flags)
293 struct hw_perf_event *hwc = &event->hw;
305 ev->event[idx] = event;
310 xtensa_pmu_start(event, PERF_EF_RELOAD);
312 perf_event_update_userpage(event);
316 static void xtensa_pmu_del(struct perf_event *event, int flags)
320 xtensa_pmu_stop(event, PERF_EF_UPDATE);
321 __clear_bit(event->hw.idx, ev->used_mask);
322 perf_event_update_userpage(event);
325 static void xtensa_pmu_read(struct perf_event *event)
327 xtensa_perf_event_update(event, &event->hw, event->hw.idx);
376 struct perf_event *event = ev->event[i];
377 struct hw_perf_event *hwc = &event->hw;
384 xtensa_perf_event_update(event, hwc, i);
386 if (xtensa_perf_event_set_period(event, hwc, i)) {
391 if (perf_event_overflow(event, &data, regs))
392 xtensa_pmu_stop(event, 0);