[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1750860131.git.namcao@linutronix.de>
Date: Thu, 26 Jun 2025 16:48:57 +0200
From: Nam Cao <namcao@...utronix.de>
To: Marc Zyngier <maz@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Antoine Tenart <atenart@...nel.org>,
Andrew Lunn <andrew@...n.ch>,
Gregory Clement <gregory.clement@...tlin.com>,
Sebastian Hesselbarth <sebastian.hesselbarth@...il.com>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
Huacai Chen <chenhuacai@...nel.org>,
Jiaxun Yang <jiaxun.yang@...goat.com>,
Anup Patel <anup@...infault.org>,
Paul Walmsley <paul.walmsley@...ive.com>,
Palmer Dabbelt <palmer@...belt.com>,
Albert Ou <aou@...s.berkeley.edu>,
Alexandre Ghiti <alex@...ti.fr>,
linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
imx@...ts.linux.dev,
linux-mips@...r.kernel.org,
linux-riscv@...ts.infradead.org
Cc: Nam Cao <namcao@...utronix.de>
Subject: [PATCH 00/12] irqchip: MSI cleanup and conversion to MSI parent domain
The initial implementation of PCI/MSI interrupt domains in the hierarchical
interrupt domain model used a shortcut by providing a global PCI/MSI
domain.
This works because the PCI/MSI[X] hardware is standardized and uniform, but
it violates the basic design principle of hierarchical interrupt domains:
Each hardware block involved in the interrupt delivery chain should have a
separate interrupt domain.
For PCI/MSI[X], the interrupt controller is per PCI device and not a global
made-up entity.
Unsurprisingly, the shortcut turned out to have downsides as it does not
allow dynamic allocation of interrupt vectors after initialization and it
prevents supporting IMS on PCI. For further details, see:
https://lore.kernel.org/lkml/20221111120501.026511281@linutronix.de/
The solution is implementing per device MSI domains, this means the
entities which provide global PCI/MSI domain so far have to implement MSI
parent domain functionality instead.
Aside from that, the creation of MSI parent domains has been simplified by
new helper functions, which are not yet used by all drivers.
This series addresses this by:
- Converting the remaining global PCI/MSI domain providers to MSI parent
domains
- Converting the existing MSI parent domain implementations to the
simplified setup function
drivers/irqchip/Kconfig | 3 +
drivers/irqchip/irq-alpine-msi.c | 155 ++++++++-------------
drivers/irqchip/irq-armada-370-xp.c | 48 ++++---
drivers/irqchip/irq-bcm2712-mip.c | 20 +--
drivers/irqchip/irq-imx-mu-msi.c | 14 +-
drivers/irqchip/irq-loongson-pch-msi.c | 25 ++--
drivers/irqchip/irq-ls-scfg-msi.c | 49 +++----
drivers/irqchip/irq-riscv-imsic-platform.c | 12 +-
drivers/irqchip/irq-sg2042-msi.c | 20 ++-
include/linux/irqdomain.h | 2 +
include/linux/msi.h | 2 +
kernel/irq/irqdomain.c | 1 +
kernel/irq/msi.c | 3 +-
13 files changed, 155 insertions(+), 199 deletions(-)
--
2.39.5
Powered by blists - more mailing lists