[PATCH] irqchip: fix mvebu-sei bug causing mvebu-icu SEI probe failure
Russell King (Oracle)
rmk+kernel at armlinux.org.uk
Thu Nov 21 04:48:25 PST 2024
Commit fbdf14e90ce4 ("irqchip/irq-mvebu-sei: Switch to MSI parent")
introduced in v6.11-rc1 broke Mavell Armada platforms (and possibly
others) by incorrectly switching irq-mvebu-sei to MSI parent.
In the above commit, msi_parent_ops is set for the sei->cp_domain,
but rather than adding a .select method to mvebu_sei_cp_domain_ops
(which is associated with sei->cp_domain), it was added to
mvebu_sei_domain_ops which is associated with sei->sei_domain,
which doesn't have any msi_parent_ops. This makes the call to
msi_lib_irq_domain_select() always fail.
This bug manifests itself with the following kernel messages on
Armada 8040 based systems:
platform f21e0000.interrupt-controller:interrupt-controller at 50: deferred probe pending: (reason unknown)
platform f41e0000.interrupt-controller:interrupt-controller at 50: deferred probe pending: (reason unknown)
Fixes: fbdf14e90ce4 ("irqchip/irq-mvebu-sei: Switch to MSI parent")
Signed-off-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
---
drivers/irqchip/irq-mvebu-sei.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/irqchip/irq-mvebu-sei.c b/drivers/irqchip/irq-mvebu-sei.c
index f8c70f2d100a..065166ab5dbc 100644
--- a/drivers/irqchip/irq-mvebu-sei.c
+++ b/drivers/irqchip/irq-mvebu-sei.c
@@ -192,7 +192,6 @@ static void mvebu_sei_domain_free(struct irq_domain *domain, unsigned int virq,
}
static const struct irq_domain_ops mvebu_sei_domain_ops = {
- .select = msi_lib_irq_domain_select,
.alloc = mvebu_sei_domain_alloc,
.free = mvebu_sei_domain_free,
};
@@ -306,6 +305,7 @@ static void mvebu_sei_cp_domain_free(struct irq_domain *domain,
}
static const struct irq_domain_ops mvebu_sei_cp_domain_ops = {
+ .select = msi_lib_irq_domain_select,
.alloc = mvebu_sei_cp_domain_alloc,
.free = mvebu_sei_cp_domain_free,
};
--
2.30.2
More information about the linux-arm-kernel
mailing list