genirq/irqdomain: Provide IRQ_DOMAIN_FLAG_MSI_DEVICE
authorThomas Gleixner <tglx@linutronix.de>
Thu, 24 Nov 2022 23:24:17 +0000 (00:24 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 5 Dec 2022 18:20:58 +0000 (19:20 +0100)
Similar to marking parent MSI domains it's required to identify per device
domains. Add flag and helpers.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221124230313.747627287@linutronix.de
include/linux/irqdomain.h

index f837db9..24b7668 100644 (file)
@@ -192,6 +192,9 @@ enum {
        /* Irq domain is a MSI parent domain */
        IRQ_DOMAIN_FLAG_MSI_PARENT      = (1 << 8),
 
+       /* Irq domain is a MSI device domain */
+       IRQ_DOMAIN_FLAG_MSI_DEVICE      = (1 << 9),
+
        /*
         * Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved
         * for implementation specific purposes and ignored by the
@@ -559,6 +562,11 @@ static inline bool irq_domain_is_msi_parent(struct irq_domain *domain)
        return domain->flags & IRQ_DOMAIN_FLAG_MSI_PARENT;
 }
 
+static inline bool irq_domain_is_msi_device(struct irq_domain *domain)
+{
+       return domain->flags & IRQ_DOMAIN_FLAG_MSI_DEVICE;
+}
+
 #else  /* CONFIG_IRQ_DOMAIN_HIERARCHY */
 static inline int irq_domain_alloc_irqs(struct irq_domain *domain,
                        unsigned int nr_irqs, int node, void *arg)
@@ -610,6 +618,11 @@ static inline bool irq_domain_is_msi_parent(struct irq_domain *domain)
        return false;
 }
 
+static inline bool irq_domain_is_msi_device(struct irq_domain *domain)
+{
+       return false;
+}
+
 #endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */
 
 #else /* CONFIG_IRQ_DOMAIN */