Lines Matching defs:cpu_pmu

275 	struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu);
281 test_bit(pmu_attr->id, cpu_pmu->pmceid_bitmap))
288 test_bit(id, cpu_pmu->pmceid_ext_bitmap))
333 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu);
334 u32 slots = cpu_pmu->reg_pmmir & ARMV8_PMU_SLOTS_MASK;
345 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu);
346 u32 bus_slots = (cpu_pmu->reg_pmmir >> ARMV8_PMU_BUS_SLOTS_SHIFT)
358 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu);
359 u32 bus_width = (cpu_pmu->reg_pmmir >> ARMV8_PMU_BUS_WIDTH_SHIFT)
399 static bool armv8pmu_has_long_event(struct arm_pmu *cpu_pmu)
401 return (IS_ENABLED(CONFIG_ARM64) && is_pmuv3p5(cpu_pmu->pmuver));
417 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
421 !armv8pmu_has_long_event(cpu_pmu) &&
482 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
489 if (armv8pmu_has_long_event(cpu_pmu) ||
706 static void armv8pmu_enable_user_access(struct arm_pmu *cpu_pmu)
709 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events);
712 for_each_clear_bit(i, cpuc->used_mask, cpu_pmu->num_events) {
740 static void armv8pmu_start(struct arm_pmu *cpu_pmu)
750 armv8pmu_enable_user_access(cpu_pmu);
760 static void armv8pmu_stop(struct arm_pmu *cpu_pmu)
766 static irqreturn_t armv8pmu_handle_irq(struct arm_pmu *cpu_pmu)
770 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events);
794 armv8pmu_stop(cpu_pmu);
795 for (idx = 0; idx < cpu_pmu->num_events; ++idx) {
822 cpu_pmu->disable(event);
824 armv8pmu_start(cpu_pmu);
830 struct arm_pmu *cpu_pmu)
834 for (idx = ARMV8_IDX_COUNTER0; idx < cpu_pmu->num_events; idx++) {
842 struct arm_pmu *cpu_pmu)
850 for (idx = ARMV8_IDX_COUNTER0 + 1; idx < cpu_pmu->num_events; idx += 2) {
865 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
875 !armv8pmu_has_long_event(cpu_pmu))
883 return armv8pmu_get_chain_idx(cpuc, cpu_pmu);
885 return armv8pmu_get_single_idx(cpuc, cpu_pmu);
963 struct arm_pmu *cpu_pmu = (struct arm_pmu *)info;
980 if (armv8pmu_has_long_event(cpu_pmu))
1101 struct arm_pmu *cpu_pmu = probe->pmu;
1110 cpu_pmu->pmuver = pmuver;
1114 cpu_pmu->num_events = (armv8pmu_pmcr_read() >> ARMV8_PMU_PMCR_N_SHIFT)
1118 cpu_pmu->num_events += 1;
1123 bitmap_from_arr32(cpu_pmu->pmceid_bitmap,
1129 bitmap_from_arr32(cpu_pmu->pmceid_ext_bitmap,
1134 cpu_pmu->reg_pmmir = read_pmmir();
1136 cpu_pmu->reg_pmmir = 0;
1139 static int armv8pmu_probe_pmu(struct arm_pmu *cpu_pmu)
1142 .pmu = cpu_pmu,
1147 ret = smp_call_function_any(&cpu_pmu->supported_cpus,
1193 static int armv8_pmu_init(struct arm_pmu *cpu_pmu, char *name,
1199 int ret = armv8pmu_probe_pmu(cpu_pmu);
1203 cpu_pmu->handle_irq = armv8pmu_handle_irq;
1204 cpu_pmu->enable = armv8pmu_enable_event;
1205 cpu_pmu->disable = armv8pmu_disable_event;
1206 cpu_pmu->read_counter = armv8pmu_read_counter;
1207 cpu_pmu->write_counter = armv8pmu_write_counter;
1208 cpu_pmu->get_event_idx = armv8pmu_get_event_idx;
1209 cpu_pmu->clear_event_idx = armv8pmu_clear_event_idx;
1210 cpu_pmu->start = armv8pmu_start;
1211 cpu_pmu->stop = armv8pmu_stop;
1212 cpu_pmu->reset = armv8pmu_reset;
1213 cpu_pmu->set_event_filter = armv8pmu_set_event_filter;
1215 cpu_pmu->pmu.event_idx = armv8pmu_user_event_idx;
1217 cpu_pmu->name = name;
1218 cpu_pmu->map_event = map_event;
1219 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = events ?
1221 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = format ?
1223 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_CAPS] = caps ?
1230 static int armv8_pmu_init_nogroups(struct arm_pmu *cpu_pmu, char *name,
1233 return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL);
1237 static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
1239 return armv8_pmu_init_nogroups(cpu_pmu, #name, armv8_pmuv3_map_event);\
1268 static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu)
1270 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a35",
1274 static int armv8_a53_pmu_init(struct arm_pmu *cpu_pmu)
1276 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a53",
1280 static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu)
1282 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57",
1286 static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu)
1288 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72",
1292 static int armv8_a73_pmu_init(struct arm_pmu *cpu_pmu)
1294 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a73",
1298 static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu)
1300 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder",
1304 static int armv8_vulcan_pmu_init(struct arm_pmu *cpu_pmu)
1306 return armv8_pmu_init_nogroups(cpu_pmu, "armv8_brcm_vulcan",