XDMA: Mark engine as not running when stopping after timeouts
Unlike engine_start, which sets the engine's running field itself, engine_stop instead requires its callers to clear the field. However, not all of them do, and notably the timeout handlers do not, meaning that after a request times out and we stop the engine we never start it again, causing all future transfers on the channel to hit the software timeout. Instead, set running to 0 inside xdma_engine_stop to mirror engine_start to both fix the bug and prevent future ones creeping in.
Showing
Please register or sign in to comment