Messages in this thread | | | Subject | Re: [PATCH v3 10/16] irqchip/bcm2836: Configure mailbox interrupts as standard interrupts | From | Marek Szyprowski <> | Date | Mon, 14 Sep 2020 16:32:35 +0200 |
| |
Hi Marc,
On 01.09.2020 16:43, Marc Zyngier wrote: > In order to switch the bcm2836 driver to privide standard interrupts > for IPIs, it first needs to stop lying about the way things work. > > The mailbox interrupt is actually a multiplexer, with enough > bits to store 32 pending interrupts per CPU. So let's turn it > into a chained irqchip. > > Once this is done, we can instanciate the corresponding IPIs, > and pass them to the architecture code. > > Signed-off-by: Marc Zyngier <maz@kernel.org>
This one also fails. It breaks booting of Raspberry Pi 3b boards (both in ARM and ARM64 mode):
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = (ptrval) [00000000] *pgd=80000000004003, *pmd=00000000 Internal error: Oops: 80000206 [#1] SMP ARM Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.9.0-rc4+ #9166 Hardware name: BCM2835 PC is at 0x0 LR is at irq_percpu_enable+0x40/0x50 pc : [<00000000>] lr : [<c0274638>] psr: 600000d3 sp : c1201e00 ip : c1201e18 fp : c1201e14 r10: c0ef23dc r9 : c120583c r8 : 00000000 r7 : 00000011 r6 : eb032d00 r5 : 00000000 r4 : eb032d00 r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : eb032d18 Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment user Control: 30c5383d Table: 00003000 DAC: fffffffd Process swapper/0 (pid: 0, stack limit = 0x(ptrval)) Stack: (0xc1201e00 to 0xc1202000) ... Backtrace: [<c02745f8>] (irq_percpu_enable) from [<c0272498>] (enable_percpu_irq+0xa4/0xd8) r5:c1204ec8 r4:00000000 [<c02723f4>] (enable_percpu_irq) from [<c020ded0>] (ipi_setup.part.0+0x3c/0x48) r8:c107ba80 r7:00000018 r6:00000011 r5:c1204ee0 r4:00000001 [<c020de94>] (ipi_setup.part.0) from [<c1005684>] (set_smp_ipi_range+0xd8/0xf8) r5:c1204ee0 r4:00000008 [<c10055ac>] (set_smp_ipi_range) from [<c1023388>] (bcm2836_arm_irqchip_l1_intc_of_init+0x1c0/0x22c) r8:c1366820 r7:c1204ec8 r6:00000010 r5:00000001 r4:00000000 [<c10231c8>] (bcm2836_arm_irqchip_l1_intc_of_init) from [<c102f28c>] (of_irq_init+0x18c/0x2dc) r9:00000000 r8:c1201f34 r7:c1204ec8 r6:c1201f2c r5:c1201f2c r4:eb004880 [<c102f100>] (of_irq_init) from [<c1022f4c>] (irqchip_init+0x1c/0x24) r10:0000006c r9:00000000 r8:00000000 r7:ffffffff r6:cccccccd r5:c0eb7abe r4:c103ba30 [<c1022f30>] (irqchip_init) from [<c1003960>] (init_IRQ+0x30/0x98) [<c1003930>] (init_IRQ) from [<c1000ebc>] (start_kernel+0x3b4/0x628) r5:c0eb7abe r4:c12c1000 [<c1000b08>] (start_kernel) from [<00000000>] (0x0) r10:30c5387d r9:410fd034 r8:02600000 r7:00000000 r6:30c0387d r5:00000000 r4:c1000330 Code: bad PC value random: get_random_bytes called from init_oops_id+0x30/0x4c with crng_init=0 ---[ end trace 0000000000000000 ]--- Kernel panic - not syncing: Attempted to kill the idle task! ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---
> --- > drivers/irqchip/irq-bcm2836.c | 151 ++++++++++++++++++++++++++++------ > 1 file changed, 125 insertions(+), 26 deletions(-) > > ...
Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland
| |