dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote...
authorKory Maincent <kory.maincent@bootlin.com>
Mon, 29 Jan 2024 16:26:02 +0000 (17:26 +0100)
committerVinod Koul <vkoul@kernel.org>
Wed, 7 Feb 2024 08:30:52 +0000 (09:30 +0100)
commitbbcc1c83f343e580c3aa1f2a8593343bf7b55bba
tree88a03391fd3755c1401ab72bf5fd2ab683ff97aa
parent712a92a48158e02155b4b6b21e03a817f78c9b7e
dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote setup

The Linked list element and pointer are not stored in the same memory as
the eDMA controller register. If the doorbell register is toggled before
the full write of the linked list a race condition error will occur.
In remote setup we can only use a readl to the memory to assure the full
write has occurred.

Fixes: 7e4b8a4fbe2c ("dmaengine: Add Synopsys eDMA IP version 0 support")
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Link: https://lore.kernel.org/r/20240129-b4-feature_hdma_mainline-v7-6-8e8c1acb7a46@bootlin.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dw-edma/dw-edma-v0-core.c