BUG: dmaengine: pl330: dmaengine_pause broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've noticed using my burst transfer patch that the dmaengine_pause()
functionality added in commit 88987d2c7534a0269f567fb101e6d71a08f0f01d
seems irredeemably broken.  It uses the DMAKILL instruction to stop
the transfer, which appears quite willing to interrupt the transfer at
any point (including while data is in flight).  This can cause a burst
of lost or corrupt data.  The only conceivable way I can see to make
it work is to have a scheme where the dma transfer thread constantly
waits for events at safe pause points using DMAWFE, and another dma
thread constantly generates events with DMASEV in order to keep the
transfer progressing.  Then dmaengine_pause() could indirectly stop
things by sending a DMAKILL to the event-generating dma thread, then
wait until the dma transfer thread reached a safe waiting point.

-- 
Frank
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux