Skip to content

Commit b8c7bfb

Browse files
nxpfrankliKAGA-KOKO
authored andcommitted
irqdomain: Add IRQ_DOMAIN_FLAG_MSI_IMMUTABLE and irq_domain_is_msi_immutable()
Add the flag IRQ_DOMAIN_FLAG_MSI_IMMUTABLE and the API function irq_domain_is_msi_immutable() to check if the MSI controller retains an immutable address/data pair during irq_set_affinity(). Ensure compatibility with MSI users like PCIe Endpoint Doorbell, which require the address/data pair to remain unchanged after setup. Use this function to verify if the MSI controller is immutable. Signed-off-by: Frank Li <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Link: https://lore.kernel.org/all/[email protected]
1 parent 9a958e1 commit b8c7bfb

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

include/linux/irqdomain.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@ enum {
231231
/* Irq domain must destroy generic chips when removed */
232232
IRQ_DOMAIN_FLAG_DESTROY_GC = (1 << 10),
233233

234+
/* Address and data pair is mutable when irq_set_affinity() */
235+
IRQ_DOMAIN_FLAG_MSI_IMMUTABLE = (1 << 11),
236+
234237
/*
235238
* Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved
236239
* for implementation specific purposes and ignored by the
@@ -691,6 +694,10 @@ static inline bool irq_domain_is_msi_device(struct irq_domain *domain)
691694
return domain->flags & IRQ_DOMAIN_FLAG_MSI_DEVICE;
692695
}
693696

697+
static inline bool irq_domain_is_msi_immutable(struct irq_domain *domain)
698+
{
699+
return domain->flags & IRQ_DOMAIN_FLAG_MSI_IMMUTABLE;
700+
}
694701
#else /* CONFIG_IRQ_DOMAIN_HIERARCHY */
695702
static inline int irq_domain_alloc_irqs(struct irq_domain *domain,
696703
unsigned int nr_irqs, int node, void *arg)

0 commit comments

Comments
 (0)