[PATCH v3 08/26] perf: arm_pmu: Convert to new IRQ affinity retrieval API

Jinjie Ruan ruanjinjie at huawei.com
Thu Oct 9 20:39:13 PDT 2025



On 2025/9/22 16:28, Marc Zyngier wrote:
> 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 at kernel.org>
> ---
>  drivers/perf/arm_pmu_platform.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
> index 118170a5cedef..9c0494d8a867a 100644
> --- a/drivers/perf/arm_pmu_platform.c
> +++ b/drivers/perf/arm_pmu_platform.c
> @@ -42,14 +42,13 @@ static int probe_current_pmu(struct arm_pmu *pmu,
>  	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;
> +	int cpu;
>  
> -	ret = irq_get_percpu_devid_partition(irq, &pmu->supported_cpus);
> -	if (ret)
> -		return ret;
> +	cpumask_copy(&pmu->supported_cpus, affinity);
>  
>  	for_each_cpu(cpu, &pmu->supported_cpus)
>  		per_cpu(hw_events->irq, cpu) = irq;
> @@ -115,9 +114,12 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
>  	}
>  
>  	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))
> -			return pmu_parse_percpu_irq(pmu, irq);
> +			return pmu_parse_percpu_irq(pmu, irq, affinity);
>  	}
>  

Reviewed-by: Jinjie Ruan <ruanjinjie at huawei.com>

>  	if (nr_cpu_ids != 1 && !pmu_has_irq_affinity(dev->of_node))



More information about the linux-arm-kernel mailing list