Lines Matching refs:cpu_pmu

260 	struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu);  in armv8pmu_event_attr_is_visible()  local
266 test_bit(pmu_attr->id, cpu_pmu->pmceid_bitmap)) in armv8pmu_event_attr_is_visible()
273 test_bit(id, cpu_pmu->pmceid_ext_bitmap)) in armv8pmu_event_attr_is_visible()
309 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in slots_show() local
310 u32 slots = cpu_pmu->reg_pmmir & ARMV8_PMU_SLOTS_MASK; in slots_show()
321 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in bus_slots_show() local
322 u32 bus_slots = (cpu_pmu->reg_pmmir >> ARMV8_PMU_BUS_SLOTS_SHIFT) in bus_slots_show()
334 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in bus_width_show() local
335 u32 bus_width = (cpu_pmu->reg_pmmir >> ARMV8_PMU_BUS_WIDTH_SHIFT) in bus_width_show()
372 static bool armv8pmu_has_long_event(struct arm_pmu *cpu_pmu) in armv8pmu_has_long_event() argument
374 return (cpu_pmu->pmuver >= ID_AA64DFR0_PMUVER_8_5); in armv8pmu_has_long_event()
386 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_event_is_chained() local
390 !armv8pmu_has_long_event(cpu_pmu) && in armv8pmu_event_is_chained()
518 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_event_needs_bias() local
525 if (armv8pmu_has_long_event(cpu_pmu) || in armv8pmu_event_needs_bias()
762 static void armv8pmu_start(struct arm_pmu *cpu_pmu) in armv8pmu_start() argument
768 static void armv8pmu_stop(struct arm_pmu *cpu_pmu) in armv8pmu_stop() argument
774 static irqreturn_t armv8pmu_handle_irq(struct arm_pmu *cpu_pmu) in armv8pmu_handle_irq() argument
778 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_handle_irq()
802 armv8pmu_stop(cpu_pmu); in armv8pmu_handle_irq()
803 for (idx = 0; idx < cpu_pmu->num_events; ++idx) { in armv8pmu_handle_irq()
830 cpu_pmu->disable(event); in armv8pmu_handle_irq()
832 armv8pmu_start(cpu_pmu); in armv8pmu_handle_irq()
838 struct arm_pmu *cpu_pmu) in armv8pmu_get_single_idx() argument
842 for (idx = ARMV8_IDX_COUNTER0; idx < cpu_pmu->num_events; idx++) { in armv8pmu_get_single_idx()
850 struct arm_pmu *cpu_pmu) in armv8pmu_get_chain_idx() argument
858 for (idx = ARMV8_IDX_COUNTER0 + 1; idx < cpu_pmu->num_events; idx += 2) { in armv8pmu_get_chain_idx()
873 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_get_event_idx() local
887 !armv8pmu_has_long_event(cpu_pmu)) in armv8pmu_get_event_idx()
888 return armv8pmu_get_chain_idx(cpuc, cpu_pmu); in armv8pmu_get_event_idx()
890 return armv8pmu_get_single_idx(cpuc, cpu_pmu); in armv8pmu_get_event_idx()
958 struct arm_pmu *cpu_pmu = (struct arm_pmu *)info; in armv8pmu_reset() local
975 if (armv8pmu_has_long_event(cpu_pmu)) in armv8pmu_reset()
1049 struct arm_pmu *cpu_pmu = probe->pmu; in __armv8pmu_probe_pmu() local
1061 cpu_pmu->pmuver = pmuver; in __armv8pmu_probe_pmu()
1065 cpu_pmu->num_events = (armv8pmu_pmcr_read() >> ARMV8_PMU_PMCR_N_SHIFT) in __armv8pmu_probe_pmu()
1069 cpu_pmu->num_events += 1; in __armv8pmu_probe_pmu()
1074 bitmap_from_arr32(cpu_pmu->pmceid_bitmap, in __armv8pmu_probe_pmu()
1080 bitmap_from_arr32(cpu_pmu->pmceid_ext_bitmap, in __armv8pmu_probe_pmu()
1085 cpu_pmu->reg_pmmir = read_cpuid(PMMIR_EL1); in __armv8pmu_probe_pmu()
1087 cpu_pmu->reg_pmmir = 0; in __armv8pmu_probe_pmu()
1090 static int armv8pmu_probe_pmu(struct arm_pmu *cpu_pmu) in armv8pmu_probe_pmu() argument
1093 .pmu = cpu_pmu, in armv8pmu_probe_pmu()
1098 ret = smp_call_function_any(&cpu_pmu->supported_cpus, in armv8pmu_probe_pmu()
1107 static int armv8_pmu_init(struct arm_pmu *cpu_pmu, char *name, in armv8_pmu_init() argument
1113 int ret = armv8pmu_probe_pmu(cpu_pmu); in armv8_pmu_init()
1117 cpu_pmu->handle_irq = armv8pmu_handle_irq; in armv8_pmu_init()
1118 cpu_pmu->enable = armv8pmu_enable_event; in armv8_pmu_init()
1119 cpu_pmu->disable = armv8pmu_disable_event; in armv8_pmu_init()
1120 cpu_pmu->read_counter = armv8pmu_read_counter; in armv8_pmu_init()
1121 cpu_pmu->write_counter = armv8pmu_write_counter; in armv8_pmu_init()
1122 cpu_pmu->get_event_idx = armv8pmu_get_event_idx; in armv8_pmu_init()
1123 cpu_pmu->clear_event_idx = armv8pmu_clear_event_idx; in armv8_pmu_init()
1124 cpu_pmu->start = armv8pmu_start; in armv8_pmu_init()
1125 cpu_pmu->stop = armv8pmu_stop; in armv8_pmu_init()
1126 cpu_pmu->reset = armv8pmu_reset; in armv8_pmu_init()
1127 cpu_pmu->set_event_filter = armv8pmu_set_event_filter; in armv8_pmu_init()
1128 cpu_pmu->filter_match = armv8pmu_filter_match; in armv8_pmu_init()
1130 cpu_pmu->name = name; in armv8_pmu_init()
1131 cpu_pmu->map_event = map_event; in armv8_pmu_init()
1132 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = events ? in armv8_pmu_init()
1134 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = format ? in armv8_pmu_init()
1136 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_CAPS] = caps ? in armv8_pmu_init()
1142 static int armv8_pmu_init_nogroups(struct arm_pmu *cpu_pmu, char *name, in armv8_pmu_init_nogroups() argument
1145 return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL); in armv8_pmu_init_nogroups()
1148 static int armv8_pmuv3_init(struct arm_pmu *cpu_pmu) in armv8_pmuv3_init() argument
1150 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_pmuv3", in armv8_pmuv3_init()
1154 static int armv8_a34_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a34_pmu_init() argument
1156 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a34", in armv8_a34_pmu_init()
1160 static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a35_pmu_init() argument
1162 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a35", in armv8_a35_pmu_init()
1166 static int armv8_a53_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a53_pmu_init() argument
1168 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a53", in armv8_a53_pmu_init()
1172 static int armv8_a55_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a55_pmu_init() argument
1174 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a55", in armv8_a55_pmu_init()
1178 static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a57_pmu_init() argument
1180 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57", in armv8_a57_pmu_init()
1184 static int armv8_a65_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a65_pmu_init() argument
1186 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a65", in armv8_a65_pmu_init()
1190 static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a72_pmu_init() argument
1192 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72", in armv8_a72_pmu_init()
1196 static int armv8_a73_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a73_pmu_init() argument
1198 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a73", in armv8_a73_pmu_init()
1202 static int armv8_a75_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a75_pmu_init() argument
1204 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a75", in armv8_a75_pmu_init()
1208 static int armv8_a76_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a76_pmu_init() argument
1210 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a76", in armv8_a76_pmu_init()
1214 static int armv8_a77_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a77_pmu_init() argument
1216 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a77", in armv8_a77_pmu_init()
1220 static int armv8_a78_pmu_init(struct arm_pmu *cpu_pmu) in armv8_a78_pmu_init() argument
1222 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a78", in armv8_a78_pmu_init()
1226 static int armv8_e1_pmu_init(struct arm_pmu *cpu_pmu) in armv8_e1_pmu_init() argument
1228 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_e1", in armv8_e1_pmu_init()
1232 static int armv8_n1_pmu_init(struct arm_pmu *cpu_pmu) in armv8_n1_pmu_init() argument
1234 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_n1", in armv8_n1_pmu_init()
1238 static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu) in armv8_thunder_pmu_init() argument
1240 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder", in armv8_thunder_pmu_init()
1244 static int armv8_vulcan_pmu_init(struct arm_pmu *cpu_pmu) in armv8_vulcan_pmu_init() argument
1246 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_brcm_vulcan", in armv8_vulcan_pmu_init()