From a8cc14435e675e86cba9afce8aa5e098b2e43ff4 Mon Sep 17 00:00:00 2001 From: Shiva sagar Myana Date: Tue, 24 Sep 2024 16:50:35 +0530 Subject: [PATCH] hw/ssi/xilinx_spips: Fix flash erase assert in dual parallel configuration Ensure that the FIFO is checked for emptiness before popping data from it. Previously, the code directly popped the data from the FIFO without checking, which could cause an assertion failure: ../util/fifo8.c:67: fifo8_pop: Assertion `fifo->num > 0' failed. Signed-off-by: Shiva sagar Myana Message-id: 20240924112035.1320865-1-Shivasagar.Myana@amd.com Reviewed-by: Francisco Iglesias [PMM: tweaked commit message] Signed-off-by: Peter Maydell --- hw/ssi/xilinx_spips.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index 1595a887a1..aeb462c3ce 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -620,7 +620,9 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s) } else if (s->snoop_state == SNOOP_STRIPING || s->snoop_state == SNOOP_NONE) { for (i = 0; i < num_effective_busses(s); ++i) { - tx_rx[i] = fifo8_pop(&s->tx_fifo); + if (!fifo8_is_empty(&s->tx_fifo)) { + tx_rx[i] = fifo8_pop(&s->tx_fifo); + } } stripe8(tx_rx, num_effective_busses(s), false); } else if (s->snoop_state >= SNOOP_ADDR) {