Re: [PATCH] genirq/irqdomain: Make sure all irq domain flags are distinct

From: Marc Zyngier
Date: Fri Feb 21 2020 - 05:14:05 EST


On 2020-02-21 02:07, Zenghui Yu wrote:
This was noticed when printing debugfs for MSIs on my ARM64 server.
The new dstate IRQD_MSI_NOMASK_QUIRK came out surprisingly while it
should only be the x86 stuff for the time being...

It's the overlap in irqdomain flags which leads to this confusion.
(1 << 1) might be a good choice for old IRQ_DOMAIN_NAME_ALLOCATED,
use it to avoid this overlap.

Fixes: 6f1a4891a592 ("x86/apic/msi: Plug non-maskable MSI affinity race")

To be fair, the real source of the bug is this:

6a6544e520abe ("genirq/irqdomain: Remove auto-recursive hierarchy support")

Signed-off-by: Zenghui Yu <yuzenghui@xxxxxxxxxx>
---
include/linux/irqdomain.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index b2d47571ab67..8d062e86d954 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -192,7 +192,7 @@ enum {
IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0),

/* Irq domain name was allocated in __irq_domain_add() */
- IRQ_DOMAIN_NAME_ALLOCATED = (1 << 6),
+ IRQ_DOMAIN_NAME_ALLOCATED = (1 << 1),

/* Irq domain is an IPI domain with virq per cpu */
IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2),

Acked-by: Marc Zyngier <maz@xxxxxxxxxx>

Thomas, do you mind picking this one up, as I don't have anything
else for the time being?


M.
--
Jazz is not dead. It just smells funny...