Lines Matching refs:event
410 static inline void tile_pmu_enable_event(struct perf_event *event) in tile_pmu_enable_event() argument
412 struct hw_perf_event *hwc = &event->hw; in tile_pmu_enable_event()
459 static inline void tile_pmu_disable_event(struct perf_event *event) in tile_pmu_disable_event() argument
461 struct hw_perf_event *hwc = &event->hw; in tile_pmu_disable_event()
502 static u64 tile_perf_event_update(struct perf_event *event) in tile_perf_event_update() argument
504 struct hw_perf_event *hwc = &event->hw; in tile_perf_event_update()
538 local64_add(delta, &event->count); in tile_perf_event_update()
548 static int tile_event_set_period(struct perf_event *event) in tile_event_set_period() argument
550 struct hw_perf_event *hwc = &event->hw; in tile_event_set_period()
583 perf_event_update_userpage(event); in tile_event_set_period()
591 static void tile_pmu_stop(struct perf_event *event, int flags) in tile_pmu_stop() argument
594 struct hw_perf_event *hwc = &event->hw; in tile_pmu_stop()
598 tile_pmu_disable_event(event); in tile_pmu_stop()
609 tile_perf_event_update(event); in tile_pmu_stop()
617 static void tile_pmu_start(struct perf_event *event, int flags) in tile_pmu_start() argument
620 int idx = event->hw.idx; in tile_pmu_start()
622 if (WARN_ON_ONCE(!(event->hw.state & PERF_HES_STOPPED))) in tile_pmu_start()
629 WARN_ON_ONCE(!(event->hw.state & PERF_HES_UPTODATE)); in tile_pmu_start()
630 tile_event_set_period(event); in tile_pmu_start()
633 event->hw.state = 0; in tile_pmu_start()
635 cpuc->events[idx] = event; in tile_pmu_start()
640 tile_pmu_enable_event(event); in tile_pmu_start()
642 perf_event_update_userpage(event); in tile_pmu_start()
651 static int tile_pmu_add(struct perf_event *event, int flags) in tile_pmu_add() argument
658 hwc = &event->hw; in tile_pmu_add()
666 cpuc->event_list[cpuc->n_events] = event; in tile_pmu_add()
689 event->hw.idx = b; in tile_pmu_add()
696 tile_pmu_start(event, PERF_EF_RELOAD); in tile_pmu_add()
707 static void tile_pmu_del(struct perf_event *event, int flags) in tile_pmu_del() argument
716 if (cpuc->event_list[i] == event) { in tile_pmu_del()
720 cpuc->events[event->hw.idx] = NULL; in tile_pmu_del()
721 __clear_bit(event->hw.idx, &cpuc->used_mask); in tile_pmu_del()
722 tile_pmu_stop(event, PERF_EF_UPDATE); in tile_pmu_del()
731 perf_event_update_userpage(event); in tile_pmu_del()
737 static inline void tile_pmu_read(struct perf_event *event) in tile_pmu_read() argument
739 tile_perf_event_update(event); in tile_pmu_read()
782 static void tile_event_destroy(struct perf_event *event) in tile_event_destroy() argument
788 static int __tile_event_init(struct perf_event *event) in __tile_event_init() argument
790 struct perf_event_attr *attr = &event->attr; in __tile_event_init()
791 struct hw_perf_event *hwc = &event->hw; in __tile_event_init()
829 event->destroy = tile_event_destroy; in __tile_event_init()
833 static int tile_event_init(struct perf_event *event) in tile_event_init() argument
848 switch (event->attr.type) { in tile_event_init()
858 err = __tile_event_init(event); in tile_event_init()
860 if (event->destroy) in tile_event_init()
861 event->destroy(event); in tile_event_init()
884 struct perf_event *event; in tile_pmu_handle_irq() local
900 event = cpuc->events[bit]; in tile_pmu_handle_irq()
902 if (!event) in tile_pmu_handle_irq()
908 hwc = &event->hw; in tile_pmu_handle_irq()
910 val = tile_perf_event_update(event); in tile_pmu_handle_irq()
914 perf_sample_data_init(&data, 0, event->hw.last_period); in tile_pmu_handle_irq()
915 if (!tile_event_set_period(event)) in tile_pmu_handle_irq()
918 if (perf_event_overflow(event, &data, regs)) in tile_pmu_handle_irq()
919 tile_pmu_stop(event, 0); in tile_pmu_handle_irq()