[patch 0/8] genirq, perf: Cleanup the abuse of irq_set_affinity_hint()

Mark Rutland mark.rutland at arm.com
Tue May 18 03:11:17 PDT 2021


Hi Thomas,

On Tue, May 18, 2021 at 11:17:25AM +0200, Thomas Gleixner wrote:
> The modular PMU drivers use irq_set_affinity_hint() to set the affinity
> for the PMU interrupts, which relies on the undocumented side effect that
> this function actually sets the affinity under the hood.
> 
> Setting an hint is clearly not a guarantee and for these PMU interrupts an
> affinity hint, which is supposed to guide userspace for setting affinity,
> is beyond pointless, because the affinity of these interrupts cannot be
> modified from user space.
> 
> Aside of that the error checks are bogus because the only error which is
> returned from irq_set_affinity_hint() is when there is no irq descriptor
> for the interrupt number, but not when the affinity set fails. That's on
> purpose because the hint can point to an offline CPU.
> 
> Sigh, if people would at least talk if something is missing...
> 
> Clean up the mess by exposing irq_set_affinity() and converting the drivers
> over to that.

Sorry about this, and thanks for cleaning this up.

For the series:

Acked-by: Mark Rutland <mark.rutland at arm.com>

Mark.

> 
> Thanks,
> 
> 	tglx
> ---
>  drivers/perf/arm-ccn.c                        |    6 +---
>  drivers/perf/arm-cmn.c                        |    9 +-----
>  drivers/perf/arm_dmc620_pmu.c                 |    5 +--
>  drivers/perf/arm_dsu_pmu.c                    |    8 +----
>  drivers/perf/arm_smmuv3_pmu.c                 |   10 ++-----
>  drivers/perf/fsl_imx8_ddr_perf.c              |    5 +--
>  drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c |    3 --
>  drivers/perf/hisilicon/hisi_uncore_hha_pmu.c  |    3 --
>  drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c  |    3 --
>  drivers/perf/hisilicon/hisi_uncore_pa_pmu.c   |    3 --
>  drivers/perf/hisilicon/hisi_uncore_pmu.c      |    4 +-
>  drivers/perf/hisilicon/hisi_uncore_sllc_pmu.c |    3 --
>  include/linux/interrupt.h                     |   35 +-------------------------
>  kernel/irq/manage.c                           |   33 +++++++++++++++++++++++-
>  14 files changed, 49 insertions(+), 81 deletions(-)
> 
> 



More information about the linux-arm-kernel mailing list