Skip to content

Commit 62a074e

Browse files
committed
drm/simpledrm: Set DMA and coherency mask
Simpledrm is "DMA" access is not limited. All CPU addressible memory can be used via direct DMA mappings. Fixes following warning on Apple silicon systems. Physical memory on those systems starts at (1 << 35) or (1 << 40) so 32-bit direct DMA mappings are not possible. ------------[ cut here ]------------ simple-framebuffer 9e5064000.framebuffer: swiotlb addr 0x00000009de654000+16384 overflow (mask ffffffff, bus limit 0). WARNING: CPU: 3 PID: 961 at kernel/dma/swiotlb.c:928 swiotlb_map+0x1f4/0x2a0 Modules linked in: ... CPU: 3 PID: 961 Comm: kwin_wayland Not tainted 6.5.0-asahi+ #1 Hardware name: Apple Mac mini (M2, 2023) (DT) ... Call trace: swiotlb_map+0x1f4/0x2a0 dma_direct_map_sg+0x8c/0x2a8 dma_map_sgtable+0x5c/0xd0 drm_gem_map_dma_buf+0x64/0xb8 dma_buf_map_attachment+0xac/0x158 dma_buf_map_attachment_unlocked+0x48/0x80 drm_gem_prime_import_dev+0xa0/0x1a0 drm_gem_prime_fd_to_handle+0xc8/0x218 drm_prime_fd_to_handle_ioctl+0x34/0x50 drm_ioctl_kernel+0xe4/0x160 drm_ioctl+0x23c/0x3e0 ... ---[ end trace 0000000000000000 ]--- Avoids using swiotbl bounce buffers on other platforms when the mapped memory is above 4GB. Fixes: 11e8f5f ("drm: Add simpledrm driver") Signed-off-by: Janne Grunau <j@jannau.net>
1 parent a17389b commit 62a074e

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

drivers/gpu/drm/sysfb/simpledrm.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,12 @@ static int simpledrm_probe(struct platform_device *pdev)
845845
struct drm_device *dev;
846846
int ret;
847847

848+
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
849+
if (ret)
850+
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
851+
if (ret)
852+
return dev_err_probe(&pdev->dev, ret, "Failed to set dma mask\n");
853+
848854
sdev = simpledrm_device_create(&simpledrm_driver, pdev);
849855
if (IS_ERR(sdev))
850856
return PTR_ERR(sdev);

0 commit comments

Comments
 (0)