mmc: cavium: Set the correct dma max segment size for mmc_host
We have set the mmc_host.max_seg_size to 8M, but the dma max segment
size of PCI device is set to 64K by default in function pci_device_add().
The mmc_host.max_seg_size is used to set the max segment size of
the blk queue. Then this mismatch will trigger a calltrace like below
when a bigger than 64K segment request arrives at mmc dev. So we should
consider the limitation of the cvm_mmc_host when setting the
mmc_host.max_seg_size.
DMA-API: thunderx_mmc 0000:01:01.4: mapping sg segment longer than device claims to support [len=131072] [max=65536]
WARNING: CPU: 6 PID: 238 at kernel/dma/debug.c:1221 debug_dma_map_sg+0x2b8/0x350
Modules linked in:
CPU: 6 PID: 238 Comm: kworker/6:1H Not tainted 5.3.0-rc1-next-
20190724-yocto-standard+ #62
Hardware name: Marvell OcteonTX CN96XX board (DT)
Workqueue: kblockd blk_mq_run_work_fn
pstate:
80c00009 (Nzcv daif +PAN +UAO)
pc : debug_dma_map_sg+0x2b8/0x350
lr : debug_dma_map_sg+0x2b8/0x350
sp :
ffff00001770f9e0
x29:
ffff00001770f9e0 x28:
ffffffff00000000
x27:
00000000ffffffff x26:
ffff800bc2c73180
x25:
ffff000010e83700 x24:
0000000000000002
x23:
0000000000000001 x22:
0000000000000001
x21:
0000000000000000 x20:
ffff800bc48ba0b0
x19:
ffff800bc97e8c00 x18:
ffffffffffffffff
x17:
0000000000000000 x16:
0000000000000000
x15:
ffff000010e835c8 x14:
6874207265676e6f
x13:
6c20746e656d6765 x12:
7320677320676e69
x11:
7070616d203a342e x10:
31303a31303a3030
x9 :
303020636d6d5f78 x8 :
35363d78616d5b20
x7 :
00000000000002fd x6 :
ffff000010fd57dc
x5 :
0000000000000000 x4 :
ffff0000106c61f0
x3 :
00000000ffffffff x2 :
0000800bee060000
x1 :
7010678df3041a00 x0 :
0000000000000000
Call trace:
debug_dma_map_sg+0x2b8/0x350
cvm_mmc_request+0x3c4/0x988
__mmc_start_request+0x9c/0x1f8
mmc_start_request+0x7c/0xb0
mmc_blk_mq_issue_rq+0x5c4/0x7b8
mmc_mq_queue_rq+0x11c/0x278
blk_mq_dispatch_rq_list+0xb0/0x568
blk_mq_do_dispatch_sched+0x6c/0x108
blk_mq_sched_dispatch_requests+0x110/0x1b8
__blk_mq_run_hw_queue+0xb0/0x118
blk_mq_run_work_fn+0x28/0x38
process_one_work+0x210/0x490
worker_thread+0x48/0x458
kthread+0x130/0x138
ret_from_fork+0x10/0x1c
Signed-off-by: Kevin Hao <haokexin@gmail.com>
Fixes: ba3869ff32e4 ("mmc: cavium: Add core MMC driver for Cavium SOCs")
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>