[PATCH 00/13] PCI: MSI: Getting rid of msi_controller, and other cleanups

From: Marc Zyngier
Date: Thu Feb 25 2021 - 10:11:43 EST


The msi_controller data structure was the first attempt at treating
MSIs like any other interrupt. We replaced it a few years ago with the
generic MSI framework, but as it turns out, some older drivers are
still using it.

This series aims at converting these stragglers, drop msi_controller,
and fix some other nits such as having ways for a host bridge to
advertise whether it supports MSIs or not.

A few notes:

- The Tegra patch is the result of back and forth work with Thierry: I
wrote the initial patch, which didn't work (I didn't have any HW at
the time). Thierry made it work, and I subsequently fixed a couple
of bugs/cleanups. I'm responsible for the result, so don't blame
Thierry for any of it! FWIW, I'm now running a Jetson TX2 with its
root fs over NVME, and MSIs are OK.

- RCAR is totally untested, though Marek had a go at a previous
version. More testing required.

- The xilinx stuff is *really* untested. Paul, if you have a RISC-V
board that uses it, could you please give it a go? Michal, same
thing for the stuff you have at hand...

- hyperv: I don't have access to such hypervisor, and no way to test
it. Help welcomed.

- The patches dealing with the advertising of MSI handling are the
result of a long discussion that took place here[1]. I took the
liberty to rejig Thomas' initial patches, and add what I needed for
the MSI domain stuff. Again, blame me if something is wrong, and not
Thomas.

Feedback welcome.

M.

[1] https://lore.kernel.org/r/20201031140330.83768-1-linux@xxxxxxxxx

Marc Zyngier (11):
PCI: tegra: Convert to MSI domains
PCI: rcar: Convert to MSI domains
PCI: xilinx: Convert to MSI domains
PCI: hyperv: Drop msi_controller structure
PCI: MSI: Drop use of msi_controller from core code
PCI: MSI: Kill msi_controller structure
PCI: MSI: Kill default_teardown_msi_irqs()
PCI: MSI: Let PCI host bridges declare their reliance on MSI domains
PCI: Make pci_host_common_probe() declare its reliance on MSI domains
PCI: MSI: Document the various ways of ending up with NO_MSI
PCI: quirks: Refactor advertising of the NO_MSI flag

Thomas Gleixner (2):
PCI: MSI: Let PCI host bridges declare their lack of MSI handling
PCI: mediatek: Advertise lack of MSI handling

drivers/pci/controller/Kconfig | 4 +-
drivers/pci/controller/pci-host-common.c | 1 +
drivers/pci/controller/pci-hyperv.c | 4 -
drivers/pci/controller/pci-tegra.c | 343 ++++++++++++-----------
drivers/pci/controller/pcie-mediatek.c | 4 +
drivers/pci/controller/pcie-rcar-host.c | 342 +++++++++++-----------
drivers/pci/controller/pcie-xilinx.c | 238 +++++++---------
drivers/pci/msi.c | 46 +--
drivers/pci/probe.c | 4 +-
drivers/pci/quirks.c | 15 +-
include/linux/msi.h | 17 +-
include/linux/pci.h | 4 +-
12 files changed, 463 insertions(+), 559 deletions(-)

--
2.29.2