Skip to content

Commit b7b59ed

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 f5ca3aa commit b7b59ed

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
@@ -839,6 +839,12 @@ static int simpledrm_probe(struct platform_device *pdev)
839839
struct drm_device *dev;
840840
int ret;
841841

842+
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
843+
if (ret)
844+
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
845+
if (ret)
846+
return dev_err_probe(&pdev->dev, ret, "Failed to set dma mask\n");
847+
842848
sdev = simpledrm_device_create(&simpledrm_driver, pdev);
843849
if (IS_ERR(sdev))
844850
return PTR_ERR(sdev);

0 commit comments

Comments
 (0)