Lines Matching refs:event
222 #define CCI400_PMU_EVENT_SOURCE(event) \ argument
223 ((event >> CCI400_PMU_EVENT_SOURCE_SHIFT) & \
225 #define CCI400_PMU_EVENT_CODE(event) \ argument
226 ((event >> CCI400_PMU_EVENT_CODE_SHIFT) & CCI400_PMU_EVENT_CODE_MASK)
246 CCI_FORMAT_EXT_ATTR_ENTRY(event, "config:0-4"),
463 #define CCI500_PMU_EVENT_SOURCE(event) \ argument
464 ((event >> CCI500_PMU_EVENT_SOURCE_SHIFT) & CCI500_PMU_EVENT_SOURCE_MASK)
465 #define CCI500_PMU_EVENT_CODE(event) \ argument
466 ((event >> CCI500_PMU_EVENT_CODE_SHIFT) & CCI500_PMU_EVENT_CODE_MASK)
484 CCI_FORMAT_EXT_ATTR_ENTRY(event, "config:0-4"),
650 static void pmu_set_event(struct cci_pmu *cci_pmu, int idx, unsigned long event) in pmu_set_event() argument
652 pmu_write_register(cci_pmu, event, idx, CCI_PMU_EVT_SEL); in pmu_set_event()
665 static int pmu_get_event_idx(struct cci_pmu_hw_events *hw, struct perf_event *event) in pmu_get_event_idx() argument
667 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in pmu_get_event_idx()
668 unsigned long cci_event = event->hw.config_base; in pmu_get_event_idx()
683 static int pmu_map_event(struct perf_event *event) in pmu_map_event() argument
685 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in pmu_map_event()
687 if (event->attr.type < PERF_TYPE_MAX || in pmu_map_event()
691 return cci_pmu->model->validate_hw_event(cci_pmu, event->attr.config); in pmu_map_event()
741 static u32 pmu_read_counter(struct perf_event *event) in pmu_read_counter() argument
743 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in pmu_read_counter()
744 struct hw_perf_event *hw_counter = &event->hw; in pmu_read_counter()
757 static void pmu_write_counter(struct perf_event *event, u32 value) in pmu_write_counter() argument
759 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in pmu_write_counter()
760 struct hw_perf_event *hw_counter = &event->hw; in pmu_write_counter()
769 static u64 pmu_event_update(struct perf_event *event) in pmu_event_update() argument
771 struct hw_perf_event *hwc = &event->hw; in pmu_event_update()
776 new_raw_count = pmu_read_counter(event); in pmu_event_update()
782 local64_add(delta, &event->count); in pmu_event_update()
787 static void pmu_read(struct perf_event *event) in pmu_read() argument
789 pmu_event_update(event); in pmu_read()
792 void pmu_event_set_period(struct perf_event *event) in pmu_event_set_period() argument
794 struct hw_perf_event *hwc = &event->hw; in pmu_event_set_period()
803 pmu_write_counter(event, val); in pmu_event_set_period()
820 struct perf_event *event = events->events[idx]; in pmu_handle_irq() local
823 if (!event) in pmu_handle_irq()
826 hw_counter = &event->hw; in pmu_handle_irq()
836 pmu_event_update(event); in pmu_handle_irq()
837 pmu_event_set_period(event); in pmu_handle_irq()
860 static void hw_perf_event_destroy(struct perf_event *event) in hw_perf_event_destroy() argument
862 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in hw_perf_event_destroy()
917 static void cci_pmu_start(struct perf_event *event, int pmu_flags) in cci_pmu_start() argument
919 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in cci_pmu_start()
921 struct hw_perf_event *hwc = &event->hw; in cci_pmu_start()
945 pmu_event_set_period(event); in cci_pmu_start()
951 static void cci_pmu_stop(struct perf_event *event, int pmu_flags) in cci_pmu_stop() argument
953 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in cci_pmu_stop()
954 struct hw_perf_event *hwc = &event->hw; in cci_pmu_stop()
970 pmu_event_update(event); in cci_pmu_stop()
974 static int cci_pmu_add(struct perf_event *event, int flags) in cci_pmu_add() argument
976 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in cci_pmu_add()
978 struct hw_perf_event *hwc = &event->hw; in cci_pmu_add()
982 perf_pmu_disable(event->pmu); in cci_pmu_add()
985 idx = pmu_get_event_idx(hw_events, event); in cci_pmu_add()
991 event->hw.idx = idx; in cci_pmu_add()
992 hw_events->events[idx] = event; in cci_pmu_add()
996 cci_pmu_start(event, PERF_EF_RELOAD); in cci_pmu_add()
999 perf_event_update_userpage(event); in cci_pmu_add()
1002 perf_pmu_enable(event->pmu); in cci_pmu_add()
1006 static void cci_pmu_del(struct perf_event *event, int flags) in cci_pmu_del() argument
1008 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in cci_pmu_del()
1010 struct hw_perf_event *hwc = &event->hw; in cci_pmu_del()
1013 cci_pmu_stop(event, PERF_EF_UPDATE); in cci_pmu_del()
1017 perf_event_update_userpage(event); in cci_pmu_del()
1023 struct perf_event *event) in validate_event() argument
1025 if (is_software_event(event)) in validate_event()
1033 if (event->pmu != cci_pmu) in validate_event()
1036 if (event->state < PERF_EVENT_STATE_OFF) in validate_event()
1039 if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec) in validate_event()
1042 return pmu_get_event_idx(hw_events, event) >= 0; in validate_event()
1046 validate_group(struct perf_event *event) in validate_group() argument
1048 struct perf_event *sibling, *leader = event->group_leader; in validate_group()
1049 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in validate_group()
1060 if (!validate_event(event->pmu, &fake_pmu, leader)) in validate_group()
1064 if (!validate_event(event->pmu, &fake_pmu, sibling)) in validate_group()
1068 if (!validate_event(event->pmu, &fake_pmu, event)) in validate_group()
1075 __hw_perf_event_init(struct perf_event *event) in __hw_perf_event_init() argument
1077 struct hw_perf_event *hwc = &event->hw; in __hw_perf_event_init()
1080 mapping = pmu_map_event(event); in __hw_perf_event_init()
1083 pr_debug("event %x:%llx not supported\n", event->attr.type, in __hw_perf_event_init()
1084 event->attr.config); in __hw_perf_event_init()
1112 if (event->group_leader != event) { in __hw_perf_event_init()
1113 if (validate_group(event) != 0) in __hw_perf_event_init()
1120 static int cci_pmu_event_init(struct perf_event *event) in cci_pmu_event_init() argument
1122 struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); in cci_pmu_event_init()
1127 if (event->attr.type != event->pmu->type) in cci_pmu_event_init()
1131 if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK) in cci_pmu_event_init()
1135 if (event->attr.exclude_user || in cci_pmu_event_init()
1136 event->attr.exclude_kernel || in cci_pmu_event_init()
1137 event->attr.exclude_hv || in cci_pmu_event_init()
1138 event->attr.exclude_idle || in cci_pmu_event_init()
1139 event->attr.exclude_host || in cci_pmu_event_init()
1140 event->attr.exclude_guest) in cci_pmu_event_init()
1153 if (event->cpu < 0 || cpu < 0) in cci_pmu_event_init()
1155 event->cpu = cpu; in cci_pmu_event_init()
1157 event->destroy = hw_perf_event_destroy; in cci_pmu_event_init()
1169 err = __hw_perf_event_init(event); in cci_pmu_event_init()
1171 hw_perf_event_destroy(event); in cci_pmu_event_init()