[SRU][J][PATCH 1/1] UBUNTU: SAUCE: Revert "spi: zynqmp-gqspi: Always acknowledge interrupts"

Stewart Hore stewart.hore at canonical.com
Wed Jan 7 07:47:22 UTC 2026


BugLink: https://bugs.launchpad.net/bugs/2137603

This reverts commit 90b759a09f30d612844be245ff7e80c67eb22be5.

The commit was released in the 6.15.0 kernel. When applied to the 5.15.0
kernel the driver no longer works and breaks the FPGA firmware update
from userspace.

Signed-off-by: Stewart Hore <stewart.hore at canonical.com>
---
 drivers/spi/spi-zynqmp-gqspi.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c
index 77aef2a26561..1847e3485dfe 100644
--- a/drivers/spi/spi-zynqmp-gqspi.c
+++ b/drivers/spi/spi-zynqmp-gqspi.c
@@ -691,6 +691,7 @@ static void zynqmp_process_dma_irq(struct zynqmp_qspi *xqspi)
 static irqreturn_t zynqmp_qspi_irq(int irq, void *dev_id)
 {
 	struct zynqmp_qspi *xqspi = (struct zynqmp_qspi *)dev_id;
+	irqreturn_t ret = IRQ_NONE;
 	u32 status, mask, dma_status = 0;
 
 	status = zynqmp_gqspi_read(xqspi, GQSPI_ISR_OFST);
@@ -705,24 +706,27 @@ static irqreturn_t zynqmp_qspi_irq(int irq, void *dev_id)
 				   dma_status);
 	}
 
-	if (!mask && !dma_status)
-		return IRQ_NONE;
-
-	if (mask & GQSPI_ISR_TXNOT_FULL_MASK)
+	if (mask & GQSPI_ISR_TXNOT_FULL_MASK) {
 		zynqmp_qspi_filltxfifo(xqspi, GQSPI_TX_FIFO_FILL);
+		ret = IRQ_HANDLED;
+	}
 
-	if (dma_status & GQSPI_QSPIDMA_DST_I_STS_DONE_MASK)
+	if (dma_status & GQSPI_QSPIDMA_DST_I_STS_DONE_MASK) {
 		zynqmp_process_dma_irq(xqspi);
-	else if (!(mask & GQSPI_IER_RXEMPTY_MASK) &&
-			(mask & GQSPI_IER_GENFIFOEMPTY_MASK))
+		ret = IRQ_HANDLED;
+	} else if (!(mask & GQSPI_IER_RXEMPTY_MASK) &&
+			(mask & GQSPI_IER_GENFIFOEMPTY_MASK)) {
 		zynqmp_qspi_readrxfifo(xqspi, GQSPI_RX_FIFO_FILL);
+		ret = IRQ_HANDLED;
+	}
 
 	if (xqspi->bytes_to_receive == 0 && xqspi->bytes_to_transfer == 0 &&
 	    ((status & GQSPI_IRQ_MASK) == GQSPI_IRQ_MASK)) {
 		zynqmp_gqspi_write(xqspi, GQSPI_IDR_OFST, GQSPI_ISR_IDR_MASK);
 		complete(&xqspi->data_completion);
+		ret = IRQ_HANDLED;
 	}
-	return IRQ_HANDLED;
+	return ret;
 }
 
 /**
-- 
2.51.0




More information about the kernel-team mailing list