[PATCH] nvme-apple: fix DMA-API warning
Russell King (Oracle)
rmk+kernel at armlinux.org.uk
Wed Oct 12 04:46:06 PDT 2022
Fix the following DMA-API warning:
DMA-API: nvme-apple 27bcc0000.nvme: mapping sg segment longer than device claims to support [len=69632] [max=65536]
WARNING: CPU: 3 PID: 1 at kernel/dma/debug.c:1160 debug_dma_map_sg+0x310/0x3a0
Modules linked in: tps6598x roles typec rtc_macsmc gpio_macsmc nvme_apple apple_mailbox apple_sart pcie_apple macsmc_rtkit macsmc pinctrl_apple_gpio i2c_apple
CPU: 3 PID: 1 Comm: init Not tainted 6.0.0+ #1081
Hardware name: Apple Mac mini (M1, 2020) (DT)
pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : debug_dma_map_sg+0x310/0x3a0
lr : debug_dma_map_sg+0x310/0x3a0
...
Call trace:
debug_dma_map_sg+0x310/0x3a0
__dma_map_sg_attrs+0x98/0xf4
dma_map_sg_attrs+0xc/0x1c
apple_nvme_queue_rq+0x218/0x67c [nvme_apple]
blk_mq_dispatch_rq_list+0x198/0x81c
blk_mq_do_dispatch_sched+0x2b0/0x340
__blk_mq_sched_dispatch_requests+0x104/0x154
blk_mq_sched_dispatch_requests+0x38/0x70
__blk_mq_run_hw_queue+0x80/0x130
__blk_mq_delay_run_hw_queue+0x84/0x90
blk_mq_run_hw_queue+0x134/0x170
blk_mq_sched_insert_requests+0xec/0x300
blk_mq_flush_plug_list+0x104/0x430
__blk_flush_plug+0xe8/0x130
blk_finish_plug+0x30/0x1f0
read_pages+0x1ec/0x334
page_cache_ra_unbounded+0x158/0x1bc
page_cache_ra_order+0x80/0x2c0
filemap_fault+0x4bc/0x970
__do_fault+0x38/0x144
__handle_mm_fault+0x7c4/0xc60
handle_mm_fault+0x120/0x2a0
do_page_fault+0x130/0x47c
do_translation_fault+0xa0/0xb0
do_mem_abort+0x40/0x90
el0_da+0x2c/0x80
el0t_64_sync_handler+0x60/0xb4
el0t_64_sync+0x168/0x16c
---[ end trace 0000000000000000 ]---
Suggested-by: Sven Peter <sven at svenpeter.dev>
Signed-off-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
---
drivers/nvme/host/apple.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/nvme/host/apple.c b/drivers/nvme/host/apple.c
index 5fc5ea196b40..ff8b083dc5c6 100644
--- a/drivers/nvme/host/apple.c
+++ b/drivers/nvme/host/apple.c
@@ -1039,6 +1039,8 @@ static void apple_nvme_reset_work(struct work_struct *work)
dma_max_mapping_size(anv->dev) >> 9);
anv->ctrl.max_segments = NVME_MAX_SEGS;
+ dma_set_max_seg_size(anv->dev, 0xffffffff);
+
/*
* Enable NVMMU and linear submission queues.
* While we could keep those disabled and pretend this is slightly
--
2.30.2
More information about the Linux-nvme
mailing list