Lines Matching refs:cpu_pmu
271 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in armv8pmu_event_attr_is_visible() local
277 test_bit(pmu_attr->id, cpu_pmu->pmceid_bitmap)) in armv8pmu_event_attr_is_visible()
284 test_bit(id, cpu_pmu->pmceid_ext_bitmap)) in armv8pmu_event_attr_is_visible()
329 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in slots_show() local
330 u32 slots = cpu_pmu->reg_pmmir & ARMV8_PMU_SLOTS_MASK; in slots_show()
341 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in bus_slots_show() local
342 u32 bus_slots = (cpu_pmu->reg_pmmir >> ARMV8_PMU_BUS_SLOTS_SHIFT) in bus_slots_show()
354 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in bus_width_show() local
355 u32 bus_width = (cpu_pmu->reg_pmmir >> ARMV8_PMU_BUS_WIDTH_SHIFT) in bus_width_show()
395 static bool armv8pmu_has_long_event(struct arm_pmu *cpu_pmu) in armv8pmu_has_long_event() argument
397 return (IS_ENABLED(CONFIG_ARM64) && is_pmuv3p5(cpu_pmu->pmuver)); in armv8pmu_has_long_event()
413 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_event_is_chained() local
417 !armv8pmu_has_long_event(cpu_pmu) && in armv8pmu_event_is_chained()
478 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_event_needs_bias() local
485 if (armv8pmu_has_long_event(cpu_pmu) || in armv8pmu_event_needs_bias()
702 static void armv8pmu_enable_user_access(struct arm_pmu *cpu_pmu) in armv8pmu_enable_user_access() argument
705 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_enable_user_access()
708 for_each_clear_bit(i, cpuc->used_mask, cpu_pmu->num_events) { in armv8pmu_enable_user_access()
736 static void armv8pmu_start(struct arm_pmu *cpu_pmu) in armv8pmu_start() argument
746 armv8pmu_enable_user_access(cpu_pmu); in armv8pmu_start()
756 static void armv8pmu_stop(struct arm_pmu *cpu_pmu) in armv8pmu_stop() argument
762 static irqreturn_t armv8pmu_handle_irq(struct arm_pmu *cpu_pmu) in armv8pmu_handle_irq() argument
766 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_handle_irq()
790 armv8pmu_stop(cpu_pmu); in armv8pmu_handle_irq()
791 for (idx = 0; idx < cpu_pmu->num_events; ++idx) { in armv8pmu_handle_irq()
818 cpu_pmu->disable(event); in armv8pmu_handle_irq()
820 armv8pmu_start(cpu_pmu); in armv8pmu_handle_irq()
826 struct arm_pmu *cpu_pmu) in armv8pmu_get_single_idx() argument
830 for (idx = ARMV8_IDX_COUNTER0; idx < cpu_pmu->num_events; idx++) { in armv8pmu_get_single_idx()
838 struct arm_pmu *cpu_pmu) in armv8pmu_get_chain_idx() argument
846 for (idx = ARMV8_IDX_COUNTER0 + 1; idx < cpu_pmu->num_events; idx += 2) { in armv8pmu_get_chain_idx()
861 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_get_event_idx() local
871 !armv8pmu_has_long_event(cpu_pmu)) in armv8pmu_get_event_idx()
879 return armv8pmu_get_chain_idx(cpuc, cpu_pmu); in armv8pmu_get_event_idx()
881 return armv8pmu_get_single_idx(cpuc, cpu_pmu); in armv8pmu_get_event_idx()
959 struct arm_pmu *cpu_pmu = (struct arm_pmu *)info; in armv8pmu_reset() local
976 if (armv8pmu_has_long_event(cpu_pmu)) in armv8pmu_reset()
1097 struct arm_pmu *cpu_pmu = probe->pmu; in __armv8pmu_probe_pmu() local
1106 cpu_pmu->pmuver = pmuver; in __armv8pmu_probe_pmu()
1110 cpu_pmu->num_events = (armv8pmu_pmcr_read() >> ARMV8_PMU_PMCR_N_SHIFT) in __armv8pmu_probe_pmu()
1114 cpu_pmu->num_events += 1; in __armv8pmu_probe_pmu()
1119 bitmap_from_arr32(cpu_pmu->pmceid_bitmap, in __armv8pmu_probe_pmu()
1125 bitmap_from_arr32(cpu_pmu->pmceid_ext_bitmap, in __armv8pmu_probe_pmu()
1130 cpu_pmu->reg_pmmir = read_pmmir(); in __armv8pmu_probe_pmu()
1132 cpu_pmu->reg_pmmir = 0; in __armv8pmu_probe_pmu()
1135 static int armv8pmu_probe_pmu(struct arm_pmu *cpu_pmu) in armv8pmu_probe_pmu() argument
1138 .pmu = cpu_pmu, in armv8pmu_probe_pmu()
1143 ret = smp_call_function_any(&cpu_pmu->supported_cpus, in armv8pmu_probe_pmu()
1189 static int armv8_pmu_init(struct arm_pmu *cpu_pmu, char *name, in armv8_pmu_init() argument
1195 int ret = armv8pmu_probe_pmu(cpu_pmu); in armv8_pmu_init()
1199 cpu_pmu->handle_irq = armv8pmu_handle_irq; in armv8_pmu_init()
1200 cpu_pmu->enable = armv8pmu_enable_event; in armv8_pmu_init()
1201 cpu_pmu->disable = armv8pmu_disable_event; in armv8_pmu_init()
1202 cpu_pmu->read_counter = armv8pmu_read_counter; in armv8_pmu_init()
1203 cpu_pmu->write_counter = armv8pmu_write_counter; in armv8_pmu_init()
1204 cpu_pmu->get_event_idx = armv8pmu_get_event_idx; in armv8_pmu_init()
1205 cpu_pmu->clear_event_idx = armv8pmu_clear_event_idx; in armv8_pmu_init()
1206 cpu_pmu->start = armv8pmu_start; in armv8_pmu_init()
1207 cpu_pmu->stop = armv8pmu_stop; in armv8_pmu_init()
1208 cpu_pmu->reset = armv8pmu_reset; in armv8_pmu_init()
1209 cpu_pmu->set_event_filter = armv8pmu_set_event_filter; in armv8_pmu_init()
1211 cpu_pmu->pmu.event_idx = armv8pmu_user_event_idx; in armv8_pmu_init()
1213 cpu_pmu->name = name; in armv8_pmu_init()
1214 cpu_pmu->map_event = map_event; in armv8_pmu_init()
1215 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = events ? in armv8_pmu_init()
1217 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = format ? in armv8_pmu_init()
1219 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_CAPS] = caps ? in armv8_pmu_init()
1226 static int armv8_pmu_init_nogroups(struct arm_pmu *cpu_pmu, char *name, in armv8_pmu_init_nogroups() argument
1229 return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL); in armv8_pmu_init_nogroups()
1233 static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
1235 return armv8_pmu_init_nogroups(cpu_pmu, #name, armv8_pmuv3_map_event);\
1264 static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu) in PMUV3_INIT_SIMPLE()
1266 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a35", in PMUV3_INIT_SIMPLE()
1270 static int armv8_a53_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a53_pmu_init() argument
1272 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a53", in armv8_a53_pmu_init()
1276 static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a57_pmu_init() argument
1278 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57", in armv8_a57_pmu_init()
1282 static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a72_pmu_init() argument
1284 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72", in armv8_a72_pmu_init()
1288 static int armv8_a73_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a73_pmu_init() argument
1290 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a73", in armv8_a73_pmu_init()
1294 static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu) in armv8_thunder_pmu_init() argument
1296 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder", in armv8_thunder_pmu_init()
1300 static int armv8_vulcan_pmu_init(struct arm_pmu *cpu_pmu) in armv8_vulcan_pmu_init() argument
1302 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_brcm_vulcan", in armv8_vulcan_pmu_init()