+++ /dev/null
-From 8eeefd49d7ae7ad14194a69b123c0e169031b83b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 3 Oct 2023 10:13:51 +0530
-Subject: irqchip/riscv-intc: Mark all INTC nodes as initialized
-
-From: Anup Patel <apatel@ventanamicro.com>
-
-[ Upstream commit e13cd66bd821be417c498a34928652db4ac6b436 ]
-
-The RISC-V INTC local interrupts are per-HART (or per-CPU) so we
-create INTC IRQ domain only for the INTC node belonging to the boot
-HART. This means only the boot HART INTC node will be marked as
-initialized and other INTC nodes won't be marked which results
-downstream interrupt controllers (such as PLIC, IMSIC and APLIC
-direct-mode) not being probed due to missing device suppliers.
-
-To address this issue, we mark all INTC node for which we don't
-create IRQ domain as initialized.
-
-Reported-by: Dmitry Dunaev <dunaev@tecon.ru>
-Signed-off-by: Anup Patel <apatel@ventanamicro.com>
-Signed-off-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20230926102801.1591126-1-dunaev@tecon.ru
-Link: https://lore.kernel.org/r/20231003044403.1974628-4-apatel@ventanamicro.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-riscv-intc.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/irqchip/irq-riscv-intc.c b/drivers/irqchip/irq-riscv-intc.c
-index 8017f6d32d52b..54c99441c1b54 100644
---- a/drivers/irqchip/irq-riscv-intc.c
-+++ b/drivers/irqchip/irq-riscv-intc.c
-@@ -109,8 +109,16 @@ static int __init riscv_intc_init(struct device_node *node,
- * for each INTC DT node. We only need to do INTC initialization
- * for the INTC DT node belonging to boot CPU (or boot HART).
- */
-- if (riscv_hartid_to_cpuid(hartid) != smp_processor_id())
-+ if (riscv_hartid_to_cpuid(hartid) != smp_processor_id()) {
-+ /*
-+ * The INTC nodes of each CPU are suppliers for downstream
-+ * interrupt controllers (such as PLIC, IMSIC and APLIC
-+ * direct-mode) so we should mark an INTC node as initialized
-+ * if we are not creating IRQ domain for it.
-+ */
-+ fwnode_dev_initialized(of_fwnode_handle(node), true);
- return 0;
-+ }
-
- intc_domain = irq_domain_add_linear(node, BITS_PER_LONG,
- &riscv_intc_domain_ops, NULL);
---
-2.42.0
-