Lines Matching refs:cpu_pmu
36 static struct arm_pmu *cpu_pmu; variable
44 if (!cpu_pmu) in perf_pmu_name()
47 return cpu_pmu->name; in perf_pmu_name()
55 if (cpu_pmu != NULL) in perf_num_counters()
56 max_events = cpu_pmu->num_events; in perf_num_counters()
81 static void cpu_pmu_free_irq(struct arm_pmu *cpu_pmu) in cpu_pmu_free_irq() argument
84 struct platform_device *pmu_device = cpu_pmu->plat_device; in cpu_pmu_free_irq()
85 struct pmu_hw_events __percpu *hw_events = cpu_pmu->hw_events; in cpu_pmu_free_irq()
97 if (cpu_pmu->irq_affinity) in cpu_pmu_free_irq()
98 cpu = cpu_pmu->irq_affinity[i]; in cpu_pmu_free_irq()
100 if (!cpumask_test_and_clear_cpu(cpu, &cpu_pmu->active_irqs)) in cpu_pmu_free_irq()
109 static int cpu_pmu_request_irq(struct arm_pmu *cpu_pmu, irq_handler_t handler) in cpu_pmu_request_irq() argument
112 struct platform_device *pmu_device = cpu_pmu->plat_device; in cpu_pmu_request_irq()
113 struct pmu_hw_events __percpu *hw_events = cpu_pmu->hw_events; in cpu_pmu_request_irq()
143 if (cpu_pmu->irq_affinity) in cpu_pmu_request_irq()
144 cpu = cpu_pmu->irq_affinity[i]; in cpu_pmu_request_irq()
166 cpumask_set_cpu(cpu, &cpu_pmu->active_irqs); in cpu_pmu_request_irq()
195 static int cpu_pmu_init(struct arm_pmu *cpu_pmu) in cpu_pmu_init() argument
205 cpu_pmu->hotplug_nb.notifier_call = cpu_pmu_notify; in cpu_pmu_init()
206 err = register_cpu_notifier(&cpu_pmu->hotplug_nb); in cpu_pmu_init()
213 events->percpu_pmu = cpu_pmu; in cpu_pmu_init()
216 cpu_pmu->hw_events = cpu_hw_events; in cpu_pmu_init()
217 cpu_pmu->request_irq = cpu_pmu_request_irq; in cpu_pmu_init()
218 cpu_pmu->free_irq = cpu_pmu_free_irq; in cpu_pmu_init()
221 if (cpu_pmu->reset) in cpu_pmu_init()
222 on_each_cpu(cpu_pmu->reset, cpu_pmu, 1); in cpu_pmu_init()
225 if (!platform_get_irq(cpu_pmu->plat_device, 0)) in cpu_pmu_init()
226 cpu_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT; in cpu_pmu_init()
235 static void cpu_pmu_destroy(struct arm_pmu *cpu_pmu) in cpu_pmu_destroy() argument
237 unregister_cpu_notifier(&cpu_pmu->hotplug_nb); in cpu_pmu_destroy()
238 free_percpu(cpu_pmu->hw_events); in cpu_pmu_destroy()
345 cpu_pmu->irq_affinity = irqs; in of_pmu_irq_cfg()
360 if (cpu_pmu) { in cpu_pmu_device_probe()
371 cpu_pmu = pmu; in cpu_pmu_device_probe()
372 cpu_pmu->plat_device = pdev; in cpu_pmu_device_probe()
389 ret = cpu_pmu_init(cpu_pmu); in cpu_pmu_device_probe()
393 ret = armpmu_register(cpu_pmu, -1); in cpu_pmu_device_probe()
400 cpu_pmu_destroy(cpu_pmu); in cpu_pmu_device_probe()