Rob Herring <robh@xxxxxxxxxx> writes: > The BCM2835 AUX SPI has a shared interrupt line (with AUX UART). > Downstream fixes this with an AUX irqchip to demux the IRQ sources and a > DT change which breaks compatibility with older kernels. The AUX irqchip > was already rejected for upstream[1] and the DT change would break > working systems if the DTB is updated to a newer one. The latter issue > was brought to my attention by Alex Graf. > > The root cause however is a bug in the shared handler. A shared handler > must correctly identify it actually handled an interrupt. The handler > here was processing data whether interrupts were enabled or not. > It would return IRQ_HANDLED if there was any data and not only when > there was an actual interrupt pending. The result is that another > device's IRQ could cause the SPI's IRQ handler to run and process data > when the the SPI driver working in polled mode. Fix this by adding a > check in the IRQ handler that the TXEMPTY or IDLE interrupts are enabled > and always return IRQ_NONE when they are not. FWIW, I see v1 already applied in -next.
Attachment:
signature.asc
Description: PGP signature