arch/x86/hyperv/irqdomain.c | 111 ++++++++++++++++++++++++------------ drivers/hv/Kconfig | 1 + 2 files changed, 77 insertions(+), 35 deletions(-)
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. This series converts the x86 hyperv driver to implement MSI parent domain. Changes in v3: - Drop the merged patch - Rebase onto hyperv-fixes arch/x86/hyperv/irqdomain.c | 111 ++++++++++++++++++++++++------------ drivers/hv/Kconfig | 1 + 2 files changed, 77 insertions(+), 35 deletions(-) -- 2.49.0
Nuno, can you please take a look at this patch? On Fri, Jul 18, 2025 at 09:57:49PM +0200, Nam Cao wrote: > 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. > > This series converts the x86 hyperv driver to implement MSI parent domain. > > Changes in v3: > > - Drop the merged patch > > - Rebase onto hyperv-fixes > > arch/x86/hyperv/irqdomain.c | 111 ++++++++++++++++++++++++------------ > drivers/hv/Kconfig | 1 + > 2 files changed, 77 insertions(+), 35 deletions(-) > > -- > 2.49.0 >
© 2016 - 2025 Red Hat, Inc.