summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2019-06-14 16:35:25 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2019-06-21 11:30:49 -0400
commite4fa8457b2197118538a1400b75c898f9faaf164 (patch)
tree925aad65749c52c0b2832d914bf9865159ff5ea0
parent8b3026a74fa764d6ae42eb80fda5670876c6339a (diff)
drm/prime: Align gem_prime_export with obj_funcs.export
The idea is that gem_prime_export is deprecated in favor of obj_funcs.export. That's much easier to do if both have matching function signatures. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc: Zhi Wang <zhi.a.wang@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: "Christian König" <christian.koenig@amd.com> Cc: "David (ChunMing) Zhou" <David1.Zhou@amd.com> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Jonathan Hunter <jonathanh@nvidia.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Eric Anholt <eric@anholt.net> Cc: "Michel Dänzer" <michel.daenzer@amd.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Huang Rui <ray.huang@amd.com> Cc: Felix Kuehling <Felix.Kuehling@amd.com> Cc: Hawking Zhang <Hawking.Zhang@amd.com> Cc: Feifei Xu <Feifei.Xu@amd.com> Cc: Jim Qu <Jim.Qu@amd.com> Cc: Evan Quan <evan.quan@amd.com> Cc: Matthew Auld <matthew.auld@intel.com> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Cc: Thomas Zimmermann <tdz@users.sourceforge.net> Cc: Kate Stewart <kstewart@linuxfoundation.org> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Jilayne Lovejoy <opensource@jilayne.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Mikulas Patocka <mpatocka@redhat.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Junwei Zhang <Jerry.Zhang@amd.com> Cc: intel-gvt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org Cc: linux-tegra@vger.kernel.org Link: https://patchwork.freedesktop.org/patch/msgid/20190614203615.12639-10-daniel.vetter@ffwll.ch
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c7
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h3
-rw-r--r--drivers/gpu/drm/armada/armada_gem.c5
-rw-r--r--drivers/gpu/drm/armada/armada_gem.h3
-rw-r--r--drivers/gpu/drm/drm_prime.c9
-rw-r--r--drivers/gpu/drm/i915/gvt/dmabuf.c2
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h3
-rw-r--r--drivers/gpu/drm/i915/i915_gem_dmabuf.c5
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_dmabuf.c8
-rw-r--r--drivers/gpu/drm/omapdrm/omap_gem.h3
-rw-r--r--drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c5
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.c3
-rw-r--r--drivers/gpu/drm/radeon/radeon_prime.c5
-rw-r--r--drivers/gpu/drm/tegra/gem.c7
-rw-r--r--drivers/gpu/drm/tegra/gem.h3
-rw-r--r--drivers/gpu/drm/udl/udl_dmabuf.c5
-rw-r--r--drivers/gpu/drm/udl/udl_drv.h3
-rw-r--r--drivers/gpu/drm/vc4/vc4_bo.c5
-rw-r--r--drivers/gpu/drm/vc4/vc4_drv.h3
-rw-r--r--drivers/gpu/drm/vgem/vgem_fence.c2
-rw-r--r--include/drm/drm_drv.h4
-rw-r--r--include/drm/drm_prime.h3
22 files changed, 39 insertions, 57 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
index 489041df1f45..4809d4a5d72a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
@@ -345,8 +345,7 @@ const struct dma_buf_ops amdgpu_dmabuf_ops = {
345 * Returns: 345 * Returns:
346 * Shared DMA buffer representing the GEM BO from the given device. 346 * Shared DMA buffer representing the GEM BO from the given device.
347 */ 347 */
348struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, 348struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj,
349 struct drm_gem_object *gobj,
350 int flags) 349 int flags)
351{ 350{
352 struct amdgpu_bo *bo = gem_to_amdgpu_bo(gobj); 351 struct amdgpu_bo *bo = gem_to_amdgpu_bo(gobj);
@@ -356,9 +355,9 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
356 bo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) 355 bo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID)
357 return ERR_PTR(-EPERM); 356 return ERR_PTR(-EPERM);
358 357
359 buf = drm_gem_prime_export(dev, gobj, flags); 358 buf = drm_gem_prime_export(gobj, flags);
360 if (!IS_ERR(buf)) { 359 if (!IS_ERR(buf)) {
361 buf->file->f_mapping = dev->anon_inode->i_mapping; 360 buf->file->f_mapping = gobj->dev->anon_inode->i_mapping;
362 buf->ops = &amdgpu_dmabuf_ops; 361 buf->ops = &amdgpu_dmabuf_ops;
363 } 362 }
364 363
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
index c7056cbe8685..7f73a4f94204 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
@@ -30,8 +30,7 @@ struct drm_gem_object *
30amdgpu_gem_prime_import_sg_table(struct drm_device *dev, 30amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
31 struct dma_buf_attachment *attach, 31 struct dma_buf_attachment *attach,
32 struct sg_table *sg); 32 struct sg_table *sg);
33struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, 33struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj,
34 struct drm_gem_object *gobj,
35 int flags); 34 int flags);
36struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, 35struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev,
37 struct dma_buf *dma_buf); 36 struct dma_buf *dma_buf);
diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
index 642d0e70d0f8..7e7fcc3f1f7f 100644
--- a/drivers/gpu/drm/armada/armada_gem.c
+++ b/drivers/gpu/drm/armada/armada_gem.c
@@ -485,8 +485,7 @@ static const struct dma_buf_ops armada_gem_prime_dmabuf_ops = {
485}; 485};
486 486
487struct dma_buf * 487struct dma_buf *
488armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, 488armada_gem_prime_export(struct drm_gem_object *obj, int flags)
489 int flags)
490{ 489{
491 DEFINE_DMA_BUF_EXPORT_INFO(exp_info); 490 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
492 491
@@ -495,7 +494,7 @@ armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj,
495 exp_info.flags = O_RDWR; 494 exp_info.flags = O_RDWR;
496 exp_info.priv = obj; 495 exp_info.priv = obj;
497 496
498 return drm_gem_dmabuf_export(dev, &exp_info); 497 return drm_gem_dmabuf_export(obj->dev, &exp_info);
499} 498}
500 499
501struct drm_gem_object * 500struct drm_gem_object *
diff --git a/drivers/gpu/drm/armada/armada_gem.h b/drivers/gpu/drm/armada/armada_gem.h
index 1ac90792b166..c619381eeeff 100644
--- a/drivers/gpu/drm/armada/armada_gem.h
+++ b/drivers/gpu/drm/armada/armada_gem.h
@@ -35,8 +35,7 @@ struct armada_gem_object *armada_gem_alloc_private_object(struct drm_device *,
35 size_t); 35 size_t);
36int armada_gem_dumb_create(struct drm_file *, struct drm_device *, 36int armada_gem_dumb_create(struct drm_file *, struct drm_device *,
37 struct drm_mode_create_dumb *); 37 struct drm_mode_create_dumb *);
38struct dma_buf *armada_gem_prime_export(struct drm_device *dev, 38struct dma_buf *armada_gem_prime_export(struct drm_gem_object *obj, int flags);
39 struct drm_gem_object *obj, int flags);
40struct drm_gem_object *armada_gem_prime_import(struct drm_device *, 39struct drm_gem_object *armada_gem_prime_import(struct drm_device *,
41 struct dma_buf *); 40 struct dma_buf *);
42int armada_gem_map_import(struct armada_gem_object *); 41int armada_gem_map_import(struct armada_gem_object *);
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 1f100d5a323f..30377b53f5fa 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -384,9 +384,9 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev,
384 if (obj->funcs && obj->funcs->export) 384 if (obj->funcs && obj->funcs->export)
385 dmabuf = obj->funcs->export(obj, flags); 385 dmabuf = obj->funcs->export(obj, flags);
386 else if (dev->driver->gem_prime_export) 386 else if (dev->driver->gem_prime_export)
387 dmabuf = dev->driver->gem_prime_export(dev, obj, flags); 387 dmabuf = dev->driver->gem_prime_export(obj, flags);
388 else 388 else
389 dmabuf = drm_gem_prime_export(dev, obj, flags); 389 dmabuf = drm_gem_prime_export(obj, flags);
390 if (IS_ERR(dmabuf)) { 390 if (IS_ERR(dmabuf)) {
391 /* normally the created dma-buf takes ownership of the ref, 391 /* normally the created dma-buf takes ownership of the ref,
392 * but if that fails then drop the ref 392 * but if that fails then drop the ref
@@ -814,7 +814,6 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg);
814 814
815/** 815/**
816 * drm_gem_prime_export - helper library implementation of the export callback 816 * drm_gem_prime_export - helper library implementation of the export callback
817 * @dev: drm_device to export from
818 * @obj: GEM object to export 817 * @obj: GEM object to export
819 * @flags: flags like DRM_CLOEXEC and DRM_RDWR 818 * @flags: flags like DRM_CLOEXEC and DRM_RDWR
820 * 819 *
@@ -822,10 +821,10 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg);
822 * using the PRIME helpers. It is used as the default in 821 * using the PRIME helpers. It is used as the default in
823 * drm_gem_prime_handle_to_fd(). 822 * drm_gem_prime_handle_to_fd().
824 */ 823 */
825struct dma_buf *drm_gem_prime_export(struct drm_device *dev, 824struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
826 struct drm_gem_object *obj,
827 int flags) 825 int flags)
828{ 826{
827 struct drm_device *dev = obj->dev;
829 struct dma_buf_export_info exp_info = { 828 struct dma_buf_export_info exp_info = {
830 .exp_name = KBUILD_MODNAME, /* white lie for debug */ 829 .exp_name = KBUILD_MODNAME, /* white lie for debug */
831 .owner = dev->driver->fops->owner, 830 .owner = dev->driver->fops->owner,
diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.c b/drivers/gpu/drm/i915/gvt/dmabuf.c
index 41c8ebc60c63..13044c027f27 100644
--- a/drivers/gpu/drm/i915/gvt/dmabuf.c
+++ b/drivers/gpu/drm/i915/gvt/dmabuf.c
@@ -491,7 +491,7 @@ int intel_vgpu_get_dmabuf(struct intel_vgpu *vgpu, unsigned int dmabuf_id)
491 491
492 obj->gvt_info = dmabuf_obj->info; 492 obj->gvt_info = dmabuf_obj->info;
493 493
494 dmabuf = i915_gem_prime_export(dev, &obj->base, DRM_CLOEXEC | DRM_RDWR); 494 dmabuf = i915_gem_prime_export(&obj->base, DRM_CLOEXEC | DRM_RDWR);
495 if (IS_ERR(dmabuf)) { 495 if (IS_ERR(dmabuf)) {
496 gvt_vgpu_err("export dma-buf failed\n"); 496 gvt_vgpu_err("export dma-buf failed\n");
497 ret = PTR_ERR(dmabuf); 497 ret = PTR_ERR(dmabuf);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a2664ea1395b..ab0412b09f1c 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3085,8 +3085,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
3085struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, 3085struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev,
3086 struct dma_buf *dma_buf); 3086 struct dma_buf *dma_buf);
3087 3087
3088struct dma_buf *i915_gem_prime_export(struct drm_device *dev, 3088struct dma_buf *i915_gem_prime_export(struct drm_gem_object *gem_obj, int flags);
3089 struct drm_gem_object *gem_obj, int flags);
3090 3089
3091static inline struct i915_hw_ppgtt * 3090static inline struct i915_hw_ppgtt *
3092i915_vm_to_ppgtt(struct i915_address_space *vm) 3091i915_vm_to_ppgtt(struct i915_address_space *vm)
diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
index 5a101a9462d8..54ecab91b3a9 100644
--- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
+++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
@@ -224,8 +224,7 @@ static const struct dma_buf_ops i915_dmabuf_ops = {
224 .end_cpu_access = i915_gem_end_cpu_access, 224 .end_cpu_access = i915_gem_end_cpu_access,
225}; 225};
226 226
227struct dma_buf *i915_gem_prime_export(struct drm_device *dev, 227struct dma_buf *i915_gem_prime_export(struct drm_gem_object *gem_obj, int flags)
228 struct drm_gem_object *gem_obj, int flags)
229{ 228{
230 struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); 229 struct drm_i915_gem_object *obj = to_intel_bo(gem_obj);
231 DEFINE_DMA_BUF_EXPORT_INFO(exp_info); 230 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
@@ -242,7 +241,7 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
242 return ERR_PTR(ret); 241 return ERR_PTR(ret);
243 } 242 }
244 243
245 return drm_gem_dmabuf_export(dev, &exp_info); 244 return drm_gem_dmabuf_export(gem_obj->dev, &exp_info);
246} 245}
247 246
248static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) 247static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/selftests/i915_gem_dmabuf.c
index 2b943ee246c9..84eb978fe39f 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_dmabuf.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_dmabuf.c
@@ -37,7 +37,7 @@ static int igt_dmabuf_export(void *arg)
37 if (IS_ERR(obj)) 37 if (IS_ERR(obj))
38 return PTR_ERR(obj); 38 return PTR_ERR(obj);
39 39
40 dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0); 40 dmabuf = i915_gem_prime_export(&obj->base, 0);
41 i915_gem_object_put(obj); 41 i915_gem_object_put(obj);
42 if (IS_ERR(dmabuf)) { 42 if (IS_ERR(dmabuf)) {
43 pr_err("i915_gem_prime_export failed with err=%d\n", 43 pr_err("i915_gem_prime_export failed with err=%d\n",
@@ -61,7 +61,7 @@ static int igt_dmabuf_import_self(void *arg)
61 if (IS_ERR(obj)) 61 if (IS_ERR(obj))
62 return PTR_ERR(obj); 62 return PTR_ERR(obj);
63 63
64 dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0); 64 dmabuf = i915_gem_prime_export(&obj->base, 0);
65 if (IS_ERR(dmabuf)) { 65 if (IS_ERR(dmabuf)) {
66 pr_err("i915_gem_prime_export failed with err=%d\n", 66 pr_err("i915_gem_prime_export failed with err=%d\n",
67 (int)PTR_ERR(dmabuf)); 67 (int)PTR_ERR(dmabuf));
@@ -236,7 +236,7 @@ static int igt_dmabuf_export_vmap(void *arg)
236 if (IS_ERR(obj)) 236 if (IS_ERR(obj))
237 return PTR_ERR(obj); 237 return PTR_ERR(obj);
238 238
239 dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0); 239 dmabuf = i915_gem_prime_export(&obj->base, 0);
240 if (IS_ERR(dmabuf)) { 240 if (IS_ERR(dmabuf)) {
241 pr_err("i915_gem_prime_export failed with err=%d\n", 241 pr_err("i915_gem_prime_export failed with err=%d\n",
242 (int)PTR_ERR(dmabuf)); 242 (int)PTR_ERR(dmabuf));
@@ -283,7 +283,7 @@ static int igt_dmabuf_export_kmap(void *arg)
283 if (IS_ERR(obj)) 283 if (IS_ERR(obj))
284 return PTR_ERR(obj); 284 return PTR_ERR(obj);
285 285
286 dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0); 286 dmabuf = i915_gem_prime_export(&obj->base, 0);
287 i915_gem_object_put(obj); 287 i915_gem_object_put(obj);
288 if (IS_ERR(dmabuf)) { 288 if (IS_ERR(dmabuf)) {
289 err = PTR_ERR(dmabuf); 289 err = PTR_ERR(dmabuf);
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.h b/drivers/gpu/drm/omapdrm/omap_gem.h
index c1c45fbde155..ee0f217cf59d 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.h
+++ b/drivers/gpu/drm/omapdrm/omap_gem.h
@@ -76,8 +76,7 @@ u64 omap_gem_mmap_offset(struct drm_gem_object *obj);
76size_t omap_gem_mmap_size(struct drm_gem_object *obj); 76size_t omap_gem_mmap_size(struct drm_gem_object *obj);
77 77
78/* PRIME Interface */ 78/* PRIME Interface */
79struct dma_buf *omap_gem_prime_export(struct drm_device *dev, 79struct dma_buf *omap_gem_prime_export(struct drm_gem_object *obj, int flags);
80 struct drm_gem_object *obj, int flags);
81struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev, 80struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev,
82 struct dma_buf *buffer); 81 struct dma_buf *buffer);
83 82
diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
index 0f8b597ccd10..7e7ad275e3cf 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
@@ -136,8 +136,7 @@ static const struct dma_buf_ops omap_dmabuf_ops = {
136 .mmap = omap_gem_dmabuf_mmap, 136 .mmap = omap_gem_dmabuf_mmap,
137}; 137};
138 138
139struct dma_buf *omap_gem_prime_export(struct drm_device *dev, 139struct dma_buf *omap_gem_prime_export(struct drm_gem_object *obj, int flags)
140 struct drm_gem_object *obj, int flags)
141{ 140{
142 DEFINE_DMA_BUF_EXPORT_INFO(exp_info); 141 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
143 142
@@ -146,7 +145,7 @@ struct dma_buf *omap_gem_prime_export(struct drm_device *dev,
146 exp_info.flags = flags; 145 exp_info.flags = flags;
147 exp_info.priv = obj; 146 exp_info.priv = obj;
148 147
149 return drm_gem_dmabuf_export(dev, &exp_info); 148 return drm_gem_dmabuf_export(obj->dev, &exp_info);
150} 149}
151 150
152/* ----------------------------------------------------------------------------- 151/* -----------------------------------------------------------------------------
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 3b07aa6e551d..4a6acaa3f843 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -130,8 +130,7 @@ int radeon_gem_object_open(struct drm_gem_object *obj,
130 struct drm_file *file_priv); 130 struct drm_file *file_priv);
131void radeon_gem_object_close(struct drm_gem_object *obj, 131void radeon_gem_object_close(struct drm_gem_object *obj,
132 struct drm_file *file_priv); 132 struct drm_file *file_priv);
133struct dma_buf *radeon_gem_prime_export(struct drm_device *dev, 133struct dma_buf *radeon_gem_prime_export(struct drm_gem_object *gobj,
134 struct drm_gem_object *gobj,
135 int flags); 134 int flags);
136extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc, 135extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
137 unsigned int flags, int *vpos, int *hpos, 136 unsigned int flags, int *vpos, int *hpos,
diff --git a/drivers/gpu/drm/radeon/radeon_prime.c b/drivers/gpu/drm/radeon/radeon_prime.c
index d3a5bea9a2c5..deaffce50a2e 100644
--- a/drivers/gpu/drm/radeon/radeon_prime.c
+++ b/drivers/gpu/drm/radeon/radeon_prime.c
@@ -124,12 +124,11 @@ struct reservation_object *radeon_gem_prime_res_obj(struct drm_gem_object *obj)
124 return bo->tbo.resv; 124 return bo->tbo.resv;
125} 125}
126 126
127struct dma_buf *radeon_gem_prime_export(struct drm_device *dev, 127struct dma_buf *radeon_gem_prime_export(struct drm_gem_object *gobj,
128 struct drm_gem_object *gobj,
129 int flags) 128 int flags)
130{ 129{
131 struct radeon_bo *bo = gem_to_radeon_bo(gobj); 130 struct radeon_bo *bo = gem_to_radeon_bo(gobj);
132 if (radeon_ttm_tt_has_userptr(bo->tbo.ttm)) 131 if (radeon_ttm_tt_has_userptr(bo->tbo.ttm))
133 return ERR_PTR(-EPERM); 132 return ERR_PTR(-EPERM);
134 return drm_gem_prime_export(dev, gobj, flags); 133 return drm_gem_prime_export(gobj, flags);
135} 134}
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
index 4cce11fd8836..fd5e9c3a2789 100644
--- a/drivers/gpu/drm/tegra/gem.c
+++ b/drivers/gpu/drm/tegra/gem.c
@@ -629,20 +629,19 @@ static const struct dma_buf_ops tegra_gem_prime_dmabuf_ops = {
629 .vunmap = tegra_gem_prime_vunmap, 629 .vunmap = tegra_gem_prime_vunmap,
630}; 630};
631 631
632struct dma_buf *tegra_gem_prime_export(struct drm_device *drm, 632struct dma_buf *tegra_gem_prime_export(struct drm_gem_object *gem,
633 struct drm_gem_object *gem,
634 int flags) 633 int flags)
635{ 634{
636 DEFINE_DMA_BUF_EXPORT_INFO(exp_info); 635 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
637 636
638 exp_info.exp_name = KBUILD_MODNAME; 637 exp_info.exp_name = KBUILD_MODNAME;
639 exp_info.owner = drm->driver->fops->owner; 638 exp_info.owner = gem->dev->driver->fops->owner;
640 exp_info.ops = &tegra_gem_prime_dmabuf_ops; 639 exp_info.ops = &tegra_gem_prime_dmabuf_ops;
641 exp_info.size = gem->size; 640 exp_info.size = gem->size;
642 exp_info.flags = flags; 641 exp_info.flags = flags;
643 exp_info.priv = gem; 642 exp_info.priv = gem;
644 643
645 return drm_gem_dmabuf_export(drm, &exp_info); 644 return drm_gem_dmabuf_export(gem->dev, &exp_info);
646} 645}
647 646
648struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm, 647struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm,
diff --git a/drivers/gpu/drm/tegra/gem.h b/drivers/gpu/drm/tegra/gem.h
index 6bd7dd7e55b4..85ebf83c7e43 100644
--- a/drivers/gpu/drm/tegra/gem.h
+++ b/drivers/gpu/drm/tegra/gem.h
@@ -73,8 +73,7 @@ extern const struct vm_operations_struct tegra_bo_vm_ops;
73int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma); 73int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma);
74int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma); 74int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma);
75 75
76struct dma_buf *tegra_gem_prime_export(struct drm_device *drm, 76struct dma_buf *tegra_gem_prime_export(struct drm_gem_object *gem,
77 struct drm_gem_object *gem,
78 int flags); 77 int flags);
79struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm, 78struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm,
80 struct dma_buf *buf); 79 struct dma_buf *buf);
diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
index a28892146f7c..10a60e7e93d6 100644
--- a/drivers/gpu/drm/udl/udl_dmabuf.c
+++ b/drivers/gpu/drm/udl/udl_dmabuf.c
@@ -170,8 +170,7 @@ static const struct dma_buf_ops udl_dmabuf_ops = {
170 .release = drm_gem_dmabuf_release, 170 .release = drm_gem_dmabuf_release,
171}; 171};
172 172
173struct dma_buf *udl_gem_prime_export(struct drm_device *dev, 173struct dma_buf *udl_gem_prime_export(struct drm_gem_object *obj, int flags)
174 struct drm_gem_object *obj, int flags)
175{ 174{
176 DEFINE_DMA_BUF_EXPORT_INFO(exp_info); 175 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
177 176
@@ -180,7 +179,7 @@ struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
180 exp_info.flags = flags; 179 exp_info.flags = flags;
181 exp_info.priv = obj; 180 exp_info.priv = obj;
182 181
183 return drm_gem_dmabuf_export(dev, &exp_info); 182 return drm_gem_dmabuf_export(obj->dev, &exp_info);
184} 183}
185 184
186static int udl_prime_create(struct drm_device *dev, 185static int udl_prime_create(struct drm_device *dev,
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index a928801026c1..9d0790be544f 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -126,8 +126,7 @@ int udl_gem_mmap(struct drm_file *file_priv, struct drm_device *dev,
126void udl_gem_free_object(struct drm_gem_object *gem_obj); 126void udl_gem_free_object(struct drm_gem_object *gem_obj);
127struct udl_gem_object *udl_gem_alloc_object(struct drm_device *dev, 127struct udl_gem_object *udl_gem_alloc_object(struct drm_device *dev,
128 size_t size); 128 size_t size);
129struct dma_buf *udl_gem_prime_export(struct drm_device *dev, 129struct dma_buf *udl_gem_prime_export(struct drm_gem_object *obj, int flags);
130 struct drm_gem_object *obj, int flags);
131struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev, 130struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev,
132 struct dma_buf *dma_buf); 131 struct dma_buf *dma_buf);
133 132
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index 1434bb829267..b0f9eb6632a2 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -658,8 +658,7 @@ static void vc4_bo_cache_time_timer(struct timer_list *t)
658 schedule_work(&vc4->bo_cache.time_work); 658 schedule_work(&vc4->bo_cache.time_work);
659} 659}
660 660
661struct dma_buf * 661struct dma_buf * vc4_prime_export(struct drm_gem_object *obj, int flags)
662vc4_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags)
663{ 662{
664 struct vc4_bo *bo = to_vc4_bo(obj); 663 struct vc4_bo *bo = to_vc4_bo(obj);
665 struct dma_buf *dmabuf; 664 struct dma_buf *dmabuf;
@@ -681,7 +680,7 @@ vc4_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags)
681 return ERR_PTR(ret); 680 return ERR_PTR(ret);
682 } 681 }
683 682
684 dmabuf = drm_gem_prime_export(dev, obj, flags); 683 dmabuf = drm_gem_prime_export(obj, flags);
685 if (IS_ERR(dmabuf)) 684 if (IS_ERR(dmabuf))
686 vc4_bo_dec_usecnt(bo); 685 vc4_bo_dec_usecnt(bo);
687 686
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
index 9170a24ec5f5..efd1ec3430f5 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -708,8 +708,7 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t size,
708int vc4_dumb_create(struct drm_file *file_priv, 708int vc4_dumb_create(struct drm_file *file_priv,
709 struct drm_device *dev, 709 struct drm_device *dev,
710 struct drm_mode_create_dumb *args); 710 struct drm_mode_create_dumb *args);
711struct dma_buf *vc4_prime_export(struct drm_device *dev, 711struct dma_buf *vc4_prime_export(struct drm_gem_object *obj, int flags);
712 struct drm_gem_object *obj, int flags);
713int vc4_create_bo_ioctl(struct drm_device *dev, void *data, 712int vc4_create_bo_ioctl(struct drm_device *dev, void *data,
714 struct drm_file *file_priv); 713 struct drm_file *file_priv);
715int vc4_create_shader_bo_ioctl(struct drm_device *dev, void *data, 714int vc4_create_shader_bo_ioctl(struct drm_device *dev, void *data,
diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c
index eb17c0cd3727..72d43d5ec5ab 100644
--- a/drivers/gpu/drm/vgem/vgem_fence.c
+++ b/drivers/gpu/drm/vgem/vgem_fence.c
@@ -108,7 +108,7 @@ static int attach_dmabuf(struct drm_device *dev,
108 if (obj->dma_buf) 108 if (obj->dma_buf)
109 return 0; 109 return 0;
110 110
111 dmabuf = dev->driver->gem_prime_export(dev, obj, 0); 111 dmabuf = dev->driver->gem_prime_export(obj, 0);
112 if (IS_ERR(dmabuf)) 112 if (IS_ERR(dmabuf))
113 return PTR_ERR(dmabuf); 113 return PTR_ERR(dmabuf);
114 114
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 86a10c25ad0f..b33f2cee2099 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -581,8 +581,8 @@ struct drm_driver {
581 * Export hook for GEM drivers. Deprecated in favour of 581 * Export hook for GEM drivers. Deprecated in favour of
582 * &drm_gem_object_funcs.export. 582 * &drm_gem_object_funcs.export.
583 */ 583 */
584 struct dma_buf * (*gem_prime_export)(struct drm_device *dev, 584 struct dma_buf * (*gem_prime_export)(struct drm_gem_object *obj,
585 struct drm_gem_object *obj, int flags); 585 int flags);
586 /** 586 /**
587 * @gem_prime_import: 587 * @gem_prime_import:
588 * 588 *
diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h
index ee32b07f3eb0..d89311b822d5 100644
--- a/include/drm/drm_prime.h
+++ b/include/drm/drm_prime.h
@@ -91,8 +91,7 @@ int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
91int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma); 91int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma);
92 92
93struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages); 93struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages);
94struct dma_buf *drm_gem_prime_export(struct drm_device *dev, 94struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
95 struct drm_gem_object *obj,
96 int flags); 95 int flags);
97 96
98/* helper functions for importing */ 97/* helper functions for importing */