Having recently dipped into the xgene-msi driver to bring it to use the MSI-parent concept, I have realised that some of it was slightly sub-par (read: downright broken). The driver is playing horrible tricks behind the core code, missing proper affinity management, is terribly over-designed for no good reason, and despite what MAINTAINERS says, completely unmaintained. This series is an attempt to fix most of the issues, and effectively results more or less in a full rewrite of the driver, removing a lot of cruft and fixing the interactions with the PCI host driver in the process (there really isn't any reason to rely on initcall ordering anymore). I've stopped short of repainting the MAINTAINERS file, but given how reactive Toan Le has been, maybe that's on the cards. Patches on top of -rc3, tested on a Mustang board. Marc Zyngier (12): genirq: Teach handle_simple_irq() to resend an in-progress interrupt PCI: xgene: Defer probing if the MSI widget driver hasn't probed yet PCI: xgene: Drop useless conditional compilation PCI: xgene: Drop XGENE_PCIE_IP_VER_UNKN PCI: xgene-msi: Make per-CPU interrupt setup robust PCI: xgene-msi: Drop superfluous fields from xgene_msi structure PCI: xgene-msi: Use device-managed memory allocations PCI: xgene-msi: Get rid of intermediate tracking structure PCI: xgene-msi: Sanitise MSI allocation and affinity setting PCI: xgene-msi: Resend an MSI racing with itself on a different CPU PCI: xgene-msi: Probe as a standard platform driver PCI: xgene-msi: Restructure handler setup/teardown drivers/pci/controller/pci-xgene-msi.c | 418 +++++++++---------------- drivers/pci/controller/pci-xgene.c | 33 +- kernel/irq/chip.c | 8 +- 3 files changed, 176 insertions(+), 283 deletions(-) -- 2.39.2