[PATCH v2 00/25] genirq: Add support for percpu_devid IRQ affinity

Marc Zyngier posted 25 patches 2 weeks, 3 days ago
There is a newer version of this series
arch/arm64/kernel/smp.c                      |   2 +-
drivers/acpi/irq.c                           |  19 ++
drivers/base/platform.c                      |  60 ++++-
drivers/hwtracing/coresight/coresight-trbe.c |   9 +-
drivers/irqchip/Kconfig                      |   4 -
drivers/irqchip/Makefile                     |   1 -
drivers/irqchip/irq-apple-aic.c              |  56 +++--
drivers/irqchip/irq-gic-v3.c                 | 224 +++++------------
drivers/irqchip/irq-partition-percpu.c       | 241 -------------------
drivers/of/irq.c                             |  20 ++
drivers/perf/arm_pmu.c                       |  50 ++--
drivers/perf/arm_pmu_acpi.c                  |   2 +-
drivers/perf/arm_pmu_platform.c              |  20 +-
drivers/perf/arm_pmuv3.c                     |   2 +-
drivers/perf/arm_spe_pmu.c                   |  13 +-
include/linux/acpi.h                         |   7 +
include/linux/interrupt.h                    |  24 +-
include/linux/irq.h                          |   5 -
include/linux/irqchip/irq-partition-percpu.h |  53 ----
include/linux/irqdesc.h                      |   1 -
include/linux/irqdomain.h                    |  28 +++
include/linux/of_irq.h                       |   7 +
include/linux/perf/arm_pmu.h                 |   6 +-
include/linux/platform_device.h              |   2 +
kernel/irq/chip.c                            |  36 +--
kernel/irq/irqdesc.c                         |  24 +-
kernel/irq/irqdomain.c                       |  32 ++-
kernel/irq/manage.c                          | 124 +++++++---
28 files changed, 423 insertions(+), 649 deletions(-)
delete mode 100644 drivers/irqchip/irq-partition-percpu.c
delete mode 100644 include/linux/irqchip/irq-partition-percpu.h
[PATCH v2 00/25] genirq: Add support for percpu_devid IRQ affinity
Posted by Marc Zyngier 2 weeks, 3 days ago
This is the second version of this series, originally posted at [1],
which aims at allowing percpu_devid interrupt requests on the basis of
an affinity mask. See the original submission for the details of why
this is a desirable outcome.

From v1, we have a number of changes, both functional and cosmetic,
but the fundamentals are pretty much the same (change log below), with
an even more appealing diffstat.

Thanks to Will, Thomas and Raphael for their constructive review
comments.

FWIW, I've pushed a branch at [2].

* From v1 [1]:

  - Fixed NMI handling by getting rid of the NMI-specific flow
    handler, which was pretty useless anyway (Will)

  - As a result, killed a metric buttload worth of GICv3 code

  - Moved irq_fwspec out of irq_fwspec_info, and passed it as a
    parameter to irq_get_fwspec_info(), renamed from irq_get_info(),
    and applied some generous sanitisation of the structure (Thomas)

  - Dropped the rather useless fwspec validity flag (Thomas)

  - Rejigged the PMU per-CPU handling to better deal with the DT/ACPI
    differences, and drop some now useless patches (Will)

  - Plenty of cosmetic rework (Raphael, Thomas)

[1] https://lore.kernel.org/r/20250908163127.2462948-1-maz@kernel.org
[2] git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git irq/ppi-affinity

Marc Zyngier (24):
  irqdomain: Add firmware info reporting interface
  ACPI: irq: Add IRQ affinity reporting interface
  of/irq: Add IRQ affinity reporting interface
  platform: Add firmware-agnostic irq and affinity retrieval interface
  irqchip/gic-v3: Add FW info retrieval support
  irqchip/apple-aic: Add FW info retrieval support
  coresight: trbe: Convert to new IRQ affinity retrieval API
  perf: arm_pmu: Convert to new IRQ affinity retrieval API
  perf: arm_spe_pmu: Convert to new IRQ affinity retrieval API
  irqchip/gic-v3: Switch high priority PPIs over to
    handle_percpu_devid_irq()
  genirq: Kill handle_percpu_devid_fasteoi_nmi()
  genirq: Merge irqaction::{dev_id,percpu_dev_id}
  genirq: Factor-in percpu irqaction creation
  genirq: Add affinity to percpu_devid interrupt requests
  genirq: Update request_percpu_nmi() to take an affinity
  genirq: Allow per-cpu interrupt sharing for non-overlapping affinities
  genirq: Add request_percpu_irq_affinity() helper
  perf: arm_spe_pmu: Request specific affinities for percpu IRQ
  coresight: trbe: Request specific affinities for percpu IRQ
  irqchip/gic-v3: Drop support for custom PPI partitions
  irqchip/apple-aic: Drop support for custom PMU irq partitions
  irqchip: Kill irq-partition-percpu
  genirq: Kill irq_{g,s}et_percpu_devid_partition()
  perf: arm_pmu: Kill last use of per-CPU cpu_armpmu pointer

Will Deacon (1):
  perf: arm_pmu: Request specific affinities for percpu NMI/IRQ

 arch/arm64/kernel/smp.c                      |   2 +-
 drivers/acpi/irq.c                           |  19 ++
 drivers/base/platform.c                      |  60 ++++-
 drivers/hwtracing/coresight/coresight-trbe.c |   9 +-
 drivers/irqchip/Kconfig                      |   4 -
 drivers/irqchip/Makefile                     |   1 -
 drivers/irqchip/irq-apple-aic.c              |  56 +++--
 drivers/irqchip/irq-gic-v3.c                 | 224 +++++------------
 drivers/irqchip/irq-partition-percpu.c       | 241 -------------------
 drivers/of/irq.c                             |  20 ++
 drivers/perf/arm_pmu.c                       |  50 ++--
 drivers/perf/arm_pmu_acpi.c                  |   2 +-
 drivers/perf/arm_pmu_platform.c              |  20 +-
 drivers/perf/arm_pmuv3.c                     |   2 +-
 drivers/perf/arm_spe_pmu.c                   |  13 +-
 include/linux/acpi.h                         |   7 +
 include/linux/interrupt.h                    |  24 +-
 include/linux/irq.h                          |   5 -
 include/linux/irqchip/irq-partition-percpu.h |  53 ----
 include/linux/irqdesc.h                      |   1 -
 include/linux/irqdomain.h                    |  28 +++
 include/linux/of_irq.h                       |   7 +
 include/linux/perf/arm_pmu.h                 |   6 +-
 include/linux/platform_device.h              |   2 +
 kernel/irq/chip.c                            |  36 +--
 kernel/irq/irqdesc.c                         |  24 +-
 kernel/irq/irqdomain.c                       |  32 ++-
 kernel/irq/manage.c                          | 124 +++++++---
 28 files changed, 423 insertions(+), 649 deletions(-)
 delete mode 100644 drivers/irqchip/irq-partition-percpu.c
 delete mode 100644 include/linux/irqchip/irq-partition-percpu.h

-- 
2.39.2