Lines Matching refs:event
40 struct perf_event *event; member
116 perf_event_try_update(struct perf_event *event, u64 new_raw_count, int width) in perf_event_try_update() argument
118 struct hw_perf_event *hwc = &event->hw; in perf_event_try_update()
146 local64_add(delta, &event->count); in perf_event_try_update()
181 static int perf_ibs_precise_event(struct perf_event *event, u64 *config) in perf_ibs_precise_event() argument
183 switch (event->attr.precise_ip) { in perf_ibs_precise_event()
193 switch (event->attr.type) { in perf_ibs_precise_event()
195 switch (event->attr.config) { in perf_ibs_precise_event()
202 switch (event->attr.config) { in perf_ibs_precise_event()
227 static int perf_ibs_init(struct perf_event *event) in perf_ibs_init() argument
229 struct hw_perf_event *hwc = &event->hw; in perf_ibs_init()
234 perf_ibs = get_ibs_pmu(event->attr.type); in perf_ibs_init()
236 config = event->attr.config; in perf_ibs_init()
239 ret = perf_ibs_precise_event(event, &config); in perf_ibs_init()
244 if (event->pmu != &perf_ibs->pmu) in perf_ibs_init()
247 if (perf_flags(&event->attr) & perf_flags(&ibs_notsupp)) in perf_ibs_init()
257 if (!event->attr.sample_freq && hwc->sample_period & 0x0f) in perf_ibs_init()
270 event->attr.sample_period = max_cnt << 4; in perf_ibs_init()
271 hwc->sample_period = event->attr.sample_period; in perf_ibs_init()
321 perf_ibs_event_update(struct perf_ibs *perf_ibs, struct perf_event *event, in perf_ibs_event_update() argument
331 while (!perf_event_try_update(event, count, 64)) { in perf_ibs_event_update()
332 rdmsrl(event->hw.config_base, *config); in perf_ibs_event_update()
365 static void perf_ibs_start(struct perf_event *event, int flags) in perf_ibs_start() argument
367 struct hw_perf_event *hwc = &event->hw; in perf_ibs_start()
368 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_start()
382 perf_event_update_userpage(event); in perf_ibs_start()
385 static void perf_ibs_stop(struct perf_event *event, int flags) in perf_ibs_stop() argument
387 struct hw_perf_event *hwc = &event->hw; in perf_ibs_stop()
388 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_stop()
416 perf_ibs_event_update(perf_ibs, event, &config); in perf_ibs_stop()
420 static int perf_ibs_add(struct perf_event *event, int flags) in perf_ibs_add() argument
422 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_add()
428 event->hw.state = PERF_HES_UPTODATE | PERF_HES_STOPPED; in perf_ibs_add()
430 pcpu->event = event; in perf_ibs_add()
433 perf_ibs_start(event, PERF_EF_RELOAD); in perf_ibs_add()
438 static void perf_ibs_del(struct perf_event *event, int flags) in perf_ibs_del() argument
440 struct perf_ibs *perf_ibs = container_of(event->pmu, struct perf_ibs, pmu); in perf_ibs_del()
446 perf_ibs_stop(event, PERF_EF_UPDATE); in perf_ibs_del()
448 pcpu->event = NULL; in perf_ibs_del()
450 perf_event_update_userpage(event); in perf_ibs_del()
453 static void perf_ibs_read(struct perf_event *event) { } in perf_ibs_read() argument
519 struct perf_event *event = pcpu->event; in perf_ibs_handle_irq() local
520 struct hw_perf_event *hwc = &event->hw; in perf_ibs_handle_irq()
546 perf_ibs_event_update(perf_ibs, event, config); in perf_ibs_handle_irq()
555 if (event->attr.sample_type & PERF_SAMPLE_RAW) in perf_ibs_handle_irq()
568 if (event->attr.sample_type & PERF_SAMPLE_RAW) { in perf_ibs_handle_irq()
593 if (event->attr.sample_type & PERF_SAMPLE_RAW) { in perf_ibs_handle_irq()
599 throttle = perf_event_overflow(event, &data, ®s); in perf_ibs_handle_irq()
606 perf_event_update_userpage(event); in perf_ibs_handle_irq()