| From 35a7ed4acb5a4e1863bb5fe70eef4e275d044415 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 27 Sep 2021 09:46:33 -0700 |
| Subject: xtensa: call irqchip_init only when CONFIG_USE_OF is selected |
| |
| From: Max Filippov <jcmvbkbc@gmail.com> |
| |
| [ Upstream commit 6489f8d0e1d93a3603d8dad8125797559e4cf2a2 ] |
| |
| During boot time kernel configured with OF=y but USE_OF=n displays the |
| following warnings and hangs shortly after starting userspace: |
| |
| ------------[ cut here ]------------ |
| WARNING: CPU: 0 PID: 0 at kernel/irq/irqdomain.c:695 irq_create_mapping_affinity+0x29/0xc0 |
| irq_create_mapping_affinity(, 6) called with NULL domain |
| CPU: 0 PID: 0 Comm: swapper Not tainted 5.15.0-rc3-00001-gd67ed2510d28 #30 |
| Call Trace: |
| __warn+0x69/0xc4 |
| warn_slowpath_fmt+0x6c/0x94 |
| irq_create_mapping_affinity+0x29/0xc0 |
| local_timer_setup+0x40/0x88 |
| time_init+0xb1/0xe8 |
| start_kernel+0x31d/0x3f4 |
| _startup+0x13b/0x13b |
| ---[ end trace 1e6630e1c5eda35b ]--- |
| ------------[ cut here ]------------ |
| WARNING: CPU: 0 PID: 0 at arch/xtensa/kernel/time.c:141 local_timer_setup+0x58/0x88 |
| error: can't map timer irq |
| CPU: 0 PID: 0 Comm: swapper Tainted: G W 5.15.0-rc3-00001-gd67ed2510d28 #30 |
| Call Trace: |
| __warn+0x69/0xc4 |
| warn_slowpath_fmt+0x6c/0x94 |
| local_timer_setup+0x58/0x88 |
| time_init+0xb1/0xe8 |
| start_kernel+0x31d/0x3f4 |
| _startup+0x13b/0x13b |
| ---[ end trace 1e6630e1c5eda35c ]--- |
| Failed to request irq 0 (timer) |
| |
| Fix that by calling irqchip_init only when CONFIG_USE_OF is selected and |
| calling legacy interrupt controller init otherwise. |
| |
| Fixes: da844a81779e ("xtensa: add device trees support") |
| Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/xtensa/kernel/irq.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/xtensa/kernel/irq.c b/arch/xtensa/kernel/irq.c |
| index a48bf2d10ac2..80cc9770a8d2 100644 |
| --- a/arch/xtensa/kernel/irq.c |
| +++ b/arch/xtensa/kernel/irq.c |
| @@ -145,7 +145,7 @@ unsigned xtensa_get_ext_irq_no(unsigned irq) |
| |
| void __init init_IRQ(void) |
| { |
| -#ifdef CONFIG_OF |
| +#ifdef CONFIG_USE_OF |
| irqchip_init(); |
| #else |
| #ifdef CONFIG_HAVE_SMP |
| -- |
| 2.33.0 |
| |