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]

Reply via email to