Hi! This is version 3 of the series to convert ARM MSI handling over to per device MSI domains. Version 2 can be found here: https://lore.kernel.org/lkml/20221121135653.208611233@xxxxxxxxxxxxx/ The conversion aims to replace the existing platform MSI mechanism and enables ARM to support the future PCI/IMS mechanism. The infrastructure to replace the platform MSI mechanism is already upstream and in use by RISC-V and has been tested on various ARM platforms during the V2 development. Changes vs. V2: - Replace the static key to control [un]masking the parent chip from pci_msi_[un]mask() with a domain feature flag so it can be decided per MSI parent domain - Marc - Forwarded to v6.10-rc3 - Minor cleanups and polishing according to review feedback The series is only lightly tested due to lack of hardware, so we ask the people who have access to affected machines to help with testing. The series is also available from git: git://git.kernel.org/pub/scm/linux/kernel/git/anna-maria/linux-devel.git devmsi-arm Thanks, Shiva Anna-Maria Behnsen (2): irqdomain: Fix formatting irq_find_matching_fwspec() kerneldoc comment irqchip/imx-mu-msi: Fix codingstyle in imx_mu_msi_domains_init() Shivamurthy Shastri (1): PCI/MSI: Provide MSI_FLAG_PCI_MSI_MASK_PARENT Thomas Gleixner (21): irqchip: Provide irq-msi-lib irqchip/gic-v3-its: Provide MSI parent infrastructure irqchip/irq-msi-lib: Prepare for PCI MSI/MSIX irqchip/gic-v3-its: Provide MSI parent for PCI/MSI[-X] irqchip/irq-msi-lib: Prepare for DEVICE MSI to replace platform MSI irqchip/mbigen: Prepare for real per device MSI irqchip/irq-msi-lib: Prepare for DOMAIN_BUS_WIRED_TO_MSI irqchip/gic-v3-its: Switch platform MSI to MSI parent irqchip/mbigen: Remove platform_msi_create_device_domain() fallback genirq/msi: Remove platform_msi_create_device_domain() genirq/gic-v3-mbi: Remove unused wired MSI mechanics genirq/gic-v3-mbi: Switch to MSI parent irqchip/gic-v2m: Switch to device MSI irqchip/imx-mu-msi: Switch to MSI parent irqchip/irq-mvebu-icu: Prepare for real per device MSI irqchip/mvebu-gicp: Switch to MSI parent irqchip/mvebu-odmi: Switch to parent MSI irqchip/irq-mvebu-sei: Switch to MSI parent irqchip/irq-mvebu-icu: Remove platform MSI leftovers genirq/msi: Remove platform MSI leftovers genirq/msi: Move msi_device_data to core drivers/base/platform-msi.c | 350 +----------------- drivers/irqchip/Kconfig | 8 + drivers/irqchip/Makefile | 4 +- drivers/irqchip/irq-gic-common.h | 3 + drivers/irqchip/irq-gic-v2m.c | 80 ++-- drivers/irqchip/irq-gic-v3-its-msi-parent.c | 210 +++++++++++ drivers/irqchip/irq-gic-v3-its-pci-msi.c | 202 ---------- drivers/irqchip/irq-gic-v3-its-platform-msi.c | 163 -------- drivers/irqchip/irq-gic-v3-its.c | 5 + drivers/irqchip/irq-gic-v3-mbi.c | 142 ++----- drivers/irqchip/irq-imx-mu-msi.c | 55 ++- drivers/irqchip/irq-mbigen.c | 96 ++--- drivers/irqchip/irq-msi-lib.c | 135 +++++++ drivers/irqchip/irq-msi-lib.h | 27 ++ drivers/irqchip/irq-mvebu-gicp.c | 45 +-- drivers/irqchip/irq-mvebu-icu.c | 275 ++++++-------- drivers/irqchip/irq-mvebu-odmi.c | 38 +- drivers/irqchip/irq-mvebu-sei.c | 53 ++- drivers/pci/msi/irqdomain.c | 21 ++ include/linux/msi.h | 52 +-- kernel/irq/irqdomain.c | 3 +- kernel/irq/msi.c | 95 +---- 22 files changed, 734 insertions(+), 1328 deletions(-) create mode 100644 drivers/irqchip/irq-gic-v3-its-msi-parent.c delete mode 100644 drivers/irqchip/irq-gic-v3-its-pci-msi.c delete mode 100644 drivers/irqchip/irq-gic-v3-its-platform-msi.c create mode 100644 drivers/irqchip/irq-msi-lib.c create mode 100644 drivers/irqchip/irq-msi-lib.h -- 2.34.1