Lines Matching refs:pmu

139 struct intel_uncore_box *uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu)  in uncore_pmu_to_box()  argument
147 return dieid < uncore_max_dies() ? pmu->boxes[dieid] : NULL; in uncore_pmu_to_box()
381 return &box->pmu->pmu == event->pmu; in is_box_event()
391 max_count = box->pmu->type->num_counters; in uncore_collect_events()
392 if (box->pmu->type->fixed_ctl) in uncore_collect_events()
425 struct intel_uncore_type *type = box->pmu->type; in uncore_get_event_constraint()
450 if (box->pmu->type->ops->put_constraint) in uncore_put_event_constraint()
451 box->pmu->type->ops->put_constraint(box, event); in uncore_put_event_constraint()
689 static int uncore_validate_group(struct intel_uncore_pmu *pmu, in uncore_validate_group() argument
700 fake_box = uncore_alloc_box(pmu->type, NUMA_NO_NODE); in uncore_validate_group()
704 fake_box->pmu = pmu; in uncore_validate_group()
730 struct intel_uncore_pmu *pmu; in uncore_pmu_event_init() local
735 if (event->attr.type != event->pmu->type) in uncore_pmu_event_init()
738 pmu = uncore_event_to_pmu(event); in uncore_pmu_event_init()
740 if (!pmu->registered) in uncore_pmu_event_init()
753 box = uncore_pmu_to_box(pmu, event->cpu); in uncore_pmu_event_init()
768 if (!pmu->type->fixed_ctl) in uncore_pmu_event_init()
774 if (pmu->type->single_fixed && pmu->pmu_idx > 0) in uncore_pmu_event_init()
793 (pmu->type->event_mask | ((u64)pmu->type->event_mask_ext << 32)); in uncore_pmu_event_init()
794 if (pmu->type->ops->hw_config) { in uncore_pmu_event_init()
795 ret = pmu->type->ops->hw_config(box, event); in uncore_pmu_event_init()
802 ret = uncore_validate_group(pmu, event); in uncore_pmu_event_init()
809 static void uncore_pmu_enable(struct pmu *pmu) in uncore_pmu_enable() argument
814 uncore_pmu = container_of(pmu, struct intel_uncore_pmu, pmu); in uncore_pmu_enable()
824 static void uncore_pmu_disable(struct pmu *pmu) in uncore_pmu_disable() argument
829 uncore_pmu = container_of(pmu, struct intel_uncore_pmu, pmu); in uncore_pmu_disable()
842 struct intel_uncore_pmu *pmu = container_of(dev_get_drvdata(dev), struct intel_uncore_pmu, pmu); in uncore_get_attr_cpumask() local
844 return cpumap_print_to_pagebuf(true, buf, &pmu->cpu_mask); in uncore_get_attr_cpumask()
859 struct intel_uncore_pmu *pmu) in uncore_get_box_id() argument
862 return intel_uncore_find_discovery_unit_id(type->boxes, -1, pmu->pmu_idx); in uncore_get_box_id()
864 return pmu->pmu_idx; in uncore_get_box_id()
867 void uncore_get_alias_name(char *pmu_name, struct intel_uncore_pmu *pmu) in uncore_get_alias_name() argument
869 struct intel_uncore_type *type = pmu->type; in uncore_get_alias_name()
875 type->type_id, uncore_get_box_id(type, pmu)); in uncore_get_alias_name()
879 static void uncore_get_pmu_name(struct intel_uncore_pmu *pmu) in uncore_get_pmu_name() argument
881 struct intel_uncore_type *type = pmu->type; in uncore_get_pmu_name()
888 uncore_get_alias_name(pmu->name, pmu); in uncore_get_pmu_name()
894 sprintf(pmu->name, "uncore_%s", type->name); in uncore_get_pmu_name()
896 sprintf(pmu->name, "uncore"); in uncore_get_pmu_name()
901 sprintf(pmu->name, "uncore_%s_%d", type->name, in uncore_get_pmu_name()
902 uncore_get_box_id(type, pmu)); in uncore_get_pmu_name()
906 static int uncore_pmu_register(struct intel_uncore_pmu *pmu) in uncore_pmu_register() argument
910 if (!pmu->type->pmu) { in uncore_pmu_register()
911 pmu->pmu = (struct pmu) { in uncore_pmu_register()
912 .attr_groups = pmu->type->attr_groups, in uncore_pmu_register()
924 .attr_update = pmu->type->attr_update, in uncore_pmu_register()
927 pmu->pmu = *pmu->type->pmu; in uncore_pmu_register()
928 pmu->pmu.attr_groups = pmu->type->attr_groups; in uncore_pmu_register()
929 pmu->pmu.attr_update = pmu->type->attr_update; in uncore_pmu_register()
932 uncore_get_pmu_name(pmu); in uncore_pmu_register()
934 ret = perf_pmu_register(&pmu->pmu, pmu->name, -1); in uncore_pmu_register()
936 pmu->registered = true; in uncore_pmu_register()
940 static void uncore_pmu_unregister(struct intel_uncore_pmu *pmu) in uncore_pmu_unregister() argument
942 if (!pmu->registered) in uncore_pmu_unregister()
944 perf_pmu_unregister(&pmu->pmu); in uncore_pmu_unregister()
945 pmu->registered = false; in uncore_pmu_unregister()
948 static void uncore_free_boxes(struct intel_uncore_pmu *pmu) in uncore_free_boxes() argument
953 kfree(pmu->boxes[die]); in uncore_free_boxes()
954 kfree(pmu->boxes); in uncore_free_boxes()
959 struct intel_uncore_pmu *pmu = type->pmus; in uncore_type_exit() local
968 if (pmu) { in uncore_type_exit()
969 for (i = 0; i < type->num_boxes; i++, pmu++) { in uncore_type_exit()
970 uncore_pmu_unregister(pmu); in uncore_type_exit()
971 uncore_free_boxes(pmu); in uncore_type_exit()
1107 struct intel_uncore_pmu *pmu = NULL; in uncore_pci_find_dev_pmu() local
1123 pmu = &type->pmus[UNCORE_PCI_DEV_IDX(data)]; in uncore_pci_find_dev_pmu()
1129 return pmu; in uncore_pci_find_dev_pmu()
1141 struct intel_uncore_pmu *pmu, in uncore_pci_pmu_register() argument
1147 if (WARN_ON_ONCE(pmu->boxes[die] != NULL)) in uncore_pci_pmu_register()
1157 box->pmu = pmu; in uncore_pci_pmu_register()
1160 pmu->boxes[die] = box; in uncore_pci_pmu_register()
1161 if (atomic_inc_return(&pmu->activeboxes) > 1) in uncore_pci_pmu_register()
1165 ret = uncore_pmu_register(pmu); in uncore_pci_pmu_register()
1167 pmu->boxes[die] = NULL; in uncore_pci_pmu_register()
1180 struct intel_uncore_pmu *pmu = NULL; in uncore_pci_probe() local
1205 pmu = uncore_pci_find_dev_pmu(pdev, pci_drv->id_table); in uncore_pci_probe()
1206 if (pmu == NULL) in uncore_pci_probe()
1213 pmu = &type->pmus[UNCORE_PCI_DEV_IDX(id->driver_data)]; in uncore_pci_probe()
1216 ret = uncore_pci_pmu_register(pdev, type, pmu, die); in uncore_pci_probe()
1218 pci_set_drvdata(pdev, pmu->boxes[die]); in uncore_pci_probe()
1228 static void uncore_pci_pmu_unregister(struct intel_uncore_pmu *pmu, int die) in uncore_pci_pmu_unregister() argument
1230 struct intel_uncore_box *box = pmu->boxes[die]; in uncore_pci_pmu_unregister()
1232 pmu->boxes[die] = NULL; in uncore_pci_pmu_unregister()
1233 if (atomic_dec_return(&pmu->activeboxes) == 0) in uncore_pci_pmu_unregister()
1234 uncore_pmu_unregister(pmu); in uncore_pci_pmu_unregister()
1242 struct intel_uncore_pmu *pmu; in uncore_pci_remove() local
1260 pmu = box->pmu; in uncore_pci_remove()
1264 uncore_pci_pmu_unregister(pmu, die); in uncore_pci_remove()
1273 struct intel_uncore_pmu *pmu; in uncore_bus_notify() local
1280 pmu = uncore_pci_find_dev_pmu(pdev, ids); in uncore_bus_notify()
1281 if (!pmu) in uncore_bus_notify()
1287 uncore_pci_pmu_unregister(pmu, die); in uncore_bus_notify()
1307 struct intel_uncore_pmu *pmu; in uncore_pci_sub_driver_init() local
1327 pmu = &type->pmus[UNCORE_PCI_DEV_IDX(ids->driver_data)]; in uncore_pci_sub_driver_init()
1328 if (!pmu) in uncore_pci_sub_driver_init()
1334 if (!uncore_pci_pmu_register(pci_sub_dev, type, pmu, in uncore_pci_sub_driver_init()
1364 struct intel_uncore_pmu *pmu; in uncore_pci_pmus_register() local
1379 pmu = &type->pmus[unit->pmu_idx]; in uncore_pci_pmus_register()
1380 uncore_pci_pmu_register(pdev, type, pmu, unit->die); in uncore_pci_pmus_register()
1460 struct intel_uncore_pmu *pmu = type->pmus; in uncore_change_type_ctx() local
1465 for (i = 0; i < type->num_boxes; i++, pmu++) { in uncore_change_type_ctx()
1466 box = pmu->boxes[die]; in uncore_change_type_ctx()
1472 if (uncore_die_has_box(type, die, pmu->pmu_idx)) { in uncore_change_type_ctx()
1474 cpumask_set_cpu(new_cpu, &pmu->cpu_mask); in uncore_change_type_ctx()
1481 cpumask_clear_cpu(old_cpu, &pmu->cpu_mask); in uncore_change_type_ctx()
1485 if (!uncore_die_has_box(type, die, pmu->pmu_idx)) in uncore_change_type_ctx()
1488 perf_pmu_migrate_context(&pmu->pmu, old_cpu, new_cpu); in uncore_change_type_ctx()
1490 cpumask_set_cpu(new_cpu, &pmu->cpu_mask); in uncore_change_type_ctx()
1504 struct intel_uncore_pmu *pmu; in uncore_box_unref() local
1510 pmu = type->pmus; in uncore_box_unref()
1511 for (i = 0; i < type->num_boxes; i++, pmu++) { in uncore_box_unref()
1512 box = pmu->boxes[id]; in uncore_box_unref()
1552 struct intel_uncore_pmu *pmu; in allocate_boxes() local
1559 pmu = type->pmus; in allocate_boxes()
1560 for (i = 0; i < type->num_boxes; i++, pmu++) { in allocate_boxes()
1561 if (pmu->boxes[die]) in allocate_boxes()
1566 box->pmu = pmu; in allocate_boxes()
1574 box->pmu->boxes[die] = box; in allocate_boxes()
1590 struct intel_uncore_pmu *pmu; in uncore_box_ref() local
1600 pmu = type->pmus; in uncore_box_ref()
1601 for (i = 0; i < type->num_boxes; i++, pmu++) { in uncore_box_ref()
1602 box = pmu->boxes[id]; in uncore_box_ref()