Lines Matching refs:event

160 		struct perf_event *event;  member
236 static CCN_FORMAT_ATTR(event, "config:16-23");
267 u32 event; member
286 .type = CCN_TYPE_MN, .event = CCN_EVENT_WATCHPOINT, \
292 .event = CCN_EVENT_WATCHPOINT, .num_ports = CCN_NUM_XP_PORTS, \
297 .event = CCN_EVENT_WATCHPOINT, .num_ports = CCN_NUM_XP_PORTS, \
301 .type = CCN_TYPE_HNF, .event = _event, }
304 .type = CCN_TYPE_XP, .event = _event, \
313 .type = CCN_TYPE_RNI_3P, .event = _event, }
316 .type = CCN_TYPE_SBAS, .event = _event, }
325 struct arm_ccn_pmu_event *event = container_of(attr, in arm_ccn_pmu_event_show() local
329 res = snprintf(buf, PAGE_SIZE, "type=0x%x", event->type); in arm_ccn_pmu_event_show()
330 if (event->event) in arm_ccn_pmu_event_show()
332 event->event); in arm_ccn_pmu_event_show()
333 if (event->def) in arm_ccn_pmu_event_show()
335 event->def); in arm_ccn_pmu_event_show()
336 if (event->mask) in arm_ccn_pmu_event_show()
338 event->mask); in arm_ccn_pmu_event_show()
351 struct arm_ccn_pmu_event *event = container_of(dev_attr, in arm_ccn_pmu_events_is_visible() local
354 if (event->type == CCN_TYPE_SBAS && !ccn->sbas_present) in arm_ccn_pmu_events_is_visible()
356 if (event->type == CCN_TYPE_SBSX && !ccn->sbsx_present) in arm_ccn_pmu_events_is_visible()
590 static void arm_ccn_pmu_event_destroy(struct perf_event *event) in arm_ccn_pmu_event_destroy() argument
592 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_destroy()
593 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_destroy()
601 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP && in arm_ccn_pmu_event_destroy()
602 CCN_CONFIG_EVENT(event->attr.config) == in arm_ccn_pmu_event_destroy()
611 ccn->dt.pmu_counters[hw->idx].event = NULL; in arm_ccn_pmu_event_destroy()
614 static int arm_ccn_pmu_event_init(struct perf_event *event) in arm_ccn_pmu_event_init() argument
617 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_init()
623 if (event->attr.type != event->pmu->type) in arm_ccn_pmu_event_init()
626 ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_init()
627 event->destroy = arm_ccn_pmu_event_destroy; in arm_ccn_pmu_event_init()
634 if (has_branch_stack(event) || event->attr.exclude_user || in arm_ccn_pmu_event_init()
635 event->attr.exclude_kernel || event->attr.exclude_hv || in arm_ccn_pmu_event_init()
636 event->attr.exclude_idle) { in arm_ccn_pmu_event_init()
641 if (event->cpu < 0) { in arm_ccn_pmu_event_init()
646 node_xp = CCN_CONFIG_NODE(event->attr.config); in arm_ccn_pmu_event_init()
647 type = CCN_CONFIG_TYPE(event->attr.config); in arm_ccn_pmu_event_init()
648 event_id = CCN_CONFIG_EVENT(event->attr.config); in arm_ccn_pmu_event_init()
677 u32 port = CCN_CONFIG_PORT(event->attr.config); in arm_ccn_pmu_event_init()
678 u32 vc = CCN_CONFIG_VC(event->attr.config); in arm_ccn_pmu_event_init()
682 if (event_id != e->event) in arm_ccn_pmu_event_init()
710 arm_ccn_pmu_config_set(&event->attr.config, in arm_ccn_pmu_event_init()
721 ccn->dt.pmu_counters[CCN_IDX_PMU_CYCLE_COUNTER].event = event; in arm_ccn_pmu_event_init()
755 ccn->dt.pmu_counters[hw->idx].event = event; in arm_ccn_pmu_event_init()
784 static void arm_ccn_pmu_event_update(struct perf_event *event) in arm_ccn_pmu_event_update() argument
786 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_update()
787 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_update()
797 local64_add((new_count - prev_count) & mask, &event->count); in arm_ccn_pmu_event_update()
800 static void arm_ccn_pmu_xp_dt_config(struct perf_event *event, int enable) in arm_ccn_pmu_xp_dt_config() argument
802 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_xp_dt_config()
803 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_xp_dt_config()
807 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP) in arm_ccn_pmu_xp_dt_config()
808 xp = &ccn->xp[CCN_CONFIG_XP(event->attr.config)]; in arm_ccn_pmu_xp_dt_config()
811 CCN_CONFIG_NODE(event->attr.config))]; in arm_ccn_pmu_xp_dt_config()
829 static void arm_ccn_pmu_event_start(struct perf_event *event, int flags) in arm_ccn_pmu_event_start() argument
831 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_start()
832 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_start()
834 local64_set(&event->hw.prev_count, in arm_ccn_pmu_event_start()
843 arm_ccn_pmu_xp_dt_config(event, 1); in arm_ccn_pmu_event_start()
846 static void arm_ccn_pmu_event_stop(struct perf_event *event, int flags) in arm_ccn_pmu_event_stop() argument
848 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_stop()
849 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_stop()
853 arm_ccn_pmu_xp_dt_config(event, 0); in arm_ccn_pmu_event_stop()
866 arm_ccn_pmu_event_update(event); in arm_ccn_pmu_event_stop()
871 static void arm_ccn_pmu_xp_watchpoint_config(struct perf_event *event) in arm_ccn_pmu_xp_watchpoint_config() argument
873 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_xp_watchpoint_config()
874 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_xp_watchpoint_config()
879 u64 cmp_l = event->attr.config1; in arm_ccn_pmu_xp_watchpoint_config()
880 u64 cmp_h = event->attr.config2; in arm_ccn_pmu_xp_watchpoint_config()
881 u64 mask_l = ccn->dt.cmp_mask[CCN_CONFIG_MASK(event->attr.config)].l; in arm_ccn_pmu_xp_watchpoint_config()
882 u64 mask_h = ccn->dt.cmp_mask[CCN_CONFIG_MASK(event->attr.config)].h; in arm_ccn_pmu_xp_watchpoint_config()
890 val |= CCN_CONFIG_DIR(event->attr.config) << in arm_ccn_pmu_xp_watchpoint_config()
894 val |= CCN_CONFIG_PORT(event->attr.config) << in arm_ccn_pmu_xp_watchpoint_config()
898 val |= CCN_CONFIG_VC(event->attr.config) << in arm_ccn_pmu_xp_watchpoint_config()
919 static void arm_ccn_pmu_xp_event_config(struct perf_event *event) in arm_ccn_pmu_xp_event_config() argument
921 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_xp_event_config()
922 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_xp_event_config()
929 id = (CCN_CONFIG_VC(event->attr.config) << 4) | in arm_ccn_pmu_xp_event_config()
930 (CCN_CONFIG_PORT(event->attr.config) << 3) | in arm_ccn_pmu_xp_event_config()
931 (CCN_CONFIG_EVENT(event->attr.config) << 0); in arm_ccn_pmu_xp_event_config()
940 static void arm_ccn_pmu_node_event_config(struct perf_event *event) in arm_ccn_pmu_node_event_config() argument
942 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_node_event_config()
943 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_node_event_config()
946 u32 type = CCN_CONFIG_TYPE(event->attr.config); in arm_ccn_pmu_node_event_config()
949 port = arm_ccn_node_to_xp_port(CCN_CONFIG_NODE(event->attr.config)); in arm_ccn_pmu_node_event_config()
972 val |= CCN_CONFIG_EVENT(event->attr.config) << in arm_ccn_pmu_node_event_config()
977 static void arm_ccn_pmu_event_config(struct perf_event *event) in arm_ccn_pmu_event_config() argument
979 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_config()
980 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_config()
987 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP) in arm_ccn_pmu_event_config()
988 xp = CCN_CONFIG_XP(event->attr.config); in arm_ccn_pmu_event_config()
990 xp = arm_ccn_node_to_xp(CCN_CONFIG_NODE(event->attr.config)); in arm_ccn_pmu_event_config()
1002 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP) { in arm_ccn_pmu_event_config()
1003 if (CCN_CONFIG_EVENT(event->attr.config) == in arm_ccn_pmu_event_config()
1005 arm_ccn_pmu_xp_watchpoint_config(event); in arm_ccn_pmu_event_config()
1007 arm_ccn_pmu_xp_event_config(event); in arm_ccn_pmu_event_config()
1009 arm_ccn_pmu_node_event_config(event); in arm_ccn_pmu_event_config()
1015 static int arm_ccn_pmu_event_add(struct perf_event *event, int flags) in arm_ccn_pmu_event_add() argument
1017 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_add()
1019 arm_ccn_pmu_event_config(event); in arm_ccn_pmu_event_add()
1024 arm_ccn_pmu_event_start(event, PERF_EF_UPDATE); in arm_ccn_pmu_event_add()
1029 static void arm_ccn_pmu_event_del(struct perf_event *event, int flags) in arm_ccn_pmu_event_del() argument
1031 arm_ccn_pmu_event_stop(event, PERF_EF_UPDATE); in arm_ccn_pmu_event_del()
1034 static void arm_ccn_pmu_event_read(struct perf_event *event) in arm_ccn_pmu_event_read() argument
1036 arm_ccn_pmu_event_update(event); in arm_ccn_pmu_event_read()
1052 struct perf_event *event = dt->pmu_counters[idx].event; in arm_ccn_pmu_overflow_handler() local
1055 WARN_ON_ONCE(overflowed && !event && in arm_ccn_pmu_overflow_handler()
1058 if (!event || !overflowed) in arm_ccn_pmu_overflow_handler()
1061 arm_ccn_pmu_event_update(event); in arm_ccn_pmu_overflow_handler()