diff options
| author | Frederic Konrad <fkonrad@amd.com> | 2026-11-04 12:49:58 +0530 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-11-04 23:00:32 +0000 |
| commit | 059518f775baecc9803fc97787bd0b17558f8047 (patch) | |
| tree | 477808ed0f11eead1aba4e32e436ad84c8760752 /rust/zerocopy/src/pointer | |
| parent | 5072a9fae45a043cad80f74f4f19fc98803630ab (diff) | |
spi: cadence-quadspi: Fix race between DMA completion and transfer start
In cqspi_versal_indirect_read_dma(), the DMA transfer is started by
writing CQSPI_REG_INDIRECTRD_START_MASK to the indirect read control
register. Under certain timing conditions, the DMA completion interrupt
may be triggered and complete the transfer before the completion
structure is reinitialized.
This creates a race where the completion event is lost, causing
wait_for_completion_timeout() to time out even though the transfer has
already completed, resulting in errors such as:
spi-nor spi0.0: CS0: operation failed with -110
Fix this by reinitializing the completion structure before starting the
DMA transfer, ensuring that any completion event generated after the
transfer begins is correctly observed.
Fixes: 1a6f854f7daa ("spi: cadence-quadspi: Add Xilinx Versal external DMA support")
Signed-off-by: Frederic Konrad <fkonrad@amd.com>
Signed-off-by: Srikanth Boyapally <srikanth.boyapally@amd.com>
Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Link: https://patch.msgid.link/20261104071958.2405117-1-radhey.shyam.pandey@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'rust/zerocopy/src/pointer')
0 files changed, 0 insertions, 0 deletions
