All of lore.kernel.org
 help / color / mirror / Atom feed
* [BUG] bcm2711: bad_chained_irq in brcmstb_l2_intc_irq_handle
@ 2022-01-16 17:26 Stefan Wahren
  2022-01-16 20:15 ` Florian Fainelli
  2022-01-20 15:39 ` Maxime Ripard
  0 siblings, 2 replies; 10+ messages in thread
From: Stefan Wahren @ 2022-01-16 17:26 UTC (permalink / raw)
  To: Maxime Ripard, Florian Fainelli
  Cc: Phil Elwell, Dave Stevenson,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE,
	Nicolas Saenz Julienne

Hi,

recently i saw a report [1] about bad chained IRQ with Linux 5.15.13
Aarch64 with Arch Linux. I'm able to reproduce this issue on my
Raspberry Pi 4 B (8 GB RAM, Firmware: 2022-01-06T15:39:30) by turning
the connected HDMI monitor off and on again.

Kernel output is the following:

[15053.285438] irq 10, desc: 00000000acc41fca, depth: 0, count: 0,
unhandled: 0
[15053.295440] ->handle_irq():  00000000b28cf1d1,
brcmstb_l2_intc_irq_handle+0x0/0x1e0
[15053.306049] ->irq_data.chip(): 000000005f172760, gic_data+0x0/0x768
[15053.315233] ->action(): 00000000236e815e
[15053.322022] ->action->handler(): 0000000013023289,
bad_chained_irq+0x0/0x50
[15053.331909]      IRQ_LEVEL set
[15053.337822]    IRQ_NOPROBE set
[15053.343715]  IRQ_NOREQUEST set
[15053.349585]   IRQ_NOTHREAD set

Content of /proc/interrupts after the issue occured:

           CPU0       CPU1       CPU2       CPU3      
  9:          0          0          0          0     GICv2  25 Level    
vgic
 10:          1          0          0          0     GICv2 128 Level    
(null)
 12:     130322      26028      27670     135225     GICv2  30 Level    
arch_timer
 13:          0          0          0          0     GICv2  27 Level    
kvm guest vtimer
 19:          0          0          0          0     GICv2 107 Level    
fe004000.txp
 20:       7450          0          0          0     GICv2  65 Level    
fe00b880.mailbox
 25:       6525          0          0          0     GICv2 153 Level    
uart-pl011
 26:          0          0          0          0     GICv2 149 Level    
fe205000.i2c, fe804000.i2c
 27:          9          0          0          0     GICv2 125 Level    
ttyS1
 28:      36999          0          0          0     GICv2 158 Level    
mmc0, mmc1
 29:          1          0          0          0     GICv2 129 Level    
vc4 hvs
 30:          0          0          0          0     GICv2 105 Level    
fe980000.usb, fe980000.usb
 31:          0          0          0          0     GICv2 112 Level    
DMA IRQ
 33:          0          0          0          0     GICv2 114 Level    
DMA IRQ
 40:          0          0          0          0     GICv2 141 Level    
vc4 crtc
 41:          0          0          0          0     GICv2 142 Level    
vc4 crtc, vc4 crtc
 42:         10          0          0          0     GICv2 133 Level    
vc4 crtc
 43:          1          0          0          0 
interrupt-controller@7ef00100   0 Edge      vc4 hdmi cec tx
 44:          0          0          0          0 
interrupt-controller@7ef00100   1 Edge      vc4 hdmi cec rx
 47:          0          0          0          0 
interrupt-controller@7ef00100   4 Edge      vc4 hdmi hpd connected
 48:          1          0          0          0 
interrupt-controller@7ef00100   5 Edge      vc4 hdmi hpd disconnected
 49:          0          0          0          0 
interrupt-controller@7ef00100   8 Edge      vc4 hdmi cec tx
 50:          0          0          0          0 
interrupt-controller@7ef00100   7 Edge      vc4 hdmi cec rx
 53:          0          0          0          0 
interrupt-controller@7ef00100  10 Edge      vc4 hdmi hpd connected
 54:          0          0          0          0 
interrupt-controller@7ef00100  11 Edge      vc4 hdmi hpd disconnected
 55:          7          0          0          0     GICv2  66 Level    
VCHIQ doorbell
 56:          0          0          0          0     GICv2  48 Level    
arm-pmu
 57:          0          0          0          0     GICv2  49 Level    
arm-pmu
 58:          0          0          0          0     GICv2  50 Level    
arm-pmu
 59:          0          0          0          0     GICv2  51 Level    
arm-pmu
 62:      47599          0          0          0     GICv2 189 Level    
eth0
 63:       4681          0          0          0     GICv2 190 Level    
eth0
 64:          0          0          0          0     GICv2 175 Level    
PCIe PME, aerdrv
 65:        326          0          0          0  BRCM STB PCIe MSI
524288 Edge      xhci_hcd
IPI0:      2442       5185       7195      18290       Rescheduling
interrupts
IPI1:       481        383        518        533       Function call
interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for
crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast
interrupts
IPI5:         1          0          0          0       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up
interrupts
Err:          1

Comparing the vendor & mainline DTS, i noticed differences at hdmi0/1.
The vendor DTS has an additional register to access the same space as
aon_intr (interrupt parent), which looks ugly [2].

Additionally i noted that bcm2711.dtsi uses the compatible
"brcm,bcm2711-l2-intc" with a level high interrupt, but according to
irq-brcmstb-l2.c [3] the compatible is not defined and would fallback to
"brcm,l2-intc" with brcmstb_l2_edge_intc_of_init. This looks fishy.

I didn't try to reproduce this with Raspberry Pi OS & mainline kernel,
but i hope these are enough information so far.

[1] - https://archlinuxarm.org/forum/viewtopic.php?f=65&t=15791

[2] -
https://github.com/raspberrypi/linux/blob/rpi-5.15.y/arch/arm/boot/dts/bcm2711.dtsi#L339

[3] -
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/irqchip/irq-brcmstb-l2.c?h=v5.15.15#n278

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-01-21  3:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-16 17:26 [BUG] bcm2711: bad_chained_irq in brcmstb_l2_intc_irq_handle Stefan Wahren
2022-01-16 20:15 ` Florian Fainelli
2022-01-17  4:59   ` Florian Fainelli
2022-01-20 15:54     ` Maxime Ripard
2022-01-20 15:39 ` Maxime Ripard
2022-01-20 18:10   ` Stefan Wahren
2022-01-20 19:48     ` Florian Fainelli
2022-01-20 21:23       ` Stefan Wahren
2022-01-20 21:38         ` Florian Fainelli
2022-01-21  3:51           ` Florian Fainelli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.