summaryrefslogtreecommitdiff
path: root/arch/arm/mach-rpc/include/mach
diff options
context:
space:
mode:
authorLouis Chauvet <louis.chauvet@bootlin.com>2024-03-27 12:58:49 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-05-02 17:35:29 +0300
commit582ce5d734190d74e5ce9cd711cf6e964e1e7b29 (patch)
tree3f04b81b174c10e0a4b287951b9d1d9194feedb1 /arch/arm/mach-rpc/include/mach
parentf70e6b9e4bf5caea49f9ea94d7c40814b1b0da17 (diff)
downloadlinux-582ce5d734190d74e5ce9cd711cf6e964e1e7b29.tar.xz
dmaengine: xilinx: xdma: Fix synchronization issue
commit 6a40fb8245965b481b4dcce011cd63f20bf91ee0 upstream. The current xdma_synchronize method does not properly wait for the last transfer to be done. Due to limitations of the XMDA engine, it is not possible to stop a transfer in the middle of a descriptor. Said otherwise, if a stop is requested at the end of descriptor "N" and the OS is fast enough, the DMA controller will effectively stop immediately. However, if the OS is slightly too slow to request the stop and the DMA engine starts descriptor "N+1", the N+1 transfer will be performed until its end. This means that after a terminate_all, the last descriptor must remain valid and the synchronization must wait for this last descriptor to be terminated. Fixes: 855c2e1d1842 ("dmaengine: xilinx: xdma: Rework xdma_terminate_all()") Fixes: f5c392d106e7 ("dmaengine: xilinx: xdma: Add terminate_all/synchronize callbacks") Cc: stable@vger.kernel.org Suggested-by: Miquel Raynal <miquel.raynal@bootlin.com> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com> Link: https://lore.kernel.org/r/20240327-digigram-xdma-fixes-v1-2-45f4a52c0283@bootlin.com Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/arm/mach-rpc/include/mach')
0 files changed, 0 insertions, 0 deletions