summaryrefslogtreecommitdiff
path: root/scripts/dtc
diff options
context:
space:
mode:
authorXiaolei Wang <xiaolei.wang@windriver.com>2026-05-18 15:34:05 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-05-22 12:19:02 +0200
commit36770417153644bc88281c7284730ef1d14d8d3c (patch)
tree0585d55199f7db0e370ad7b283626c33e7e387f3 /scripts/dtc
parent2eae90a457baa0048a96ed38ad93090ee38c8b2f (diff)
downloadlwn-36770417153644bc88281c7284730ef1d14d8d3c.tar.gz
lwn-36770417153644bc88281c7284730ef1d14d8d3c.zip
misc: rp1: Send IACK on IRQ activate to fix kdump/kexec
After a kexec/kdump reboot, the macb Ethernet controller fails to receive any packets, causing DHCP to hang indefinitely and the network interface to be unusable despite link being up. The root cause is that RP1's level-triggered MSI-X interrupt sources (such as macb on hwirq 6) may have their internal state machines stuck in the "waiting for IACK" state. This happens because the previous kernel crashed before sending the acknowledgment for a pending level interrupt. In this stuck state, RP1 will not generate new MSI-X writes even though the interrupt source remains asserted. Since no new MSI-X is sent, the GIC never sees a new edge, the chained IRQ handler is never invoked, and the interrupt is permanently lost. Fix this by sending MSIX_CFG_IACK in rp1_irq_activate(). This unconditionally resets the MSI-X state machine back to idle when a child device requests its interrupt. If the interrupt source is still asserted, RP1 will immediately issue a new MSI-X with the freshly configured msg_addr/msg_data, and normal interrupt delivery resumes. Writing IACK when the state machine is already idle (i.e., on a normal cold boot) is harmless — it has no effect. Fixes: 49d63971f963 ("misc: rp1: RaspberryPi RP1 misc driver") Cc: stable <stable@kernel.org> Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com> Link: https://patch.msgid.link/20260518073405.2115003-1-xiaolei.wang@windriver.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'scripts/dtc')
0 files changed, 0 insertions, 0 deletions