Lines Matching refs:event
154 struct perf_event *event; member
226 static CCN_FORMAT_ATTR(event, "config:16-23");
259 u32 event; member
278 .type = CCN_TYPE_MN, .event = CCN_EVENT_WATCHPOINT, \
284 .event = CCN_EVENT_WATCHPOINT, .num_ports = CCN_NUM_XP_PORTS, \
289 .event = CCN_EVENT_WATCHPOINT, .num_ports = CCN_NUM_XP_PORTS, \
293 .type = CCN_TYPE_HNF, .event = _event, }
296 .type = CCN_TYPE_XP, .event = _event, \
305 .type = CCN_TYPE_RNI_3P, .event = _event, }
308 .type = CCN_TYPE_SBAS, .event = _event, }
318 struct arm_ccn_pmu_event *event = container_of(attr, in arm_ccn_pmu_event_show() local
322 res = sysfs_emit(buf, "type=0x%x", event->type); in arm_ccn_pmu_event_show()
323 if (event->event) in arm_ccn_pmu_event_show()
324 res += sysfs_emit_at(buf, res, ",event=0x%x", event->event); in arm_ccn_pmu_event_show()
325 if (event->def) in arm_ccn_pmu_event_show()
326 res += sysfs_emit_at(buf, res, ",%s", event->def); in arm_ccn_pmu_event_show()
327 if (event->mask) in arm_ccn_pmu_event_show()
328 res += sysfs_emit_at(buf, res, ",mask=0x%x", event->mask); in arm_ccn_pmu_event_show()
331 switch (event->type) { in arm_ccn_pmu_event_show()
336 if (event->event == CCN_EVENT_WATCHPOINT) in arm_ccn_pmu_event_show()
363 struct arm_ccn_pmu_event *event = container_of(dev_attr, in arm_ccn_pmu_events_is_visible() local
366 if (event->type == CCN_TYPE_SBAS && !ccn->sbas_present) in arm_ccn_pmu_events_is_visible()
368 if (event->type == CCN_TYPE_SBSX && !ccn->sbsx_present) in arm_ccn_pmu_events_is_visible()
622 static int arm_ccn_pmu_event_alloc(struct perf_event *event) in arm_ccn_pmu_event_alloc() argument
624 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_alloc()
625 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_alloc()
630 node_xp = CCN_CONFIG_NODE(event->attr.config); in arm_ccn_pmu_event_alloc()
631 type = CCN_CONFIG_TYPE(event->attr.config); in arm_ccn_pmu_event_alloc()
632 event_id = CCN_CONFIG_EVENT(event->attr.config); in arm_ccn_pmu_event_alloc()
641 ccn->dt.pmu_counters[CCN_IDX_PMU_CYCLE_COUNTER].event = event; in arm_ccn_pmu_event_alloc()
675 ccn->dt.pmu_counters[hw->idx].event = event; in arm_ccn_pmu_event_alloc()
680 static void arm_ccn_pmu_event_release(struct perf_event *event) in arm_ccn_pmu_event_release() argument
682 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_release()
683 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_release()
691 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP && in arm_ccn_pmu_event_release()
692 CCN_CONFIG_EVENT(event->attr.config) == in arm_ccn_pmu_event_release()
701 ccn->dt.pmu_counters[hw->idx].event = NULL; in arm_ccn_pmu_event_release()
704 static int arm_ccn_pmu_event_init(struct perf_event *event) in arm_ccn_pmu_event_init() argument
707 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_init()
713 if (event->attr.type != event->pmu->type) in arm_ccn_pmu_event_init()
716 ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_init()
723 if (has_branch_stack(event)) { in arm_ccn_pmu_event_init()
728 if (event->cpu < 0) { in arm_ccn_pmu_event_init()
741 event->cpu = ccn->dt.cpu; in arm_ccn_pmu_event_init()
743 node_xp = CCN_CONFIG_NODE(event->attr.config); in arm_ccn_pmu_event_init()
744 type = CCN_CONFIG_TYPE(event->attr.config); in arm_ccn_pmu_event_init()
745 event_id = CCN_CONFIG_EVENT(event->attr.config); in arm_ccn_pmu_event_init()
780 u32 port = CCN_CONFIG_PORT(event->attr.config); in arm_ccn_pmu_event_init()
781 u32 vc = CCN_CONFIG_VC(event->attr.config); in arm_ccn_pmu_event_init()
785 if (event_id != e->event) in arm_ccn_pmu_event_init()
813 arm_ccn_pmu_config_set(&event->attr.config, in arm_ccn_pmu_event_init()
822 if (event->group_leader->pmu != event->pmu && in arm_ccn_pmu_event_init()
823 !is_software_event(event->group_leader)) in arm_ccn_pmu_event_init()
826 for_each_sibling_event(sibling, event->group_leader) { in arm_ccn_pmu_event_init()
827 if (sibling->pmu != event->pmu && in arm_ccn_pmu_event_init()
859 static void arm_ccn_pmu_event_update(struct perf_event *event) in arm_ccn_pmu_event_update() argument
861 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_update()
862 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_update()
872 local64_add((new_count - prev_count) & mask, &event->count); in arm_ccn_pmu_event_update()
875 static void arm_ccn_pmu_xp_dt_config(struct perf_event *event, int enable) in arm_ccn_pmu_xp_dt_config() argument
877 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_xp_dt_config()
878 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_xp_dt_config()
886 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP) in arm_ccn_pmu_xp_dt_config()
887 xp = &ccn->xp[CCN_CONFIG_XP(event->attr.config)]; in arm_ccn_pmu_xp_dt_config()
890 CCN_CONFIG_NODE(event->attr.config))]; in arm_ccn_pmu_xp_dt_config()
908 static void arm_ccn_pmu_event_start(struct perf_event *event, int flags) in arm_ccn_pmu_event_start() argument
910 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_start()
911 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_start()
913 local64_set(&event->hw.prev_count, in arm_ccn_pmu_event_start()
918 arm_ccn_pmu_xp_dt_config(event, 1); in arm_ccn_pmu_event_start()
921 static void arm_ccn_pmu_event_stop(struct perf_event *event, int flags) in arm_ccn_pmu_event_stop() argument
923 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_stop()
926 arm_ccn_pmu_xp_dt_config(event, 0); in arm_ccn_pmu_event_stop()
929 arm_ccn_pmu_event_update(event); in arm_ccn_pmu_event_stop()
934 static void arm_ccn_pmu_xp_watchpoint_config(struct perf_event *event) in arm_ccn_pmu_xp_watchpoint_config() argument
936 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_xp_watchpoint_config()
937 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_xp_watchpoint_config()
942 u64 cmp_l = event->attr.config1; in arm_ccn_pmu_xp_watchpoint_config()
943 u64 cmp_h = event->attr.config2; in arm_ccn_pmu_xp_watchpoint_config()
944 u64 mask_l = ccn->dt.cmp_mask[CCN_CONFIG_MASK(event->attr.config)].l; in arm_ccn_pmu_xp_watchpoint_config()
945 u64 mask_h = ccn->dt.cmp_mask[CCN_CONFIG_MASK(event->attr.config)].h; in arm_ccn_pmu_xp_watchpoint_config()
953 val |= CCN_CONFIG_DIR(event->attr.config) << in arm_ccn_pmu_xp_watchpoint_config()
957 val |= CCN_CONFIG_PORT(event->attr.config) << in arm_ccn_pmu_xp_watchpoint_config()
961 val |= CCN_CONFIG_VC(event->attr.config) << in arm_ccn_pmu_xp_watchpoint_config()
982 static void arm_ccn_pmu_xp_event_config(struct perf_event *event) in arm_ccn_pmu_xp_event_config() argument
984 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_xp_event_config()
985 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_xp_event_config()
992 id = (CCN_CONFIG_VC(event->attr.config) << 4) | in arm_ccn_pmu_xp_event_config()
993 (CCN_CONFIG_BUS(event->attr.config) << 3) | in arm_ccn_pmu_xp_event_config()
994 (CCN_CONFIG_EVENT(event->attr.config) << 0); in arm_ccn_pmu_xp_event_config()
1003 static void arm_ccn_pmu_node_event_config(struct perf_event *event) in arm_ccn_pmu_node_event_config() argument
1005 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_node_event_config()
1006 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_node_event_config()
1009 u32 type = CCN_CONFIG_TYPE(event->attr.config); in arm_ccn_pmu_node_event_config()
1012 port = arm_ccn_node_to_xp_port(CCN_CONFIG_NODE(event->attr.config)); in arm_ccn_pmu_node_event_config()
1035 val |= CCN_CONFIG_EVENT(event->attr.config) << in arm_ccn_pmu_node_event_config()
1040 static void arm_ccn_pmu_event_config(struct perf_event *event) in arm_ccn_pmu_event_config() argument
1042 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_config()
1043 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_config()
1050 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP) in arm_ccn_pmu_event_config()
1051 xp = CCN_CONFIG_XP(event->attr.config); in arm_ccn_pmu_event_config()
1053 xp = arm_ccn_node_to_xp(CCN_CONFIG_NODE(event->attr.config)); in arm_ccn_pmu_event_config()
1065 if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP) { in arm_ccn_pmu_event_config()
1066 if (CCN_CONFIG_EVENT(event->attr.config) == in arm_ccn_pmu_event_config()
1068 arm_ccn_pmu_xp_watchpoint_config(event); in arm_ccn_pmu_event_config()
1070 arm_ccn_pmu_xp_event_config(event); in arm_ccn_pmu_event_config()
1072 arm_ccn_pmu_node_event_config(event); in arm_ccn_pmu_event_config()
1084 static int arm_ccn_pmu_event_add(struct perf_event *event, int flags) in arm_ccn_pmu_event_add() argument
1087 struct hw_perf_event *hw = &event->hw; in arm_ccn_pmu_event_add()
1088 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_add()
1090 err = arm_ccn_pmu_event_alloc(event); in arm_ccn_pmu_event_add()
1103 arm_ccn_pmu_event_config(event); in arm_ccn_pmu_event_add()
1108 arm_ccn_pmu_event_start(event, PERF_EF_UPDATE); in arm_ccn_pmu_event_add()
1113 static void arm_ccn_pmu_event_del(struct perf_event *event, int flags) in arm_ccn_pmu_event_del() argument
1115 struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); in arm_ccn_pmu_event_del()
1117 arm_ccn_pmu_event_stop(event, PERF_EF_UPDATE); in arm_ccn_pmu_event_del()
1119 arm_ccn_pmu_event_release(event); in arm_ccn_pmu_event_del()
1125 static void arm_ccn_pmu_event_read(struct perf_event *event) in arm_ccn_pmu_event_read() argument
1127 arm_ccn_pmu_event_update(event); in arm_ccn_pmu_event_read()
1161 struct perf_event *event = dt->pmu_counters[idx].event; in arm_ccn_pmu_overflow_handler() local
1164 WARN_ON_ONCE(overflowed && !event && in arm_ccn_pmu_overflow_handler()
1167 if (!event || !overflowed) in arm_ccn_pmu_overflow_handler()
1170 arm_ccn_pmu_event_update(event); in arm_ccn_pmu_overflow_handler()