jerpelea opened a new pull request, #21227: URL: https://github.com/apache/nuttx/pull/21227
## Summary The SPI DMA exchange path previously waited for completion with two untimed, uninterruptible semaphore waits (nxsem_wait_uninterruptible). If a DMA transfer never completes (e.g. stalled slave or bus glitch), the calling thread sleeps indefinitely. In network drivers like W5500 on SPI0 running from the LP work queue while holding net_lock, this causes the worker to hang permanently, wedging the whole network stack and blocking recovery handlers. This patch updates both ARM and RISC-V ports of rp23xx: - Switches to nxsem_tickwait_uninterruptible() with a transfer-size-derived timeout plus a safety margin. - On timeout, forcibly stops both DMA channels with rp23xx_dmastop(), disables SPI DMA in the control register, resets the semaphore count, drains leftover RX FIFO bytes, and logs an error to degrade gracefully instead of deadlocking. Fixes #19305 ## Impact RELEASE ## Testing CI -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
