From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E4173CE8D4F for ; Fri, 14 Nov 2025 16:17:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 79DB710EAC0; Fri, 14 Nov 2025 16:17:41 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by gabe.freedesktop.org (Postfix) with ESMTP id 9637F10EABF; Fri, 14 Nov 2025 16:17:39 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5B06B1063; Fri, 14 Nov 2025 08:17:31 -0800 (PST) Received: from [10.1.39.17] (e122027.cambridge.arm.com [10.1.39.17]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CAAF33F5A1; Fri, 14 Nov 2025 08:17:33 -0800 (PST) Message-ID: Date: Fri, 14 Nov 2025 16:17:31 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 11/16] drm/panfrost: Provide a custom dma_buf implementation To: Boris Brezillon Cc: dri-devel@lists.freedesktop.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , Thierry Reding , Mikko Perttunen , Melissa Wen , =?UTF-8?Q?Ma=C3=ADra_Canal?= , Lucas De Marchi , =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , Frank Binns , Matt Coster , Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , Alex Deucher , =?UTF-8?Q?Christian_K=C3=B6nig?= , amd-gfx@lists.freedesktop.org, kernel@collabora.com References: <20251030140525.366636-1-boris.brezillon@collabora.com> <20251030140525.366636-12-boris.brezillon@collabora.com> From: Steven Price Content-Language: en-GB In-Reply-To: <20251030140525.366636-12-boris.brezillon@collabora.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" On 30/10/2025 14:05, Boris Brezillon wrote: > Before we introduce cached CPU mappings, we want a dma_buf > implementation satisfying synchronization requests around CPU > accesses coming from a dma_buf exported by our driver. Let's > provide our own implementation relying on the default > gem_shmem_prime helpers designed for that purpose. > > v5: > - New patch > > Signed-off-by: Boris Brezillon Reviewed-by: Steven Price > --- > drivers/gpu/drm/panfrost/panfrost_drv.c | 1 + > drivers/gpu/drm/panfrost/panfrost_gem.c | 19 +++++++++++++++++++ > drivers/gpu/drm/panfrost/panfrost_gem.h | 2 ++ > 3 files changed, 22 insertions(+) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c > index 1c3c574cd64a..e3cdc0c95a56 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c > @@ -852,6 +852,7 @@ static const struct drm_driver panfrost_drm_driver = { > > .gem_create_object = panfrost_gem_create_object, > .gem_prime_import_sg_table = panfrost_gem_prime_import_sg_table, > + .gem_prime_get_dma_buf_ops = panfrost_gem_prime_get_dma_buf_ops, > #ifdef CONFIG_DEBUG_FS > .debugfs_init = panfrost_debugfs_init, > #endif > diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c > index 0528de674a4f..070ea7108af6 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_gem.c > +++ b/drivers/gpu/drm/panfrost/panfrost_gem.c > @@ -323,6 +323,25 @@ panfrost_gem_create(struct drm_device *dev, size_t size, u32 flags) > return bo; > } > > +static const struct dma_buf_ops panfrost_dma_buf_ops = { > + .attach = drm_gem_map_attach, > + .detach = drm_gem_map_detach, > + .map_dma_buf = drm_gem_shmem_prime_map_dma_buf, > + .unmap_dma_buf = drm_gem_shmem_prime_unmap_dma_buf, > + .release = drm_gem_dmabuf_release, > + .mmap = drm_gem_dmabuf_mmap, > + .vmap = drm_gem_dmabuf_vmap, > + .vunmap = drm_gem_dmabuf_vunmap, > + .begin_cpu_access = drm_gem_shmem_prime_begin_cpu_access, > + .end_cpu_access = drm_gem_shmem_prime_end_cpu_access, > +}; > + > +const struct dma_buf_ops * > +panfrost_gem_prime_get_dma_buf_ops(struct drm_device *dev) > +{ > + return &panfrost_dma_buf_ops; > +} > + > struct drm_gem_object * > panfrost_gem_prime_import_sg_table(struct drm_device *dev, > struct dma_buf_attachment *attach, > diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.h b/drivers/gpu/drm/panfrost/panfrost_gem.h > index 8de3e76f2717..c63264464271 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_gem.h > +++ b/drivers/gpu/drm/panfrost/panfrost_gem.h > @@ -130,6 +130,8 @@ struct drm_gem_object * > panfrost_gem_prime_import_sg_table(struct drm_device *dev, > struct dma_buf_attachment *attach, > struct sg_table *sgt); > +const struct dma_buf_ops * > +panfrost_gem_prime_get_dma_buf_ops(struct drm_device *dev); > > struct panfrost_gem_object * > panfrost_gem_create(struct drm_device *dev, size_t size, u32 flags);