@@ -121,5 +121,6 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm))
return ERR_PTR(-EPERM);
- return drm_gem_prime_export(dev, gobj, flags);
+ return drm_gem_prime_export(dev, gobj, flags,
+ THIS_MODULE, KBUILD_MODNAME);
}
@@ -164,6 +164,8 @@ static int arcpgu_unload(struct drm_device *drm)
return 0;
}
+static DRM_GEM_PRIME_EXPORT(arcgpu_gem_prime_export)
+
static struct drm_driver arcpgu_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
DRIVER_ATOMIC,
@@ -183,7 +185,7 @@ static struct drm_driver arcpgu_drm_driver = {
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_free_object_unlocked = drm_gem_cma_free_object,
.gem_vm_ops = &drm_gem_cma_vm_ops,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = arcgpu_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
@@ -277,6 +277,8 @@ static const struct file_operations fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(hdlcd_gem_prime_export)
+
static struct drm_driver hdlcd_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM |
DRIVER_MODESET | DRIVER_PRIME |
@@ -296,7 +298,7 @@ static struct drm_driver hdlcd_driver = {
.dumb_destroy = drm_gem_dumb_destroy,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = hdlcd_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
@@ -206,6 +206,8 @@ static const struct file_operations fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(malidp_gem_prime_export)
+
static struct drm_driver malidp_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
DRIVER_PRIME,
@@ -220,7 +222,7 @@ static struct drm_driver malidp_driver = {
.dumb_destroy = drm_gem_dumb_destroy,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = malidp_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
@@ -757,6 +757,8 @@ static const struct file_operations fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(atmel_gem_prime_export)
+
static struct drm_driver atmel_hlcdc_dc_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM |
DRIVER_MODESET | DRIVER_PRIME |
@@ -774,7 +776,7 @@ static struct drm_driver atmel_hlcdc_dc_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = atmel_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -392,15 +392,23 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = {
* @dev: drm_device to export from
* @obj: GEM object to export
* @flags: flags like DRM_CLOEXEC and DRM_RDWR
+ * @owner: module that owns the backing storage and dmabuf operations,
+ * pass THIS_MODULE
+ * @name: name of the owner, pass KBUILD_MODNAME
*
* This is the implementation of the gem_prime_export functions for GEM drivers
* using the PRIME helpers.
*/
struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
- struct drm_gem_object *obj, int flags)
+ struct drm_gem_object *obj,
+ int flags,
+ struct module *owner,
+ const char *name)
{
- DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
+ struct dma_buf_export_info exp_info;
+ exp_info.exp_name = name;
+ exp_info.owner = owner;
exp_info.ops = &drm_gem_prime_dmabuf_ops;
exp_info.size = obj->size;
exp_info.flags = flags;
@@ -487,6 +487,8 @@ static const struct file_operations fops = {
.mmap = etnaviv_gem_mmap,
};
+static DRM_GEM_PRIME_EXPORT(rockchip_gem_prime_export)
+
static struct drm_driver etnaviv_drm_driver = {
.driver_features = DRIVER_GEM |
DRIVER_PRIME |
@@ -497,7 +499,7 @@ static struct drm_driver etnaviv_drm_driver = {
.gem_vm_ops = &vm_ops,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = etaniv_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_pin = etnaviv_gem_prime_pin,
.gem_prime_unpin = etnaviv_gem_prime_unpin,
@@ -393,6 +393,8 @@ static const struct file_operations exynos_drm_driver_fops = {
.release = drm_release,
};
+static DRM_GEM_PRIME_EXPORT(exynos_gem_prime_export)
+
static struct drm_driver exynos_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME
| DRIVER_ATOMIC | DRIVER_RENDER,
@@ -412,7 +414,7 @@ static struct drm_driver exynos_drm_driver = {
.dumb_destroy = drm_gem_dumb_destroy,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = exynos_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = exynos_drm_gem_prime_get_sg_table,
.gem_prime_import_sg_table = exynos_drm_gem_prime_import_sg_table,
@@ -189,6 +189,8 @@ static const struct file_operations fsl_dcu_drm_fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(fsl_gem_prime_export)
+
static struct drm_driver fsl_dcu_drm_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET
| DRIVER_PRIME | DRIVER_ATOMIC,
@@ -204,7 +206,7 @@ static struct drm_driver fsl_dcu_drm_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = fsl_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -167,6 +167,8 @@ static int kirin_gem_cma_dumb_create(struct drm_file *file,
return drm_gem_cma_dumb_create_internal(file, dev, args);
}
+static DRM_GEM_PRIME_EXPORT(kirin_gem_prime_export)
+
static struct drm_driver kirin_drm_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
DRIVER_ATOMIC,
@@ -180,7 +182,7 @@ static struct drm_driver kirin_drm_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = kirin_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
@@ -297,6 +297,8 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
/* none so far */
};
+static DRM_GEM_PRIME_EXPORT(imx_gem_prime_export)
+
static struct drm_driver imx_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
DRIVER_ATOMIC,
@@ -310,7 +312,7 @@ static struct drm_driver imx_drm_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = imx_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -252,6 +252,8 @@ static const struct file_operations mtk_drm_fops = {
#endif
};
+static DRM_GEM_PRIME_EXPORT(mtk_gem_prime_export)
+
static struct drm_driver mtk_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
DRIVER_ATOMIC,
@@ -268,7 +270,7 @@ static struct drm_driver mtk_drm_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = mtk_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = mtk_gem_prime_get_sg_table,
.gem_prime_import_sg_table = mtk_gem_prime_import_sg_table,
@@ -775,6 +775,8 @@ static const struct file_operations fops = {
.mmap = msm_gem_mmap,
};
+static DRM_GEM_PRIME_EXPORT(msm_gem_prime_export)
+
static struct drm_driver msm_driver = {
.driver_features = DRIVER_HAVE_IRQ |
DRIVER_GEM |
@@ -799,7 +801,7 @@ static struct drm_driver msm_driver = {
.dumb_destroy = drm_gem_dumb_destroy,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = msm_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_pin = msm_gem_prime_pin,
.gem_prime_unpin = msm_gem_prime_unpin,
@@ -941,6 +941,8 @@ nouveau_driver_fops = {
.llseek = noop_llseek,
};
+static DRM_GEM_PRIME_EXPORT(nouveau_gem_prime_export)
+
static struct drm_driver
driver_stub = {
.driver_features =
@@ -971,7 +973,7 @@ driver_stub = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = nouveau_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_pin = nouveau_gem_prime_pin,
.gem_prime_res_obj = nouveau_gem_prime_res_obj,
@@ -227,6 +227,8 @@ static struct pci_driver qxl_pci_driver = {
.driver.pm = &qxl_pm_ops,
};
+static DRM_GEM_PRIME_EXPORT(qxl_gem_prime_export)
+
static struct drm_driver qxl_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
@@ -247,7 +249,7 @@ static struct drm_driver qxl_driver = {
#endif
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = qxl_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_pin = qxl_gem_prime_pin,
.gem_prime_unpin = qxl_gem_prime_unpin,
@@ -123,5 +123,6 @@ struct dma_buf *radeon_gem_prime_export(struct drm_device *dev,
struct radeon_bo *bo = gem_to_radeon_bo(gobj);
if (radeon_ttm_tt_has_userptr(bo->tbo.ttm))
return ERR_PTR(-EPERM);
- return drm_gem_prime_export(dev, gobj, flags);
+ return drm_gem_prime_export(dev, gobj, flags,
+ THIS_MODULE, KBUILD_MODNAME);
}
@@ -210,6 +210,8 @@ static const struct file_operations rcar_du_fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(rcar_gem_prime_export)
+
static struct drm_driver rcar_du_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME
| DRIVER_ATOMIC,
@@ -222,7 +224,7 @@ static struct drm_driver rcar_du_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = rcar_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -280,6 +280,8 @@ static const struct file_operations rockchip_drm_driver_fops = {
.release = drm_release,
};
+static DRM_GEM_PRIME_EXPORT(rockchip_gem_prime_export)
+
static struct drm_driver rockchip_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM |
DRIVER_PRIME | DRIVER_ATOMIC,
@@ -295,7 +297,7 @@ static struct drm_driver rockchip_drm_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = rockchip_gem_prime_export,
.gem_prime_get_sg_table = rockchip_gem_prime_get_sg_table,
.gem_prime_vmap = rockchip_gem_prime_vmap,
.gem_prime_vunmap = rockchip_gem_prime_vunmap,
@@ -254,6 +254,8 @@ static const struct file_operations shmob_drm_fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(shmob_gem_prime_export)
+
static struct drm_driver shmob_drm_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET
| DRIVER_PRIME,
@@ -268,7 +270,7 @@ static struct drm_driver shmob_drm_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = shmob_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -281,6 +281,8 @@ static const struct file_operations sti_driver_fops = {
.release = drm_release,
};
+static DRM_GEM_PRIME_EXPORT(sti_gem_prime_export)
+
static struct drm_driver sti_driver = {
.driver_features = DRIVER_MODESET |
DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC,
@@ -297,7 +299,7 @@ static struct drm_driver sti_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = sti_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
@@ -61,6 +61,8 @@ static const struct file_operations sun4i_drv_fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(sun4i_gem_prime_export)
+
static struct drm_driver sun4i_drv_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_ATOMIC,
@@ -83,7 +85,7 @@ static struct drm_driver sun4i_drv_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = sun4i_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -584,6 +584,8 @@ static const struct file_operations fops = {
.mmap = drm_gem_cma_mmap,
};
+static DRM_GEM_PRIME_EXPORT(tilcdc_gem_prime_export)
+
static struct drm_driver tilcdc_driver = {
.driver_features = (DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET |
DRIVER_PRIME | DRIVER_ATOMIC),
@@ -603,7 +605,7 @@ static struct drm_driver tilcdc_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_import = drm_gem_prime_import,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = tilcdc_gem_prime_export,
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
.gem_prime_vmap = drm_gem_cma_prime_vmap,
@@ -367,7 +367,8 @@ vc4_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags)
return ERR_PTR(-EINVAL);
}
- return drm_gem_prime_export(dev, obj, flags);
+ return drm_gem_prime_export(dev, obj, flags,
+ THIS_MODULE, KBUILD_MODNAME);
}
int vc4_mmap(struct file *filp, struct vm_area_struct *vma)
@@ -240,6 +240,8 @@ static int vgem_prime_pin(struct drm_gem_object *obj)
return 0;
}
+static DRM_GEM_PRIME_EXPORT(vgem_prime_export)
+
static struct sg_table *vgem_prime_get_sg_table(struct drm_gem_object *obj)
{
struct sg_table *st;
@@ -314,7 +316,7 @@ static struct drm_driver vgem_driver = {
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.gem_prime_pin = vgem_prime_pin,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = vgem_prime_export,
.gem_prime_get_sg_table = vgem_prime_get_sg_table,
.gem_prime_vmap = vgem_prime_vmap,
.gem_prime_vunmap = vgem_prime_vunmap,
@@ -114,6 +114,7 @@ static const struct file_operations virtio_gpu_driver_fops = {
.llseek = noop_llseek,
};
+static DRM_GEM_PRIME_EXPORT(virtgpu_gem_prime_export)
static struct drm_driver driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER | DRIVER_ATOMIC,
@@ -132,7 +133,7 @@ static struct drm_driver driver = {
#endif
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_export = virtgpu_gem_prime_export,
.gem_prime_import = drm_gem_prime_import,
.gem_prime_pin = virtgpu_gem_prime_pin,
.gem_prime_unpin = virtgpu_gem_prime_unpin,
@@ -1012,7 +1012,10 @@ static inline int drm_debugfs_remove_files(const struct drm_info_list *files,
#endif
extern struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
- struct drm_gem_object *obj, int flags);
+ struct drm_gem_object *obj,
+ int flags,
+ struct module *owner,
+ const char *name);
extern int drm_gem_prime_handle_to_fd(struct drm_device *dev,
struct drm_file *file_priv, uint32_t handle, uint32_t flags,
int *prime_fd);
@@ -1109,4 +1112,13 @@ static __inline__ bool drm_can_sleep(void)
/* helper for handling conditionals in various for_each macros */
#define for_each_if(condition) if (!(condition)) {} else
+#define DRM_GEM_PRIME_EXPORT(name) \
+struct dma_buf *name(struct drm_device *dev, \
+ struct drm_gem_object *obj, \
+ int flags) \
+{ \
+ return drm_gem_prime_export(dev, obj, flags, \
+ THIS_MODULE, KBUILD_MODNAME); \
+}
+
#endif
dma_buf_export() adds a reference to the owning module to the dmabuf (to prevent the driver from being unloaded whilst a third party still refers to the dmabuf). However, drm_gem_prime_export() was passing its own THIS_MODULE (i.e. drm.ko) rather than the driver. Expand the interface so that driver passes the struct module to the helper. Testcase: igt/vgem_reload_basic Reported-by: Petri Latvala <petri.latvala@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Petri Latvala <petri.latvala@intel.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c | 3 ++- drivers/gpu/drm/arc/arcpgu_drv.c | 4 +++- drivers/gpu/drm/arm/hdlcd_drv.c | 4 +++- drivers/gpu/drm/arm/malidp_drv.c | 4 +++- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 4 +++- drivers/gpu/drm/drm_prime.c | 12 ++++++++++-- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 4 +++- drivers/gpu/drm/exynos/exynos_drm_drv.c | 4 +++- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 4 +++- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 4 +++- drivers/gpu/drm/imx/imx-drm-core.c | 4 +++- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +++- drivers/gpu/drm/msm/msm_drv.c | 4 +++- drivers/gpu/drm/nouveau/nouveau_drm.c | 4 +++- drivers/gpu/drm/qxl/qxl_drv.c | 4 +++- drivers/gpu/drm/radeon/radeon_prime.c | 3 ++- drivers/gpu/drm/rcar-du/rcar_du_drv.c | 4 +++- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 4 +++- drivers/gpu/drm/shmobile/shmob_drm_drv.c | 4 +++- drivers/gpu/drm/sti/sti_drv.c | 4 +++- drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +++- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 4 +++- drivers/gpu/drm/vc4/vc4_bo.c | 3 ++- drivers/gpu/drm/vgem/vgem_drv.c | 4 +++- drivers/gpu/drm/virtio/virtgpu_drv.c | 3 ++- include/drm/drmP.h | 14 +++++++++++++- 26 files changed, 91 insertions(+), 27 deletions(-)