Messages in this thread | | | From | Thomas Gleixner <> | Subject | [patch V2 00/40] genirq, irqchip: Convert ARM MSI handling to per device MSI domains | Date | Mon, 21 Nov 2022 15:39:28 +0100 (CET) |
| |
This builds on top of the per device MSI work which can be found here:
https://lore.kernel.org/all/20221121083657.157152924@linutronix.de
and is available from git:
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git devmsi-v2-part3
This series converts the ARM MSI handling, especially the platform MSI mechanics, to use per device MSI domains instead of the weird indirection through platform MSI domains.
This also takes a different and less convoluted approach to the 'wire to MSI' bridges by providing special MSI allocation/free functions which are invoked from irq_create_fwspec_mapping() and irq_dispose_mapping() which avoids the extra entry point msi_domain_populate_irqs() and its layering violations.
The series has been tested on various systems (Ampere, Hisilicon HIP05, ThunderX2, MVEBU MCBIN) but there is no full coverage yet.
Thanks to Marc, Mark and Robin for running this on their machines and aiding with decoding the initial wreckage. Special thanks go to Marc for patiently guiding me through the insanity of OF/ACPI related to this.
The series is also available from git:
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git devmsi-v2-arm
The work was done to validate that the design decisions for per device MSI domains and the related data structures are up to the task to handle the ARM oddities. The design held up, it was just necessary to extend some of the data structures to handle the ARM specifics in a sane way, but there was no fundamental shortcoming.
Thanks,
tglx --- b/drivers/base/platform-msi.c | 354 +++----------------------- b/drivers/dma/mv_xor_v2.c | 8 b/drivers/dma/qcom/hidma.c | 6 b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 5 b/drivers/irqchip/Kconfig | 8 b/drivers/irqchip/Makefile | 4 b/drivers/irqchip/irq-gic-common.h | 3 b/drivers/irqchip/irq-gic-msi-lib.c | 136 +++++++++ b/drivers/irqchip/irq-gic-msi-lib.h | 27 + b/drivers/irqchip/irq-gic-v2m.c | 93 ++---- b/drivers/irqchip/irq-gic-v3-its-msi-parent.c | 207 +++++++++++++++ b/drivers/irqchip/irq-gic-v3-its.c | 4 b/drivers/irqchip/irq-gic-v3-mbi.c | 137 ++-------- b/drivers/irqchip/irq-gic-v3.c | 6 b/drivers/irqchip/irq-imx-mu-msi.c | 53 +-- b/drivers/irqchip/irq-mbigen.c | 98 ++----- b/drivers/irqchip/irq-mvebu-gicp.c | 44 +-- b/drivers/irqchip/irq-mvebu-icu.c | 278 ++++++++------------ b/drivers/irqchip/irq-mvebu-odmi.c | 39 +- b/drivers/irqchip/irq-mvebu-sei.c | 52 +-- b/drivers/irqchip/irq-ti-sci-inta.c | 2 b/drivers/mailbox/bcm-flexrm-mailbox.c | 8 b/drivers/pci/msi/irqdomain.c | 30 ++ b/drivers/perf/arm_smmuv3_pmu.c | 4 b/include/linux/acpi_iort.h | 4 b/include/linux/irqdomain.h | 17 + b/include/linux/irqdomain_defs.h | 2 b/include/linux/msi.h | 81 +---- b/kernel/irq/irqdomain.c | 26 + b/kernel/irq/msi.c | 253 ++++++++++++------ drivers/irqchip/irq-gic-v3-its-pci-msi.c | 202 -------------- drivers/irqchip/irq-gic-v3-its-platform-msi.c | 163 ----------- 32 files changed, 1021 insertions(+), 1333 deletions(-)
| |