diff options
| author | Guenter Roeck <[email protected]> | 2024-09-24 21:01:23 +0000 |
|---|---|---|
| committer | Ulf Hansson <[email protected]> | 2024-10-02 23:23:57 +0000 |
| commit | c26339faed11fae01fafd61e5e97ac3ba7b23ef3 (patch) | |
| tree | ac9508433f07bb9874a01c1235656c76d51afc35 /drivers/mmc/core/queue.c | |
| parent | Linux 6.12-rc1 (diff) | |
| download | kernel-c26339faed11fae01fafd61e5e97ac3ba7b23ef3.tar.gz kernel-c26339faed11fae01fafd61e5e97ac3ba7b23ef3.zip | |
mmc: core: Only set maximum DMA segment size if DMA is supported
Since upstream commit 334304ac2bac ("dma-mapping: don't return errors
from dma_set_max_seg_size") calling dma_set_max_seg_size() on a device
not supporting DMA results in a warning traceback. This is seen when
booting the sifive_u machine from SD. The underlying SPI controller
(sifive,spi0 compatible) explicitly sets dma_mask to NULL.
Avoid the backtrace by only calling dma_set_max_seg_size() if DMA is
supported.
Signed-off-by: Guenter Roeck <[email protected]>
Reviewed-by: Christoph Hellwig <[email protected]>
Reviewed-by: Robin Murphy <[email protected]>
Tested-by: Geert Uytterhoeven <[email protected]>
Fixes: 334304ac2bac ("dma-mapping: don't return errors from dma_set_max_seg_size")
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Ulf Hansson <[email protected]>
Diffstat (limited to 'drivers/mmc/core/queue.c')
| -rw-r--r-- | drivers/mmc/core/queue.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index d0b3ca8a11f0..4d6844261912 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -388,7 +388,8 @@ static struct gendisk *mmc_alloc_disk(struct mmc_queue *mq, blk_queue_rq_timeout(mq->queue, 60 * HZ); - dma_set_max_seg_size(mmc_dev(host), queue_max_segment_size(mq->queue)); + if (mmc_dev(host)->dma_parms) + dma_set_max_seg_size(mmc_dev(host), queue_max_segment_size(mq->queue)); INIT_WORK(&mq->recovery_work, mmc_mq_recovery_handler); INIT_WORK(&mq->complete_work, mmc_blk_mq_complete_work); |
