On Mon, 8 Dec 2025 11:08:27 +0100 Boris Brezillon <[email protected]> wrote:
> This series implements cached maps and explicit flushing for both panfrost > and panthor. > > The PanVK MR to use this lives here: > > https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36385 > > This version moves away from the code sharing proposed at the > drm_prime/gem_shmem level and hand-roll a bunch of things that > could potentially be shared. The goal here is to take the path > of least resistance and discuss this controversial code-sharing > topic in a follow-up MR. Dropping driver maintainers Cc-ed on v7 > since they should now be aware that we changed gears and hand-rolled > our own thing in pan{thor,frost}. > > Changes in v2: > - Expose the coherency so userspace can know when it should skip cache > maintenance > - Hook things up at drm_gem_object_funcs level to dma-buf cpu_prep hooks > can be implemented generically > - Revisit the semantics of the flags passed to gem_sync() > - Add BO_QUERY_INFO ioctls to query BO flags on imported objects and > let the UMD know when cache maintenance is needed on those > > Changes in v3: > - New patch to fix panthor_gpu_coherency_set() > - No other major changes, check each patch changelog for more details > > Changes in v4: > - Two trivial fixes, check each patch changelog for more details > > Changes in v5: > - Add a way to overload dma_buf_ops while still relying on the drm_prime > boilerplate > - Add default shmem implementation for > dma_buf_ops::{begin,end}_cpu_access() > - Provide custom dma_buf_ops to deal with CPU cache flushes around CPU > accesses when the BO is CPU-cacheable > - Go back to a version of drm_gem_shmem_sync() that only deals with > cache maintenance, and adjust the semantics to make it clear this is > the only thing it cares about > - Adjust the BO_SYNC ioctls according to the new drm_gem_shmem_sync() > semantics > > Changes in v6: > - No major changes, check the changelog in each patch for more details > > Changes in v7: > - Drop the drm_prime/gem_shmem helpers and duplicate the logic in > panthor/panfrost > > Changes in v8: > - Fix a double struct field assignment and collect R-b tags > > Boris Brezillon (8): > drm/panthor: Provide a custom dma_buf implementation > drm/panthor: Fix panthor_gpu_coherency_set() > drm/panthor: Expose the selected coherency protocol to the UMD > drm/panthor: Add a PANTHOR_BO_SYNC ioctl > drm/panthor: Add an ioctl to query BO flags > drm/panfrost: Provide a custom dma_buf implementation > drm/panfrost: Expose the selected coherency protocol to the UMD > drm/panfrost: Add an ioctl to query BO flags > > Faith Ekstrand (4): > drm/panthor: Bump the driver version to 1.7 > drm/panfrost: Add a PANFROST_SYNC_BO ioctl > drm/panfrost: Add flag to map GEM object Write-Back Cacheable > drm/panfrost: Bump the driver version to 1.6 > > Loïc Molinari (1): > drm/panthor: Add flag to map GEM object Write-Back Cacheable Queued to drm-misc-next. > > drivers/gpu/drm/panfrost/panfrost_device.h | 1 + > drivers/gpu/drm/panfrost/panfrost_drv.c | 101 ++++++++- > drivers/gpu/drm/panfrost/panfrost_gem.c | 239 ++++++++++++++++++++ > drivers/gpu/drm/panfrost/panfrost_gem.h | 10 + > drivers/gpu/drm/panfrost/panfrost_gpu.c | 26 ++- > drivers/gpu/drm/panfrost/panfrost_regs.h | 10 +- > drivers/gpu/drm/panthor/panthor_device.c | 10 +- > drivers/gpu/drm/panthor/panthor_drv.c | 79 ++++++- > drivers/gpu/drm/panthor/panthor_gem.c | 240 ++++++++++++++++++++- > drivers/gpu/drm/panthor/panthor_gem.h | 6 + > drivers/gpu/drm/panthor/panthor_gpu.c | 2 +- > drivers/gpu/drm/panthor/panthor_sched.c | 18 +- > include/uapi/drm/panfrost_drm.h | 76 ++++++- > include/uapi/drm/panthor_drm.h | 157 +++++++++++++- > 14 files changed, 953 insertions(+), 22 deletions(-) >
