On Mon, Jan 07, 2019 at 05:23:19PM +0100, Geert Uytterhoeven wrote: > When submitting a DMA request fails in sci_dma_rx_complete(), the driver > tries to fall back to PIO, but that does not work: no more data will be > received, or the kernel will even crash. > > Fix this similar as in (but not identical to) sci_submit_rx(): > - On SCIF, PIO cannot take over if any DMA transactions are pending, > hence they must be terminated first. > - All active cookies must be invalidated, else rx_timer_fn() may > trigger a NULL pointer dereference. > - Restarting the port is not needed, as it is already running, but > serial port interrupts must be directed back from the DMA engine to > the CPU. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Reviewed-by: Simon Horman <horms+renesas@xxxxxxxxxxxx>