Re: [PATCH 1/3] drm/prime: forward begin_cpu_access callback to drivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 20.12.2017 um 20:43 schrieb Daniel Vetter:
On Wed, Dec 20, 2017 at 6:20 PM, Li, Samuel <Samuel.Li@xxxxxxx> wrote:
Ping... can someone please review this patch?
Might be simpler to implement your own dma-buf backend instead of
going through the drm_prime midlayer. That was mostly written to give
nvidia a set of non-EXPORT_GPL symbols to support dma-buf. Or
something like that.

Ah, that explains that. Well the alternative Sam suggest was to export most of the functions implementing that.

But then we have a hard time having a common detection logic if a DMA-buf has a GEM object behind it or not.

Also don't expect people to look at patches when CI bots spot issues.

That is either a false positive or a one liner.

Regards,
Christian.

-Daniel

Samuel Li



-----Original Message-----
From: amd-gfx [mailto:amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf
Of Samuel Li
Sent: Friday, December 15, 2017 11:28 AM
To: dri-devel@xxxxxxxxxxxxxxxxxxxxx; amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Koenig, Christian <Christian.Koenig@xxxxxxx>
Subject: [PATCH 1/3] drm/prime: forward begin_cpu_access callback to
drivers

From: Christian König <christian.koenig@xxxxxxx>

Allow drivers to implement their own begin_cpu_access callback.

Change-Id: I97709b42b9351a04ee7e01106107a87bc56ea258
Signed-off-by: Christian König <christian.koenig@xxxxxxx>
---
  drivers/gpu/drm/drm_prime.c | 13 +++++++++++++
  include/drm/drm_drv.h       |  2 ++
  2 files changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 8de93a2..b4b0e64 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -346,6 +346,18 @@ void drm_gem_dmabuf_release(struct dma_buf
*dma_buf)  }  EXPORT_SYMBOL(drm_gem_dmabuf_release);

+static int drm_gem_dmabuf_begin_cpu_access(struct dma_buf *dma_buf,
+                                         enum dma_data_direction
direction) {
+     struct drm_gem_object *obj = dma_buf->priv;
+     struct drm_device *dev = obj->dev;
+
+     if (!dev->driver->gem_prime_begin_cpu_access)
+             return 0;
+
+     return dev->driver->gem_prime_begin_cpu_access(obj, direction); }
+
  static void *drm_gem_dmabuf_vmap(struct dma_buf *dma_buf)  {
       struct drm_gem_object *obj = dma_buf->priv; @@ -403,6 +415,7
@@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops =  {
       .map_dma_buf = drm_gem_map_dma_buf,
       .unmap_dma_buf = drm_gem_unmap_dma_buf,
       .release = drm_gem_dmabuf_release,
+     .begin_cpu_access = drm_gem_dmabuf_begin_cpu_access,
       .map = drm_gem_dmabuf_kmap,
       .map_atomic = drm_gem_dmabuf_kmap_atomic,
       .unmap = drm_gem_dmabuf_kunmap,
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index
412e83a..1fbf298 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -475,6 +475,8 @@ struct drm_driver {
                               struct drm_device *dev,
                               struct dma_buf_attachment *attach,
                               struct sg_table *sgt);
+     int (*gem_prime_begin_cpu_access)(struct drm_gem_object *obj,
+                                        enum dma_data_direction
direction);
       void *(*gem_prime_vmap)(struct drm_gem_object *obj);
       void (*gem_prime_vunmap)(struct drm_gem_object *obj, void
*vaddr);
       int (*gem_prime_mmap)(struct drm_gem_object *obj,
--
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel



_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux