On 2025/6/30 22:34, Thomas Zimmermann wrote:
> The vast majority of drivers that use GEM-SHMEM helpers do not use
> an s/g table for imported buffers; specifically all drivers that use
> DRM_GEM_SHMEM_DRIVER_OPS. Therefore convert the initializer macro
> to DRM_GEM_SHMEM_DRIVER_OPS_NO_MAP_SGT and remove the latter. This
> helps to avoid swiotbl errors, such as seen with some Aspeed systems
> 
>   ast 0000:07:00.0: swiotlb buffer is full (sz: 3145728 bytes), total 32768 
> (slots), used 0 (slots)
> 
> The error is caused by the system's limited DMA capabilities and can
> happen with any GEM-SHMEM-based driver. It results in a performance
> penalty.
> 
> In the case of vgem and vkms, the devices do not support DMA at all,
> which can result in failure to map the buffer object into the kernel's
> address space. [1][2] Avoiding the s/g table fixes this problem.
> 
> The other drivers based on GEM-SHMEM, imagination, lima, panfrost,
> panthor, v3d and virtio, use the s/g table of imported buffers. Neither
> driver uses the default initializer, so they won't be affected by
> this change.
> 
> Signed-off-by: Thomas Zimmermann <[email protected]>
> Reported-by: Zenghui Yu <[email protected]>
> Closes: 
> https://lore.kernel.org/dri-devel/[email protected]/
>  # [1]
> Reported-by: José Expósito <[email protected]>
> Closes: 
> https://lore.kernel.org/dri-devel/[email protected]/
>  # [2]

Tested-by: Zenghui Yu <[email protected]>

Thanks!

Reply via email to