AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: Boris Brezillon <boris.brezillon@collabora.com>,
	Steven Price <steven.price@arm.com>
Cc: dri-devel@lists.freedesktop.org,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Faith Ekstrand" <faith.ekstrand@collabora.com>,
	"Thierry Reding" <thierry.reding@gmail.com>,
	"Mikko Perttunen" <mperttunen@nvidia.com>,
	"Melissa Wen" <mwen@igalia.com>,
	"Maíra Canal" <mcanal@igalia.com>,
	"Lucas De Marchi" <lucas.demarchi@intel.com>,
	"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
	"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
	"Frank Binns" <frank.binns@imgtec.com>,
	"Matt Coster" <matt.coster@imgtec.com>,
	"Rob Clark" <robin.clark@oss.qualcomm.com>,
	"Dmitry Baryshkov" <lumag@kernel.org>,
	"Abhinav Kumar" <abhinav.kumar@linux.dev>,
	"Jessica Zhang" <jessica.zhang@oss.qualcomm.com>,
	"Sean Paul" <sean@poorly.run>,
	"Marijn Suijten" <marijn.suijten@somainline.org>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	amd-gfx@lists.freedesktop.org, kernel@collabora.com
Subject: Re: [PATCH v6 00/16] drm/panfrost,panthor: Cached maps and explicit flushing
Date: Wed, 26 Nov 2025 17:20:08 +0100	[thread overview]
Message-ID: <bcba3b95-aa46-497a-b76f-e96455bf7ce8@suse.de> (raw)
In-Reply-To: <20251126124455.3656651-1-boris.brezillon@collabora.com>

Hi

Am 26.11.25 um 13:44 schrieb Boris Brezillon:
> This series implements cached maps and explicit flushing for both panfrost
> and panthor. To avoid code/bug duplication, the tricky guts of the cache
> flushing ioctl which walk the sg list are broken into a new common shmem
> helper which can be used by any driver.

Gem-shmem is getting more and more complicated. I think gem-shmem would 
be better off to be a simple implementation for all the drivers that use 
shadow buffering and software rendering. There are plenty of them. And 
drivers like the ones in sysfb/ are our failure-mode fallback. They 
should have non-complicated memory management wherever possible.

Therefore, could we first duplicate the existing gem-shmem code into 
gem-uma as we discussed recently on IRC? The changes are simple:

- copy the existing gem-shmem to gem-uma (plus renames)
- convert panthor and panfrost to the new interfaces

And on top of that, further improvements, such as the series at hand, 
could be done. Later we'd convert other drivers to gem-uma where it 
fits, such as lima.

Best regards
Thomas

>
> The PanVK MR to use this lives here:
>
> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36385
>
> The questions about the DMA-API based CPU-cache-flush mechanism used
> in this patchset have been dropped. After briefly discussing it with
> Sima and Robin, it seems there's a consensus on the fact we should
> probably expose CPU cache maintenance without going through the DMA
> API (extending drm_cache? providing MM helpers for CPU cache
> flush/invalidation? It's not clear yet how, but this will be discussed
> in a separate thread). In the meantime, we can rely on dma_sync because
> that's good enough for our usecase.
>
> 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
>
> Boris Brezillon (10):
>    drm/prime: Simplify life of drivers needing custom dma_buf_ops
>    drm/shmem: Provide a generic {begin,end}_cpu_access() implementation
>    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 (5):
>    drm/shmem: Add a drm_gem_shmem_sync() helper
>    drm/panthor: Bump the driver version to 1.6
>    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
>
>   drivers/gpu/drm/drm_gem_shmem_helper.c     | 207 +++++++++++++++++++++
>   drivers/gpu/drm/drm_prime.c                |  10 +-
>   drivers/gpu/drm/panfrost/panfrost_device.h |   1 +
>   drivers/gpu/drm/panfrost/panfrost_drv.c    | 101 +++++++++-
>   drivers/gpu/drm/panfrost/panfrost_gem.c    |  67 +++++++
>   drivers/gpu/drm/panfrost/panfrost_gem.h    |   9 +
>   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      |  71 ++++++-
>   drivers/gpu/drm/panthor/panthor_gem.h      |   4 +
>   drivers/gpu/drm/panthor/panthor_gpu.c      |   2 +-
>   drivers/gpu/drm/panthor/panthor_sched.c    |  18 +-
>   include/drm/drm_drv.h                      |   8 +
>   include/drm/drm_gem_shmem_helper.h         |  24 +++
>   include/uapi/drm/panfrost_drm.h            |  76 +++++++-
>   include/uapi/drm/panthor_drm.h             | 157 +++++++++++++++-
>   18 files changed, 857 insertions(+), 23 deletions(-)
>

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)



  parent reply	other threads:[~2025-11-26 16:20 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-26 12:44 [PATCH v6 00/16] drm/panfrost, panthor: Cached maps and explicit flushing Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 01/16] drm/prime: Simplify life of drivers needing custom dma_buf_ops Boris Brezillon
2025-11-26 16:20   ` Steven Price
2025-11-27  8:34   ` Thomas Zimmermann
2025-11-27  8:42     ` Thomas Zimmermann
2025-11-27  8:58       ` Thomas Zimmermann
2025-11-27 10:44         ` Boris Brezillon
2025-11-27 12:32           ` Boris Brezillon
2025-11-27 13:05             ` Boris Brezillon
2025-11-27 10:34       ` Boris Brezillon
2025-11-27 10:40     ` Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 02/16] drm/shmem: Provide a generic {begin, end}_cpu_access() implementation Boris Brezillon
2025-11-26 16:23   ` [PATCH v6 02/16] drm/shmem: Provide a generic {begin,end}_cpu_access() implementation Steven Price
2025-11-26 12:44 ` [PATCH v6 03/16] drm/shmem: Add a drm_gem_shmem_sync() helper Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 04/16] drm/panthor: Provide a custom dma_buf implementation Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 05/16] drm/panthor: Fix panthor_gpu_coherency_set() Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 06/16] drm/panthor: Expose the selected coherency protocol to the UMD Boris Brezillon
2025-11-26 13:25   ` Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 07/16] drm/panthor: Add a PANTHOR_BO_SYNC ioctl Boris Brezillon
2025-11-26 16:25   ` Steven Price
2025-11-26 12:44 ` [PATCH v6 08/16] drm/panthor: Add an ioctl to query BO flags Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 09/16] drm/panthor: Add flag to map GEM object Write-Back Cacheable Boris Brezillon
2025-11-26 16:27   ` Steven Price
2025-11-26 12:44 ` [PATCH v6 10/16] drm/panthor: Bump the driver version to 1.6 Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 11/16] drm/panfrost: Provide a custom dma_buf implementation Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 12/16] drm/panfrost: Expose the selected coherency protocol to the UMD Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 13/16] drm/panfrost: Add a PANFROST_SYNC_BO ioctl Boris Brezillon
2025-11-26 16:47   ` Steven Price
2025-11-26 12:44 ` [PATCH v6 14/16] drm/panfrost: Add an ioctl to query BO flags Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 15/16] drm/panfrost: Add flag to map GEM object Write-Back Cacheable Boris Brezillon
2025-11-26 12:44 ` [PATCH v6 16/16] drm/panfrost: Bump the driver version to 1.6 Boris Brezillon
2025-11-26 16:20 ` Thomas Zimmermann [this message]
2025-11-26 17:24   ` [PATCH v6 00/16] drm/panfrost,panthor: Cached maps and explicit flushing Boris Brezillon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bcba3b95-aa46-497a-b76f-e96455bf7ce8@suse.de \
    --to=tzimmermann@suse.de \
    --cc=abhinav.kumar@linux.dev \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=boris.brezillon@collabora.com \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=faith.ekstrand@collabora.com \
    --cc=frank.binns@imgtec.com \
    --cc=jessica.zhang@oss.qualcomm.com \
    --cc=kernel@collabora.com \
    --cc=lucas.demarchi@intel.com \
    --cc=lumag@kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=marijn.suijten@somainline.org \
    --cc=matt.coster@imgtec.com \
    --cc=mcanal@igalia.com \
    --cc=mperttunen@nvidia.com \
    --cc=mripard@kernel.org \
    --cc=mwen@igalia.com \
    --cc=robin.clark@oss.qualcomm.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=sean@poorly.run \
    --cc=simona@ffwll.ch \
    --cc=steven.price@arm.com \
    --cc=thierry.reding@gmail.com \
    --cc=thomas.hellstrom@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox