Lines Matching refs:cpu_pmu

276 	struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu);  in armv8pmu_event_attr_is_visible()  local
282 test_bit(pmu_attr->id, cpu_pmu->pmceid_bitmap)) in armv8pmu_event_attr_is_visible()
289 test_bit(id, cpu_pmu->pmceid_ext_bitmap)) in armv8pmu_event_attr_is_visible()
379 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in slots_show() local
380 u32 slots = FIELD_GET(ARMV8_PMU_SLOTS, cpu_pmu->reg_pmmir); in slots_show()
391 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in bus_slots_show() local
392 u32 bus_slots = FIELD_GET(ARMV8_PMU_BUS_SLOTS, cpu_pmu->reg_pmmir); in bus_slots_show()
403 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in bus_width_show() local
404 u32 bus_width = FIELD_GET(ARMV8_PMU_BUS_WIDTH, cpu_pmu->reg_pmmir); in bus_width_show()
416 static u32 threshold_max(struct arm_pmu *cpu_pmu) in threshold_max() argument
429 return (1 << FIELD_GET(ARMV8_PMU_THWIDTH, cpu_pmu->reg_pmmir)) - 1; in threshold_max()
436 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in threshold_max_show() local
438 return sysfs_emit(page, "0x%08x\n", threshold_max(cpu_pmu)); in threshold_max_show()
447 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in branches_show() local
449 return sysfs_emit(page, "%d\n", brbe_num_branch_records(cpu_pmu)); in branches_show()
467 struct arm_pmu *cpu_pmu = container_of(pmu, struct arm_pmu, pmu); in caps_is_visible() local
470 return brbe_num_branch_records(cpu_pmu) ? attr->mode : 0; in caps_is_visible()
489 static bool armv8pmu_has_long_event(struct arm_pmu *cpu_pmu) in armv8pmu_has_long_event() argument
491 return (IS_ENABLED(CONFIG_ARM64) && is_pmuv3p5(cpu_pmu->pmuver)); in armv8pmu_has_long_event()
507 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_event_is_chained() local
511 !armv8pmu_has_long_event(cpu_pmu) && in armv8pmu_event_is_chained()
563 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_event_needs_bias() local
570 if (armv8pmu_has_long_event(cpu_pmu) || in armv8pmu_event_needs_bias()
795 static void armv8pmu_enable_user_access(struct arm_pmu *cpu_pmu) in armv8pmu_enable_user_access() argument
798 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_enable_user_access()
800 if (is_pmuv3p9(cpu_pmu->pmuver)) { in armv8pmu_enable_user_access()
809 for_each_andnot_bit(i, cpu_pmu->cntr_mask, cpuc->used_mask, in armv8pmu_enable_user_access()
836 static void armv8pmu_start(struct arm_pmu *cpu_pmu) in armv8pmu_start() argument
839 struct pmu_hw_events *hw_events = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_start()
847 armv8pmu_enable_user_access(cpu_pmu); in armv8pmu_start()
854 brbe_enable(cpu_pmu); in armv8pmu_start()
860 static void armv8pmu_stop(struct arm_pmu *cpu_pmu) in armv8pmu_stop() argument
862 struct pmu_hw_events *hw_events = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_stop()
881 static irqreturn_t armv8pmu_handle_irq(struct arm_pmu *cpu_pmu) in armv8pmu_handle_irq() argument
885 struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events); in armv8pmu_handle_irq()
909 armv8pmu_stop(cpu_pmu); in armv8pmu_handle_irq()
910 for_each_set_bit(idx, cpu_pmu->cntr_mask, ARMPMU_MAX_HWEVENTS) { in armv8pmu_handle_irq()
941 armv8pmu_start(cpu_pmu); in armv8pmu_handle_irq()
947 struct arm_pmu *cpu_pmu) in armv8pmu_get_single_idx() argument
951 for_each_set_bit(idx, cpu_pmu->cntr_mask, ARMV8_PMU_MAX_GENERAL_COUNTERS) { in armv8pmu_get_single_idx()
959 struct arm_pmu *cpu_pmu) in armv8pmu_get_chain_idx() argument
967 for_each_set_bit(idx, cpu_pmu->cntr_mask, ARMV8_PMU_MAX_GENERAL_COUNTERS) { in armv8pmu_get_chain_idx()
984 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); in armv8pmu_get_event_idx() local
995 !armv8pmu_has_long_event(cpu_pmu)) in armv8pmu_get_event_idx()
1006 test_bit(ARMV8_PMU_INSTR_IDX, cpu_pmu->cntr_mask) && in armv8pmu_get_event_idx()
1016 return armv8pmu_get_chain_idx(cpuc, cpu_pmu); in armv8pmu_get_event_idx()
1018 return armv8pmu_get_single_idx(cpuc, cpu_pmu); in armv8pmu_get_event_idx()
1061 struct arm_pmu *cpu_pmu = to_arm_pmu(perf_event->pmu); in armv8pmu_set_event_filter() local
1070 if (!brbe_num_branch_records(cpu_pmu) || !brbe_branch_attr_valid(perf_event)) in armv8pmu_set_event_filter()
1108 if (th > threshold_max(cpu_pmu)) { in armv8pmu_set_event_filter()
1130 struct arm_pmu *cpu_pmu = (struct arm_pmu *)info; in armv8pmu_reset() local
1133 bitmap_to_arr64(&mask, cpu_pmu->cntr_mask, ARMPMU_MAX_HWEVENTS); in armv8pmu_reset()
1142 if (brbe_num_branch_records(cpu_pmu)) { in armv8pmu_reset()
1154 if (armv8pmu_has_long_event(cpu_pmu)) in armv8pmu_reset()
1275 struct arm_pmu *cpu_pmu = probe->pmu; in __armv8pmu_probe_pmu() local
1284 cpu_pmu->pmuver = pmuver; in __armv8pmu_probe_pmu()
1288 bitmap_set(cpu_pmu->cntr_mask, in __armv8pmu_probe_pmu()
1292 set_bit(ARMV8_PMU_CYCLE_IDX, cpu_pmu->cntr_mask); in __armv8pmu_probe_pmu()
1296 set_bit(ARMV8_PMU_INSTR_IDX, cpu_pmu->cntr_mask); in __armv8pmu_probe_pmu()
1301 bitmap_from_arr32(cpu_pmu->pmceid_bitmap, in __armv8pmu_probe_pmu()
1307 bitmap_from_arr32(cpu_pmu->pmceid_ext_bitmap, in __armv8pmu_probe_pmu()
1312 cpu_pmu->reg_pmmir = read_pmmir(); in __armv8pmu_probe_pmu()
1314 cpu_pmu->reg_pmmir = 0; in __armv8pmu_probe_pmu()
1316 brbe_probe(cpu_pmu); in __armv8pmu_probe_pmu()
1336 static int armv8pmu_probe_pmu(struct arm_pmu *cpu_pmu) in armv8pmu_probe_pmu() argument
1339 .pmu = cpu_pmu, in armv8pmu_probe_pmu()
1344 ret = smp_call_function_any(&cpu_pmu->supported_cpus, in armv8pmu_probe_pmu()
1353 if (brbe_num_branch_records(cpu_pmu)) { in armv8pmu_probe_pmu()
1354 ret = branch_records_alloc(cpu_pmu); in armv8pmu_probe_pmu()
1397 static int armv8_pmu_init(struct arm_pmu *cpu_pmu, char *name, in armv8_pmu_init() argument
1400 int ret = armv8pmu_probe_pmu(cpu_pmu); in armv8_pmu_init()
1404 cpu_pmu->handle_irq = armv8pmu_handle_irq; in armv8_pmu_init()
1405 cpu_pmu->enable = armv8pmu_enable_event; in armv8_pmu_init()
1406 cpu_pmu->disable = armv8pmu_disable_event; in armv8_pmu_init()
1407 cpu_pmu->read_counter = armv8pmu_read_counter; in armv8_pmu_init()
1408 cpu_pmu->write_counter = armv8pmu_write_counter; in armv8_pmu_init()
1409 cpu_pmu->get_event_idx = armv8pmu_get_event_idx; in armv8_pmu_init()
1410 cpu_pmu->clear_event_idx = armv8pmu_clear_event_idx; in armv8_pmu_init()
1411 cpu_pmu->start = armv8pmu_start; in armv8_pmu_init()
1412 cpu_pmu->stop = armv8pmu_stop; in armv8_pmu_init()
1413 cpu_pmu->reset = armv8pmu_reset; in armv8_pmu_init()
1414 cpu_pmu->set_event_filter = armv8pmu_set_event_filter; in armv8_pmu_init()
1416 cpu_pmu->pmu.event_idx = armv8pmu_user_event_idx; in armv8_pmu_init()
1417 if (brbe_num_branch_records(cpu_pmu)) in armv8_pmu_init()
1418 cpu_pmu->pmu.sched_task = armv8pmu_sched_task; in armv8_pmu_init()
1420 cpu_pmu->name = name; in armv8_pmu_init()
1421 cpu_pmu->map_event = map_event; in armv8_pmu_init()
1422 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &armv8_pmuv3_events_attr_group; in armv8_pmu_init()
1423 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = &armv8_pmuv3_format_attr_group; in armv8_pmu_init()
1424 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_CAPS] = &armv8_pmuv3_caps_attr_group; in armv8_pmu_init()
1430 static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
1432 return armv8_pmu_init(cpu_pmu, #name, armv8_pmuv3_map_event); \
1436 static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
1438 return armv8_pmu_init(cpu_pmu, #name, map_event); \