[PATCH] spi: spi-imx: spi_imx_transfer_one(): check for DMA transfer first

Frieder Schrempf frieder.schrempf at kontron.de
Wed Nov 16 09:03:31 PST 2022


On 16.11.22 17:49, Marc Kleine-Budde wrote:
> The SPI framework checks for each transfer (with the struct
> spi_controller::can_dma callback) whether the driver wants to use DMA
> for the transfer. If the driver returns true, the SPI framework will
> map the transfer's data to the device, start the actual transfer and
> map the data back.
> 
> In commit 07e759387788 ("spi: spi-imx: add PIO polling support") the
> spi-imx driver's spi_imx_transfer_one() function was extended. If the
> estimated duration of a transfer does not exceed a configurable
> duration, a polling transfer function is used. This check happens
> before checking if the driver decided earlier for a DMA transfer.
> 
> If spi_imx_can_dma() decided to use a DMA transfer, and the user
> configured a big maximum polling duration, a polling transfer will be
> used. The DMA unmap after the transfer destroys the transferred data.
> 
> To fix this problem check in spi_imx_transfer_one() if the driver
> decided for DMA transfer first, then check the limits for a polling
> transfer.
> 
> Fixes: 07e759387788 ("spi: spi-imx: add PIO polling support")
> Link: https://lore.kernel.org/all/20221111003032.82371-1-festevam@gmail.com
> Reported-by: Frieder Schrempf <frieder.schrempf at kontron.de>
> Reported-by: Fabio Estevam <festevam at gmail.com>
> Tested-by: Fabio Estevam <festevam at gmail.com>
> Cc: David Jander <david at protonic.nl>
> Cc: stable at vger.kernel.org
> Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>

Tested-by: Frieder Schrempf <frieder.schrempf at kontron.de>
Reviewed-by: Frieder Schrempf <frieder.schrempf at kontron.de>



More information about the linux-arm-kernel mailing list