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!
