mirror of https://github.com/torvalds/linux.git
perf: arm_pmu: Convert to the new interrupt affinity retrieval API
Now that the relevant interrupt controllers are equipped with a callback returning the affinity of per-CPU interrupts, switch the OF side of the ARM PMU driver over to this new method. Signed-off-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Will Deacon <will@kernel.org> Reviewed-by: Jinjie Ruan <ruanjinjie@huawei.com> Link: https://patch.msgid.link/20251020122944.3074811-9-maz@kernel.org
This commit is contained in:
parent
541454dd20
commit
663783e001
|
|
@ -42,14 +42,13 @@ static int probe_current_pmu(struct arm_pmu *pmu,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pmu_parse_percpu_irq(struct arm_pmu *pmu, int irq)
|
static int pmu_parse_percpu_irq(struct arm_pmu *pmu, int irq,
|
||||||
|
const struct cpumask *affinity)
|
||||||
{
|
{
|
||||||
int cpu, ret;
|
|
||||||
struct pmu_hw_events __percpu *hw_events = pmu->hw_events;
|
struct pmu_hw_events __percpu *hw_events = pmu->hw_events;
|
||||||
|
int cpu;
|
||||||
|
|
||||||
ret = irq_get_percpu_devid_partition(irq, &pmu->supported_cpus);
|
cpumask_copy(&pmu->supported_cpus, affinity);
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
for_each_cpu(cpu, &pmu->supported_cpus)
|
for_each_cpu(cpu, &pmu->supported_cpus)
|
||||||
per_cpu(hw_events->irq, cpu) = irq;
|
per_cpu(hw_events->irq, cpu) = irq;
|
||||||
|
|
@ -115,9 +114,12 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num_irqs == 1) {
|
if (num_irqs == 1) {
|
||||||
int irq = platform_get_irq(pdev, 0);
|
const struct cpumask *affinity;
|
||||||
|
int irq;
|
||||||
|
|
||||||
|
irq = platform_get_irq_affinity(pdev, 0, &affinity);
|
||||||
if ((irq > 0) && irq_is_percpu_devid(irq))
|
if ((irq > 0) && irq_is_percpu_devid(irq))
|
||||||
return pmu_parse_percpu_irq(pmu, irq);
|
return pmu_parse_percpu_irq(pmu, irq, affinity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nr_cpu_ids != 1 && !pmu_has_irq_affinity(dev->of_node))
|
if (nr_cpu_ids != 1 && !pmu_has_irq_affinity(dev->of_node))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue