PCI/MSI: Reject multi-MSI early
authorThomas Gleixner <tglx@linutronix.de>
Fri, 11 Nov 2022 13:55:09 +0000 (14:55 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 17 Nov 2022 14:15:22 +0000 (15:15 +0100)
commitd2a463b297415ca6dd4d60bb1c867dd7c931587b
treea6a2c0b1123cd0e5934f46a31c56301cef9134a2
parentbab65e48cb064d67b488efb6888c06fd977a8245
PCI/MSI: Reject multi-MSI early

When hierarchical MSI interrupt domains are enabled then there is no point
to do tons of work and detect the missing support for multi-MSI late in the
allocation path.

Just query the domain feature flags right away. The query function is going
to be used for other purposes later and has a mode argument which influences
the result:

  ALLOW_LEGACY returns true when:
     - there is no irq domain attached (legacy support)
     - there is a irq domain attached which has the feature flag set

  DENY_LEGACY returns only true when:
     - there is a irq domain attached which has the feature flag set

This allows to use the function universally without ifdeffery in the
calling code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/20221111122015.574339988@linutronix.de
drivers/pci/msi/irqdomain.c
drivers/pci/msi/msi.c
drivers/pci/msi/msi.h