Lines Matching full:pmu

31 	 * Per the ACPI spec, the MADT cannot describe a PMU that doesn't  in arm_pmu_acpi_register_irq()
87 * For lack of a better place, hook the normal PMU MADT walk
149 pr_warn("Unable to parse ACPI PMU IRQ for CPU%d: %d\n", in arm_pmu_acpi_parse_irqs()
153 pr_warn("No ACPI PMU IRQ for CPU%d\n", cpu); in arm_pmu_acpi_parse_irqs()
193 struct arm_pmu *pmu; in arm_pmu_acpi_find_alloc_pmu() local
197 pmu = per_cpu(probed_pmus, cpu); in arm_pmu_acpi_find_alloc_pmu()
198 if (!pmu || pmu->acpi_cpuid != cpuid) in arm_pmu_acpi_find_alloc_pmu()
201 return pmu; in arm_pmu_acpi_find_alloc_pmu()
204 pmu = armpmu_alloc_atomic(); in arm_pmu_acpi_find_alloc_pmu()
205 if (!pmu) { in arm_pmu_acpi_find_alloc_pmu()
206 pr_warn("Unable to allocate PMU for CPU%d\n", in arm_pmu_acpi_find_alloc_pmu()
211 pmu->acpi_cpuid = cpuid; in arm_pmu_acpi_find_alloc_pmu()
213 return pmu; in arm_pmu_acpi_find_alloc_pmu()
218 * the PMU (e.g. we don't have mismatched PPIs).
220 static bool pmu_irq_matches(struct arm_pmu *pmu, int irq) in pmu_irq_matches() argument
222 struct pmu_hw_events __percpu *hw_events = pmu->hw_events; in pmu_irq_matches()
228 for_each_cpu(cpu, &pmu->supported_cpus) { in pmu_irq_matches()
256 struct arm_pmu *pmu; in arm_pmu_acpi_cpu_starting() local
266 pmu = arm_pmu_acpi_find_alloc_pmu(); in arm_pmu_acpi_cpu_starting()
267 if (!pmu) in arm_pmu_acpi_cpu_starting()
270 per_cpu(probed_pmus, cpu) = pmu; in arm_pmu_acpi_cpu_starting()
272 if (pmu_irq_matches(pmu, irq)) { in arm_pmu_acpi_cpu_starting()
273 hw_events = pmu->hw_events; in arm_pmu_acpi_cpu_starting()
277 cpumask_set_cpu(cpu, &pmu->supported_cpus); in arm_pmu_acpi_cpu_starting()
280 * Ideally, we'd probe the PMU here when we find the first matching in arm_pmu_acpi_cpu_starting()
302 * without tying this too deeply into the "real" PMU driver. in arm_pmu_acpi_probe()
305 * of a PMU's CPUs to be online at probe time. in arm_pmu_acpi_probe()
308 struct arm_pmu *pmu = per_cpu(probed_pmus, cpu); in arm_pmu_acpi_probe() local
311 if (!pmu || pmu->name) in arm_pmu_acpi_probe()
314 ret = init_fn(pmu); in arm_pmu_acpi_probe()
316 /* PMU not handled by this driver, or not present */ in arm_pmu_acpi_probe()
319 pr_warn("Unable to initialise PMU for CPU%d\n", cpu); in arm_pmu_acpi_probe()
323 base_name = pmu->name; in arm_pmu_acpi_probe()
324 pmu->name = kasprintf(GFP_KERNEL, "%s_%d", base_name, pmu_idx++); in arm_pmu_acpi_probe()
325 if (!pmu->name) { in arm_pmu_acpi_probe()
326 pr_warn("Unable to allocate PMU name for CPU%d\n", cpu); in arm_pmu_acpi_probe()
330 ret = armpmu_register(pmu); in arm_pmu_acpi_probe()
332 pr_warn("Failed to register PMU for CPU%d\n", cpu); in arm_pmu_acpi_probe()
333 kfree(pmu->name); in arm_pmu_acpi_probe()