All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
@ 2020-10-23 12:28 ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Intel Graphics Development, amd-gfx, Alex Deucher,
	Daniel Vetter, Christian König

With only the kms driver left, we can fold this in. This means
we need to move the ioctl table, which means one additional ioctl
must be defined in headers.

Also there's a conflict between the radeon_init macro and the module
init function, so rename the module functions to avoid that.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/radeon/radeon.h     |  1 +
 drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
 drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
 3 files changed, 62 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 5d54bccebd4d..f475785d6491 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
 int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
 
 /* VRAM scratch page for HDP bug, default vram page */
 struct r600_vram_scratch {
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 65061c949aee..9c11e36ad33a 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -51,6 +51,7 @@
 #include <drm/radeon_drm.h>
 
 #include "radeon_drv.h"
+#include "radeon.h"
 
 /*
  * KMS wrapper.
@@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
 				      ktime_t *stime, ktime_t *etime,
 				      const struct drm_display_mode *mode);
 extern bool radeon_is_px(struct drm_device *dev);
-extern const struct drm_ioctl_desc radeon_ioctls_kms[];
-extern int radeon_max_kms_ioctl;
 int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
 int radeon_mode_dumb_mmap(struct drm_file *filp,
 			  struct drm_device *dev,
@@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
 #endif
 };
 
+static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
+	/* KMS */
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+};
+
 static struct drm_driver kms_driver = {
 	.driver_features =
-	    DRIVER_GEM | DRIVER_RENDER,
+	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
 	.open = radeon_driver_open_kms,
 	.postclose = radeon_driver_postclose_kms,
@@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
 	.irq_uninstall = radeon_driver_irq_uninstall_kms,
 	.irq_handler = radeon_driver_irq_handler_kms,
 	.ioctls = radeon_ioctls_kms,
+	.num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
 	.dumb_create = radeon_mode_dumb_create,
 	.dumb_map_offset = radeon_mode_dumb_mmap,
 	.fops = &radeon_driver_kms_fops,
@@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
 };
 
-static struct drm_driver *driver;
-static struct pci_driver *pdriver;
-
 static struct pci_driver radeon_kms_pci_driver = {
 	.name = DRIVER_NAME,
 	.id_table = pciidlist,
@@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
 	.driver.pm = &radeon_pm_ops,
 };
 
-static int __init radeon_init(void)
+static int __init radeon_module_init(void)
 {
 	if (vgacon_text_force() && radeon_modeset == -1) {
 		DRM_INFO("VGACON disable radeon kernel modesetting.\n");
 		radeon_modeset = 0;
 	}
-	/* set to modesetting by default if not nomodeset */
-	if (radeon_modeset == -1)
-		radeon_modeset = 1;
-
-	if (radeon_modeset == 1) {
-		DRM_INFO("radeon kernel modesetting enabled.\n");
-		driver = &kms_driver;
-		pdriver = &radeon_kms_pci_driver;
-		driver->driver_features |= DRIVER_MODESET;
-		driver->num_ioctls = radeon_max_kms_ioctl;
-		radeon_register_atpx_handler();
-
-	} else {
+
+	if (radeon_modeset == 0) {
 		DRM_ERROR("No UMS support in radeon module!\n");
 		return -EINVAL;
 	}
 
-	return pci_register_driver(pdriver);
+	DRM_INFO("radeon kernel modesetting enabled.\n");
+	radeon_register_atpx_handler();
+
+	return pci_register_driver(&radeon_kms_pci_driver);
 }
 
-static void __exit radeon_exit(void)
+static void __exit radeon_module_exit(void)
 {
-	pci_unregister_driver(pdriver);
+	pci_unregister_driver(&radeon_kms_pci_driver);
 	radeon_unregister_atpx_handler();
 	mmu_notifier_synchronize();
 }
 
-module_init(radeon_init);
-module_exit(radeon_exit);
+module_init(radeon_module_init);
+module_exit(radeon_module_exit);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 99ee60f8b604..abb3bdd9ca25 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
  * etc. (all asics).
  * Returns 0 on success, -EINVAL on failure.
  */
-static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
 	struct radeon_device *rdev = dev->dev_private;
 	struct drm_radeon_info *info = data;
@@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
 	radeon_irq_set(rdev);
 	spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
 }
-
-const struct drm_ioctl_desc radeon_ioctls_kms[] = {
-	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
-	/* KMS */
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-};
-int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
@ 2020-10-23 12:28 ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Intel Graphics Development, amd-gfx, Alex Deucher,
	Daniel Vetter, Christian König

With only the kms driver left, we can fold this in. This means
we need to move the ioctl table, which means one additional ioctl
must be defined in headers.

Also there's a conflict between the radeon_init macro and the module
init function, so rename the module functions to avoid that.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/radeon/radeon.h     |  1 +
 drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
 drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
 3 files changed, 62 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 5d54bccebd4d..f475785d6491 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
 int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
 
 /* VRAM scratch page for HDP bug, default vram page */
 struct r600_vram_scratch {
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 65061c949aee..9c11e36ad33a 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -51,6 +51,7 @@
 #include <drm/radeon_drm.h>
 
 #include "radeon_drv.h"
+#include "radeon.h"
 
 /*
  * KMS wrapper.
@@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
 				      ktime_t *stime, ktime_t *etime,
 				      const struct drm_display_mode *mode);
 extern bool radeon_is_px(struct drm_device *dev);
-extern const struct drm_ioctl_desc radeon_ioctls_kms[];
-extern int radeon_max_kms_ioctl;
 int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
 int radeon_mode_dumb_mmap(struct drm_file *filp,
 			  struct drm_device *dev,
@@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
 #endif
 };
 
+static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
+	/* KMS */
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+};
+
 static struct drm_driver kms_driver = {
 	.driver_features =
-	    DRIVER_GEM | DRIVER_RENDER,
+	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
 	.open = radeon_driver_open_kms,
 	.postclose = radeon_driver_postclose_kms,
@@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
 	.irq_uninstall = radeon_driver_irq_uninstall_kms,
 	.irq_handler = radeon_driver_irq_handler_kms,
 	.ioctls = radeon_ioctls_kms,
+	.num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
 	.dumb_create = radeon_mode_dumb_create,
 	.dumb_map_offset = radeon_mode_dumb_mmap,
 	.fops = &radeon_driver_kms_fops,
@@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
 };
 
-static struct drm_driver *driver;
-static struct pci_driver *pdriver;
-
 static struct pci_driver radeon_kms_pci_driver = {
 	.name = DRIVER_NAME,
 	.id_table = pciidlist,
@@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
 	.driver.pm = &radeon_pm_ops,
 };
 
-static int __init radeon_init(void)
+static int __init radeon_module_init(void)
 {
 	if (vgacon_text_force() && radeon_modeset == -1) {
 		DRM_INFO("VGACON disable radeon kernel modesetting.\n");
 		radeon_modeset = 0;
 	}
-	/* set to modesetting by default if not nomodeset */
-	if (radeon_modeset == -1)
-		radeon_modeset = 1;
-
-	if (radeon_modeset == 1) {
-		DRM_INFO("radeon kernel modesetting enabled.\n");
-		driver = &kms_driver;
-		pdriver = &radeon_kms_pci_driver;
-		driver->driver_features |= DRIVER_MODESET;
-		driver->num_ioctls = radeon_max_kms_ioctl;
-		radeon_register_atpx_handler();
-
-	} else {
+
+	if (radeon_modeset == 0) {
 		DRM_ERROR("No UMS support in radeon module!\n");
 		return -EINVAL;
 	}
 
-	return pci_register_driver(pdriver);
+	DRM_INFO("radeon kernel modesetting enabled.\n");
+	radeon_register_atpx_handler();
+
+	return pci_register_driver(&radeon_kms_pci_driver);
 }
 
-static void __exit radeon_exit(void)
+static void __exit radeon_module_exit(void)
 {
-	pci_unregister_driver(pdriver);
+	pci_unregister_driver(&radeon_kms_pci_driver);
 	radeon_unregister_atpx_handler();
 	mmu_notifier_synchronize();
 }
 
-module_init(radeon_init);
-module_exit(radeon_exit);
+module_init(radeon_module_init);
+module_exit(radeon_module_exit);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 99ee60f8b604..abb3bdd9ca25 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
  * etc. (all asics).
  * Returns 0 on success, -EINVAL on failure.
  */
-static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
 	struct radeon_device *rdev = dev->dev_private;
 	struct drm_radeon_info *info = data;
@@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
 	radeon_irq_set(rdev);
 	spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
 }
-
-const struct drm_ioctl_desc radeon_ioctls_kms[] = {
-	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
-	/* KMS */
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-};
-int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
@ 2020-10-23 12:28 ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Intel Graphics Development, amd-gfx, Alex Deucher,
	Daniel Vetter, Christian König

With only the kms driver left, we can fold this in. This means
we need to move the ioctl table, which means one additional ioctl
must be defined in headers.

Also there's a conflict between the radeon_init macro and the module
init function, so rename the module functions to avoid that.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/radeon/radeon.h     |  1 +
 drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
 drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
 3 files changed, 62 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 5d54bccebd4d..f475785d6491 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
 int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
 
 /* VRAM scratch page for HDP bug, default vram page */
 struct r600_vram_scratch {
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 65061c949aee..9c11e36ad33a 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -51,6 +51,7 @@
 #include <drm/radeon_drm.h>
 
 #include "radeon_drv.h"
+#include "radeon.h"
 
 /*
  * KMS wrapper.
@@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
 				      ktime_t *stime, ktime_t *etime,
 				      const struct drm_display_mode *mode);
 extern bool radeon_is_px(struct drm_device *dev);
-extern const struct drm_ioctl_desc radeon_ioctls_kms[];
-extern int radeon_max_kms_ioctl;
 int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
 int radeon_mode_dumb_mmap(struct drm_file *filp,
 			  struct drm_device *dev,
@@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
 #endif
 };
 
+static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
+	/* KMS */
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+};
+
 static struct drm_driver kms_driver = {
 	.driver_features =
-	    DRIVER_GEM | DRIVER_RENDER,
+	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
 	.open = radeon_driver_open_kms,
 	.postclose = radeon_driver_postclose_kms,
@@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
 	.irq_uninstall = radeon_driver_irq_uninstall_kms,
 	.irq_handler = radeon_driver_irq_handler_kms,
 	.ioctls = radeon_ioctls_kms,
+	.num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
 	.dumb_create = radeon_mode_dumb_create,
 	.dumb_map_offset = radeon_mode_dumb_mmap,
 	.fops = &radeon_driver_kms_fops,
@@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
 };
 
-static struct drm_driver *driver;
-static struct pci_driver *pdriver;
-
 static struct pci_driver radeon_kms_pci_driver = {
 	.name = DRIVER_NAME,
 	.id_table = pciidlist,
@@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
 	.driver.pm = &radeon_pm_ops,
 };
 
-static int __init radeon_init(void)
+static int __init radeon_module_init(void)
 {
 	if (vgacon_text_force() && radeon_modeset == -1) {
 		DRM_INFO("VGACON disable radeon kernel modesetting.\n");
 		radeon_modeset = 0;
 	}
-	/* set to modesetting by default if not nomodeset */
-	if (radeon_modeset == -1)
-		radeon_modeset = 1;
-
-	if (radeon_modeset == 1) {
-		DRM_INFO("radeon kernel modesetting enabled.\n");
-		driver = &kms_driver;
-		pdriver = &radeon_kms_pci_driver;
-		driver->driver_features |= DRIVER_MODESET;
-		driver->num_ioctls = radeon_max_kms_ioctl;
-		radeon_register_atpx_handler();
-
-	} else {
+
+	if (radeon_modeset == 0) {
 		DRM_ERROR("No UMS support in radeon module!\n");
 		return -EINVAL;
 	}
 
-	return pci_register_driver(pdriver);
+	DRM_INFO("radeon kernel modesetting enabled.\n");
+	radeon_register_atpx_handler();
+
+	return pci_register_driver(&radeon_kms_pci_driver);
 }
 
-static void __exit radeon_exit(void)
+static void __exit radeon_module_exit(void)
 {
-	pci_unregister_driver(pdriver);
+	pci_unregister_driver(&radeon_kms_pci_driver);
 	radeon_unregister_atpx_handler();
 	mmu_notifier_synchronize();
 }
 
-module_init(radeon_init);
-module_exit(radeon_exit);
+module_init(radeon_module_init);
+module_exit(radeon_module_exit);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 99ee60f8b604..abb3bdd9ca25 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
  * etc. (all asics).
  * Returns 0 on success, -EINVAL on failure.
  */
-static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
 	struct radeon_device *rdev = dev->dev_private;
 	struct drm_radeon_info *info = data;
@@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
 	radeon_irq_set(rdev);
 	spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
 }
-
-const struct drm_ioctl_desc radeon_ioctls_kms[] = {
-	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
-	/* KMS */
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-};
-int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
@ 2020-10-23 12:28   ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Thomas Zimmermann, Daniel Vetter

This means some very few #ifdef in code, but it allows us to
enlist the compiler to make sure this stuff isn't used anymore.

More important, only legacy drivers change drm_device (for the
legacy_dev_list shadow attach management), therefore this is
prep to allow modern drivers to have a const driver struct. Which
is nice, because there's a ton of function pointers in there.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_file.c   |  2 ++
 drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
 include/drm/drm_drv.h        |  2 ++
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
index 0ac4566ae3f4..b50380fa80ce 100644
--- a/drivers/gpu/drm/drm_file.c
+++ b/drivers/gpu/drm/drm_file.c
@@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
 		  (long)old_encode_dev(file->minor->kdev->devt),
 		  atomic_read(&dev->open_count));
 
+#ifdef CONFIG_DRM_LEGACY
 	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
 	    dev->driver->preclose)
 		dev->driver->preclose(dev, file);
+#endif
 
 	if (drm_core_check_feature(dev, DRIVER_LEGACY))
 		drm_legacy_lock_release(dev, file->filp);
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index ba7e741764aa..15e5ea436434 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
 
 		if (crtc->funcs->get_vblank_counter)
 			return crtc->funcs->get_vblank_counter(crtc);
-	} else if (dev->driver->get_vblank_counter) {
+	}
+#ifdef CONFIG_DRM_LEGACY
+	else if (dev->driver->get_vblank_counter) {
 		return dev->driver->get_vblank_counter(dev, pipe);
 	}
+#endif
 
 	return drm_vblank_no_hw_counter(dev, pipe);
 }
@@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
 
 		if (crtc->funcs->disable_vblank)
 			crtc->funcs->disable_vblank(crtc);
-	} else {
+	}
+#ifdef CONFIG_DRM_LEGACY
+	else {
 		dev->driver->disable_vblank(dev, pipe);
 	}
+#endif
 }
 
 /*
@@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
 
 		if (crtc->funcs->enable_vblank)
 			return crtc->funcs->enable_vblank(crtc);
-	} else if (dev->driver->enable_vblank) {
+	}
+#ifdef CONFIG_DRM_LEGACY
+	else if (dev->driver->enable_vblank) {
 		return dev->driver->enable_vblank(dev, pipe);
 	}
+#endif
 
 	return -EINVAL;
 }
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index c6d17550efc9..7af220226a25 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -498,6 +498,7 @@ struct drm_driver {
 	 */
 	const struct file_operations *fops;
 
+#ifdef CONFIG_DRM_LEGACY
 	/* Everything below here is for legacy driver, never use! */
 	/* private: */
 
@@ -512,6 +513,7 @@ struct drm_driver {
 	int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
 	void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
 	int dev_priv_size;
+#endif
 };
 
 void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
@ 2020-10-23 12:28   ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Maxime Ripard, Thomas Zimmermann, Daniel Vetter

This means some very few #ifdef in code, but it allows us to
enlist the compiler to make sure this stuff isn't used anymore.

More important, only legacy drivers change drm_device (for the
legacy_dev_list shadow attach management), therefore this is
prep to allow modern drivers to have a const driver struct. Which
is nice, because there's a ton of function pointers in there.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_file.c   |  2 ++
 drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
 include/drm/drm_drv.h        |  2 ++
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
index 0ac4566ae3f4..b50380fa80ce 100644
--- a/drivers/gpu/drm/drm_file.c
+++ b/drivers/gpu/drm/drm_file.c
@@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
 		  (long)old_encode_dev(file->minor->kdev->devt),
 		  atomic_read(&dev->open_count));
 
+#ifdef CONFIG_DRM_LEGACY
 	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
 	    dev->driver->preclose)
 		dev->driver->preclose(dev, file);
+#endif
 
 	if (drm_core_check_feature(dev, DRIVER_LEGACY))
 		drm_legacy_lock_release(dev, file->filp);
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index ba7e741764aa..15e5ea436434 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
 
 		if (crtc->funcs->get_vblank_counter)
 			return crtc->funcs->get_vblank_counter(crtc);
-	} else if (dev->driver->get_vblank_counter) {
+	}
+#ifdef CONFIG_DRM_LEGACY
+	else if (dev->driver->get_vblank_counter) {
 		return dev->driver->get_vblank_counter(dev, pipe);
 	}
+#endif
 
 	return drm_vblank_no_hw_counter(dev, pipe);
 }
@@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
 
 		if (crtc->funcs->disable_vblank)
 			crtc->funcs->disable_vblank(crtc);
-	} else {
+	}
+#ifdef CONFIG_DRM_LEGACY
+	else {
 		dev->driver->disable_vblank(dev, pipe);
 	}
+#endif
 }
 
 /*
@@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
 
 		if (crtc->funcs->enable_vblank)
 			return crtc->funcs->enable_vblank(crtc);
-	} else if (dev->driver->enable_vblank) {
+	}
+#ifdef CONFIG_DRM_LEGACY
+	else if (dev->driver->enable_vblank) {
 		return dev->driver->enable_vblank(dev, pipe);
 	}
+#endif
 
 	return -EINVAL;
 }
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index c6d17550efc9..7af220226a25 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -498,6 +498,7 @@ struct drm_driver {
 	 */
 	const struct file_operations *fops;
 
+#ifdef CONFIG_DRM_LEGACY
 	/* Everything below here is for legacy driver, never use! */
 	/* private: */
 
@@ -512,6 +513,7 @@ struct drm_driver {
 	int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
 	void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
 	int dev_priv_size;
+#endif
 };
 
 void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 3/5] drm/amdgpu: Paper over the drm_driver mangling for virt
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
@ 2020-10-23 12:28   ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: chen gong, Daniel Vetter, Daniel Vetter,
	Intel Graphics Development, Wenhui Sheng, shaoyunl, Luben Tuikov,
	Stanley.Yang, Dennis Li, Thomas Zimmermann, Bokun Zhang,
	Alex Deucher, Felix Kuehling, Yintian Tao, Evan Quan,
	Christian König, Monk Liu, Hawking Zhang

Prep work to make drm_device->driver const.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Evan Quan <evan.quan@amd.com>
Cc: Felix Kuehling <Felix.Kuehling@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Cc: Luben Tuikov <luben.tuikov@amd.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Monk Liu <Monk.Liu@amd.com>
Cc: Yintian Tao <yttao@amd.com>
Cc: Dennis Li <Dennis.Li@amd.com>
Cc: shaoyunl <shaoyun.liu@amd.com>
Cc: Bokun Zhang <Bokun.Zhang@amd.com>
Cc: "Stanley.Yang" <Stanley.Yang@amd.com>
Cc: Wenhui Sheng <Wenhui.Sheng@amd.com>
Cc: chen gong <curry.gong@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c  |  8 ++++----
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 12 +++++++++++-
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 024c3b70b1aa..3d337f13ae4e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -1093,7 +1093,7 @@ static const struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+struct drm_driver amdgpu_kms_driver;
 
 static int amdgpu_pci_probe(struct pci_dev *pdev,
 			    const struct pci_device_id *ent)
@@ -1164,7 +1164,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
 	if (ret)
 		return ret;
 
-	adev = devm_drm_dev_alloc(&pdev->dev, &kms_driver, typeof(*adev), ddev);
+	adev = devm_drm_dev_alloc(&pdev->dev, &amdgpu_kms_driver, typeof(*adev), ddev);
 	if (IS_ERR(adev))
 		return PTR_ERR(adev);
 
@@ -1508,7 +1508,7 @@ int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv)
 	return 0;
 }
 
-static struct drm_driver kms_driver = {
+struct drm_driver amdgpu_kms_driver = {
 	.driver_features =
 	    DRIVER_ATOMIC |
 	    DRIVER_GEM |
@@ -1571,7 +1571,7 @@ static int __init amdgpu_init(void)
 		goto error_fence;
 
 	DRM_INFO("amdgpu kernel modesetting enabled.\n");
-	kms_driver.num_ioctls = amdgpu_max_kms_ioctl;
+	amdgpu_kms_driver.num_ioctls = amdgpu_max_kms_ioctl;
 	amdgpu_register_atpx_handler();
 
 	/* Ignore KFD init failures. Normal when CONFIG_HSA_AMD is not set. */
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
index d0aea5e39531..dde4c449c284 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
@@ -45,13 +45,23 @@ bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev)
 	return RREG32_NO_KIQ(0xc040) == 0xffffffff;
 }
 
+extern struct drm_driver amdgpu_kms_driver;
+
 void amdgpu_virt_init_setting(struct amdgpu_device *adev)
 {
 	/* enable virtual display */
 	if (adev->mode_info.num_crtc == 0)
 		adev->mode_info.num_crtc = 1;
 	adev->enable_virtual_display = true;
-	adev_to_drm(adev)->driver->driver_features &= ~DRIVER_ATOMIC;
+
+	/*
+	 * FIXME: Either make virt support atomic or make sure you have two
+	 * drm_driver structs, these kind of tricks are only ok when there's
+	 * guaranteed only a single device per system. This should also be done
+	 * before struct drm_device is initialized.
+	 */
+	amdgpu_kms_driver.driver_features &= ~DRIVER_ATOMIC;
+
 	adev->cg_flags = 0;
 	adev->pg_flags = 0;
 }
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] [PATCH 3/5] drm/amdgpu: Paper over the drm_driver mangling for virt
@ 2020-10-23 12:28   ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Andrey Grodzovsky, chen gong, Daniel Vetter, Daniel Vetter,
	Intel Graphics Development, Wenhui Sheng, shaoyunl, Luben Tuikov,
	Stanley.Yang, Dennis Li, Thomas Zimmermann, Bokun Zhang,
	Alex Deucher, Felix Kuehling, Yintian Tao, Evan Quan,
	Christian König, Monk Liu, Hawking Zhang

Prep work to make drm_device->driver const.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Evan Quan <evan.quan@amd.com>
Cc: Felix Kuehling <Felix.Kuehling@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Cc: Luben Tuikov <luben.tuikov@amd.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Monk Liu <Monk.Liu@amd.com>
Cc: Yintian Tao <yttao@amd.com>
Cc: Dennis Li <Dennis.Li@amd.com>
Cc: shaoyunl <shaoyun.liu@amd.com>
Cc: Bokun Zhang <Bokun.Zhang@amd.com>
Cc: "Stanley.Yang" <Stanley.Yang@amd.com>
Cc: Wenhui Sheng <Wenhui.Sheng@amd.com>
Cc: chen gong <curry.gong@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c  |  8 ++++----
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 12 +++++++++++-
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 024c3b70b1aa..3d337f13ae4e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -1093,7 +1093,7 @@ static const struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+struct drm_driver amdgpu_kms_driver;
 
 static int amdgpu_pci_probe(struct pci_dev *pdev,
 			    const struct pci_device_id *ent)
@@ -1164,7 +1164,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
 	if (ret)
 		return ret;
 
-	adev = devm_drm_dev_alloc(&pdev->dev, &kms_driver, typeof(*adev), ddev);
+	adev = devm_drm_dev_alloc(&pdev->dev, &amdgpu_kms_driver, typeof(*adev), ddev);
 	if (IS_ERR(adev))
 		return PTR_ERR(adev);
 
@@ -1508,7 +1508,7 @@ int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv)
 	return 0;
 }
 
-static struct drm_driver kms_driver = {
+struct drm_driver amdgpu_kms_driver = {
 	.driver_features =
 	    DRIVER_ATOMIC |
 	    DRIVER_GEM |
@@ -1571,7 +1571,7 @@ static int __init amdgpu_init(void)
 		goto error_fence;
 
 	DRM_INFO("amdgpu kernel modesetting enabled.\n");
-	kms_driver.num_ioctls = amdgpu_max_kms_ioctl;
+	amdgpu_kms_driver.num_ioctls = amdgpu_max_kms_ioctl;
 	amdgpu_register_atpx_handler();
 
 	/* Ignore KFD init failures. Normal when CONFIG_HSA_AMD is not set. */
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
index d0aea5e39531..dde4c449c284 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
@@ -45,13 +45,23 @@ bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev)
 	return RREG32_NO_KIQ(0xc040) == 0xffffffff;
 }
 
+extern struct drm_driver amdgpu_kms_driver;
+
 void amdgpu_virt_init_setting(struct amdgpu_device *adev)
 {
 	/* enable virtual display */
 	if (adev->mode_info.num_crtc == 0)
 		adev->mode_info.num_crtc = 1;
 	adev->enable_virtual_display = true;
-	adev_to_drm(adev)->driver->driver_features &= ~DRIVER_ATOMIC;
+
+	/*
+	 * FIXME: Either make virt support atomic or make sure you have two
+	 * drm_driver structs, these kind of tricks are only ok when there's
+	 * guaranteed only a single device per system. This should also be done
+	 * before struct drm_device is initialized.
+	 */
+	amdgpu_kms_driver.driver_features &= ~DRIVER_ATOMIC;
+
 	adev->cg_flags = 0;
 	adev->pg_flags = 0;
 }
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 4/5] drm: Allow const struct drm_driver
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
@ 2020-10-23 12:28   ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Thomas Zimmermann, Daniel Vetter

It's nice if a big function/ioctl table like this is const. Only
downside here is that we need a few more #ifdef to paper over the
differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
motivation to sunset that horror show :-)

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_drv.c | 15 ++++++++++-----
 include/drm/drm_device.h  |  4 ++++
 include/drm/drm_drv.h     |  5 +++--
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 457ac0f82be2..94d2c41115b8 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
 }
 
 static int drm_dev_init(struct drm_device *dev,
-			struct drm_driver *driver,
+			const struct drm_driver *driver,
 			struct device *parent)
 {
 	int ret;
@@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev,
 
 	kref_init(&dev->ref);
 	dev->dev = get_device(parent);
+#ifdef CONFIG_DRM_LEGACY
+	dev->driver = (struct drm_driver *) driver;
+#else
 	dev->driver = driver;
+#endif
 
 	INIT_LIST_HEAD(&dev->managed.resources);
 	spin_lock_init(&dev->managed.lock);
@@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data)
 
 static int devm_drm_dev_init(struct device *parent,
 			     struct drm_device *dev,
-			     struct drm_driver *driver)
+			     const struct drm_driver *driver)
 {
 	int ret;
 
@@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent,
 	return ret;
 }
 
-void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
+void *__devm_drm_dev_alloc(struct device *parent,
+			   const struct drm_driver *driver,
 			   size_t size, size_t offset)
 {
 	void *container;
@@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
  * RETURNS:
  * Pointer to new DRM device, or ERR_PTR on failure.
  */
-struct drm_device *drm_dev_alloc(struct drm_driver *driver,
+struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
 				 struct device *parent)
 {
 	struct drm_device *dev;
@@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev)
  */
 int drm_dev_register(struct drm_device *dev, unsigned long flags)
 {
-	struct drm_driver *driver = dev->driver;
+	const struct drm_driver *driver = dev->driver;
 	int ret;
 
 	if (!driver->load)
diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
index f4f68e7a9149..2c361964aee7 100644
--- a/include/drm/drm_device.h
+++ b/include/drm/drm_device.h
@@ -83,7 +83,11 @@ struct drm_device {
 	} managed;
 
 	/** @driver: DRM driver managing the device */
+#ifdef CONFIG_DRM_LEGACY
 	struct drm_driver *driver;
+#else
+	const struct drm_driver *driver;
+#endif
 
 	/**
 	 * @dev_private:
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 7af220226a25..cc9da43b6eda 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -516,7 +516,8 @@ struct drm_driver {
 #endif
 };
 
-void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
+void *__devm_drm_dev_alloc(struct device *parent,
+			   const struct drm_driver *driver,
 			   size_t size, size_t offset);
 
 /**
@@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
 	((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \
 				       offsetof(type, member)))
 
-struct drm_device *drm_dev_alloc(struct drm_driver *driver,
+struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
 				 struct device *parent);
 int drm_dev_register(struct drm_device *dev, unsigned long flags);
 void drm_dev_unregister(struct drm_device *dev);
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] [PATCH 4/5] drm: Allow const struct drm_driver
@ 2020-10-23 12:28   ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Maxime Ripard, Thomas Zimmermann, Daniel Vetter

It's nice if a big function/ioctl table like this is const. Only
downside here is that we need a few more #ifdef to paper over the
differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
motivation to sunset that horror show :-)

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_drv.c | 15 ++++++++++-----
 include/drm/drm_device.h  |  4 ++++
 include/drm/drm_drv.h     |  5 +++--
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 457ac0f82be2..94d2c41115b8 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
 }
 
 static int drm_dev_init(struct drm_device *dev,
-			struct drm_driver *driver,
+			const struct drm_driver *driver,
 			struct device *parent)
 {
 	int ret;
@@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev,
 
 	kref_init(&dev->ref);
 	dev->dev = get_device(parent);
+#ifdef CONFIG_DRM_LEGACY
+	dev->driver = (struct drm_driver *) driver;
+#else
 	dev->driver = driver;
+#endif
 
 	INIT_LIST_HEAD(&dev->managed.resources);
 	spin_lock_init(&dev->managed.lock);
@@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data)
 
 static int devm_drm_dev_init(struct device *parent,
 			     struct drm_device *dev,
-			     struct drm_driver *driver)
+			     const struct drm_driver *driver)
 {
 	int ret;
 
@@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent,
 	return ret;
 }
 
-void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
+void *__devm_drm_dev_alloc(struct device *parent,
+			   const struct drm_driver *driver,
 			   size_t size, size_t offset)
 {
 	void *container;
@@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
  * RETURNS:
  * Pointer to new DRM device, or ERR_PTR on failure.
  */
-struct drm_device *drm_dev_alloc(struct drm_driver *driver,
+struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
 				 struct device *parent)
 {
 	struct drm_device *dev;
@@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev)
  */
 int drm_dev_register(struct drm_device *dev, unsigned long flags)
 {
-	struct drm_driver *driver = dev->driver;
+	const struct drm_driver *driver = dev->driver;
 	int ret;
 
 	if (!driver->load)
diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
index f4f68e7a9149..2c361964aee7 100644
--- a/include/drm/drm_device.h
+++ b/include/drm/drm_device.h
@@ -83,7 +83,11 @@ struct drm_device {
 	} managed;
 
 	/** @driver: DRM driver managing the device */
+#ifdef CONFIG_DRM_LEGACY
 	struct drm_driver *driver;
+#else
+	const struct drm_driver *driver;
+#endif
 
 	/**
 	 * @dev_private:
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 7af220226a25..cc9da43b6eda 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -516,7 +516,8 @@ struct drm_driver {
 #endif
 };
 
-void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
+void *__devm_drm_dev_alloc(struct device *parent,
+			   const struct drm_driver *driver,
 			   size_t size, size_t offset);
 
 /**
@@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
 	((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \
 				       offsetof(type, member)))
 
-struct drm_device *drm_dev_alloc(struct drm_driver *driver,
+struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
 				 struct device *parent);
 int drm_dev_register(struct drm_device *dev, unsigned long flags);
 void drm_dev_unregister(struct drm_device *dev);
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
  (?)
  (?)
@ 2020-10-23 12:28   ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Leo Li, Daniel Vetter, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, Gerd Hoffmann,
	nouveau, Alex Deucher, Dave Airlie, Harry Wentland,
	Christian König, Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..8928550072df 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+const static struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 12:28   ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Leo Li, Daniel Vetter, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, nouveau,
	Alex Deucher, Dave Airlie, Harry Wentland, Christian König,
	Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..8928550072df 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+const static struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0


_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 12:28   ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Leo Li, Daniel Vetter, Intel Graphics Development,
	virtualization, Gerd Hoffmann, nouveau, Alex Deucher,
	Dave Airlie, Christian König, Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..8928550072df 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+const static struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 12:28   ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 12:28 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Leo Li, Daniel Vetter, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, Gerd Hoffmann,
	nouveau, Alex Deucher, Dave Airlie, Harry Wentland,
	Christian König, Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..8928550072df 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+const static struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (5 preceding siblings ...)
  (?)
@ 2020-10-23 13:39 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 13:39 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
URL   : https://patchwork.freedesktop.org/series/82993/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
56ad54cc20b8 drm/radeon: Stop changing the drm_driver struct
-:60: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#60: FILE: drivers/gpu/drm/radeon/radeon_drv.c:587:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                          ^

-:60: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#60: FILE: drivers/gpu/drm/radeon/radeon_drv.c:587:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                     ^

-:61: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#61: FILE: drivers/gpu/drm/radeon/radeon_drv.c:588:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                           ^

-:61: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#61: FILE: drivers/gpu/drm/radeon/radeon_drv.c:588:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                      ^

-:62: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#62: FILE: drivers/gpu/drm/radeon/radeon_drv.c:589:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                          ^

-:62: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#62: FILE: drivers/gpu/drm/radeon/radeon_drv.c:589:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                     ^

-:63: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#63: FILE: drivers/gpu/drm/radeon/radeon_drv.c:590:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                           ^

-:63: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#63: FILE: drivers/gpu/drm/radeon/radeon_drv.c:590:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                      ^

-:74: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#74: FILE: drivers/gpu/drm/radeon/radeon_drv.c:601:
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                           ^

-:74: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#74: FILE: drivers/gpu/drm/radeon/radeon_drv.c:601:
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                      ^

-:81: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#81: FILE: drivers/gpu/drm/radeon/radeon_drv.c:608:
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                            ^

-:81: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#81: FILE: drivers/gpu/drm/radeon/radeon_drv.c:608:
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                       ^

-:88: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#88: FILE: drivers/gpu/drm/radeon/radeon_drv.c:615:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                  ^

-:89: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#89: FILE: drivers/gpu/drm/radeon/radeon_drv.c:616:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                      ^

-:90: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#90: FILE: drivers/gpu/drm/radeon/radeon_drv.c:617:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                  ^

-:91: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#91: FILE: drivers/gpu/drm/radeon/radeon_drv.c:618:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:91: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#91: FILE: drivers/gpu/drm/radeon/radeon_drv.c:618:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                              ^

-:94: WARNING:LONG_LINE: line length of 103 exceeds 100 columns
#94: FILE: drivers/gpu/drm/radeon/radeon_drv.c:621:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:94: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#94: FILE: drivers/gpu/drm/radeon/radeon_drv.c:621:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                            ^

-:95: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#95: FILE: drivers/gpu/drm/radeon/radeon_drv.c:622:
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                      ^

-:96: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#96: FILE: drivers/gpu/drm/radeon/radeon_drv.c:623:
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                          ^

-:97: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#97: FILE: drivers/gpu/drm/radeon/radeon_drv.c:624:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:97: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#97: FILE: drivers/gpu/drm/radeon/radeon_drv.c:624:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                              ^

-:98: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#98: FILE: drivers/gpu/drm/radeon/radeon_drv.c:625:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:98: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#98: FILE: drivers/gpu/drm/radeon/radeon_drv.c:625:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                              ^

-:99: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#99: FILE: drivers/gpu/drm/radeon/radeon_drv.c:626:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                  ^

-:100: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#100: FILE: drivers/gpu/drm/radeon/radeon_drv.c:627:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                              ^

-:101: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#101: FILE: drivers/gpu/drm/radeon/radeon_drv.c:628:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                              ^

-:102: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#102: FILE: drivers/gpu/drm/radeon/radeon_drv.c:629:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                        ^

total: 0 errors, 4 warnings, 25 checks, 157 lines checked
4d5fcb372a4a drm: Compile out legacy chunks from struct drm_device
-:49: WARNING:BRACES: braces {} are not necessary for single statement blocks
#49: FILE: drivers/gpu/drm/drm_vblank.c:214:
+	else if (dev->driver->get_vblank_counter) {
 		return dev->driver->get_vblank_counter(dev, pipe);
 	}

-:63: WARNING:BRACES: braces {} are not necessary for single statement blocks
#63: FILE: drivers/gpu/drm/drm_vblank.c:437:
+	else {
 		dev->driver->disable_vblank(dev, pipe);
 	}

-:63: CHECK:BRACES: Unbalanced braces around else statement
#63: FILE: drivers/gpu/drm/drm_vblank.c:437:
+	else {

-:77: WARNING:BRACES: braces {} are not necessary for single statement blocks
#77: FILE: drivers/gpu/drm/drm_vblank.c:1107:
+	else if (dev->driver->enable_vblank) {
 		return dev->driver->enable_vblank(dev, pipe);
 	}

total: 0 errors, 3 warnings, 1 checks, 64 lines checked
e83b0c263080 drm/amdgpu: Paper over the drm_driver mangling for virt
6049eee13ae9 drm: Allow const struct drm_driver
-:37: CHECK:SPACING: No space is necessary after a cast
#37: FILE: drivers/gpu/drm/drm_drv.c:593:
+	dev->driver = (struct drm_driver *) driver;

total: 0 errors, 0 warnings, 1 checks, 80 lines checked
81dc6fc9de5a drm/<drivers>: Constify struct drm_driver
-:694: WARNING:OBSOLETE: drivers/gpu/drm/tiny/cirrus.c is marked as 'obsolete' in the MAINTAINERS hierarchy.  No unnecessary modifications please.

-:697: WARNING:OBSOLETE: drivers/gpu/drm/tiny/cirrus.c is marked as 'obsolete' in the MAINTAINERS hierarchy.  No unnecessary modifications please.

total: 0 errors, 2 warnings, 0 checks, 619 lines checked


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (6 preceding siblings ...)
  (?)
@ 2020-10-23 13:42 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 13:42 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
URL   : https://patchwork.freedesktop.org/series/82993/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
-
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1367:25: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1367:25:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1367:25:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1368:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1368:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1368:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1427:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1427:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1427:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:262:16: error: incompatible types in comparison expression (different type sizes):
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:262:16:    unsigned long *
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:262:16:    unsigned long long *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:274:25: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:274:25:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:274:25:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:275:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:275:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:275:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:330:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:330:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:330:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.h:92:56: error: marked inline, but without a definition
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49:


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (7 preceding siblings ...)
  (?)
@ 2020-10-23 14:05 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 14:05 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 4628 bytes --]

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
URL   : https://patchwork.freedesktop.org/series/82993/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_9190 -> Patchwork_18771
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/index.html

Known issues
------------

  Here are the changes found in Patchwork_18771 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s3:
    - fi-tgl-u2:          [PASS][1] -> [FAIL][2] ([i915#1888])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-tgl-u2/igt@gem_exec_suspend@basic-s3.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-tgl-u2/igt@gem_exec_suspend@basic-s3.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-kbl-7500u:       [PASS][3] -> [DMESG-WARN][4] ([i915#2203])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-kbl-7500u/igt@kms_chamelium@hdmi-crc-fast.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-kbl-7500u/igt@kms_chamelium@hdmi-crc-fast.html

  
#### Possible fixes ####

  * igt@i915_module_load@reload:
    - fi-byt-j1900:       [DMESG-WARN][5] ([i915#1982]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-byt-j1900/igt@i915_module_load@reload.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-byt-j1900/igt@i915_module_load@reload.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-bsw-kefka:       [DMESG-WARN][7] ([i915#1982]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@kms_chamelium@dp-crc-fast:
    - fi-kbl-7500u:       [DMESG-WARN][9] -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-kbl-7500u/igt@kms_chamelium@dp-crc-fast.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-kbl-7500u/igt@kms_chamelium@dp-crc-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - fi-icl-u2:          [DMESG-WARN][11] ([i915#1982]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@vgem_basic@unload:
    - fi-skl-guc:         [DMESG-WARN][13] ([i915#2203]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-skl-guc/igt@vgem_basic@unload.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-skl-guc/igt@vgem_basic@unload.html

  
#### Warnings ####

  * igt@i915_module_load@reload:
    - fi-icl-u2:          [DMESG-WARN][15] ([i915#1982] / [i915#289]) -> [DMESG-WARN][16] ([i915#289])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/fi-icl-u2/igt@i915_module_load@reload.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/fi-icl-u2/igt@i915_module_load@reload.html

  
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2203]: https://gitlab.freedesktop.org/drm/intel/issues/2203
  [i915#289]: https://gitlab.freedesktop.org/drm/intel/issues/289


Participating hosts (46 -> 39)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * Linux: CI_DRM_9190 -> Patchwork_18771

  CI-20190529: 20190529
  CI_DRM_9190: a3d535579dd93942862b867b4452ba11e4f6bbb1 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5822: b4bcf05cb9839037128905deda7146434155cc41 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_18771: 81dc6fc9de5a8ba37221f7b44f79767ec691b5a1 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

81dc6fc9de5a drm/<drivers>: Constify struct drm_driver
6049eee13ae9 drm: Allow const struct drm_driver
e83b0c263080 drm/amdgpu: Paper over the drm_driver mangling for virt
4d5fcb372a4a drm: Compile out legacy chunks from struct drm_device
56ad54cc20b8 drm/radeon: Stop changing the drm_driver struct

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/index.html

[-- Attachment #1.2: Type: text/html, Size: 5782 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
  2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
@ 2020-10-23 15:10     ` Maxime Ripard
  -1 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:10 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Intel Graphics Development, DRI Development,
	Thomas Zimmermann, Daniel Vetter


[-- Attachment #1.1: Type: text/plain, Size: 868 bytes --]

On Fri, Oct 23, 2020 at 02:28:08PM +0200, Daniel Vetter wrote:
> This means some very few #ifdef in code, but it allows us to
> enlist the compiler to make sure this stuff isn't used anymore.
> 
> More important, only legacy drivers change drm_device (for the
> legacy_dev_list shadow attach management), therefore this is
> prep to allow modern drivers to have a const driver struct. Which
> is nice, because there's a ton of function pointers in there.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

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

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
@ 2020-10-23 15:10     ` Maxime Ripard
  0 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:10 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Intel Graphics Development, DRI Development,
	Thomas Zimmermann, Daniel Vetter


[-- Attachment #1.1: Type: text/plain, Size: 868 bytes --]

On Fri, Oct 23, 2020 at 02:28:08PM +0200, Daniel Vetter wrote:
> This means some very few #ifdef in code, but it allows us to
> enlist the compiler to make sure this stuff isn't used anymore.
> 
> More important, only legacy drivers change drm_device (for the
> legacy_dev_list shadow attach management), therefore this is
> prep to allow modern drivers to have a const driver struct. Which
> is nice, because there's a ton of function pointers in there.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 4/5] drm: Allow const struct drm_driver
  2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
@ 2020-10-23 15:11     ` Maxime Ripard
  -1 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:11 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Intel Graphics Development, DRI Development,
	Thomas Zimmermann, Daniel Vetter


[-- Attachment #1.1: Type: text/plain, Size: 721 bytes --]

On Fri, Oct 23, 2020 at 02:28:10PM +0200, Daniel Vetter wrote:
> It's nice if a big function/ioctl table like this is const. Only
> downside here is that we need a few more #ifdef to paper over the
> differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
> motivation to sunset that horror show :-)
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

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

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 4/5] drm: Allow const struct drm_driver
@ 2020-10-23 15:11     ` Maxime Ripard
  0 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:11 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Intel Graphics Development, DRI Development,
	Thomas Zimmermann, Daniel Vetter


[-- Attachment #1.1: Type: text/plain, Size: 721 bytes --]

On Fri, Oct 23, 2020 at 02:28:10PM +0200, Daniel Vetter wrote:
> It's nice if a big function/ioctl table like this is const. Only
> downside here is that we need a few more #ifdef to paper over the
> differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
> motivation to sunset that horror show :-)
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
  2020-10-23 12:28   ` Daniel Vetter
  (?)
@ 2020-10-23 15:13     ` Maxime Ripard
  -1 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:13 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Leo Li, nouveau, Intel Graphics Development, DRI Development,
	virtualization, Eric Anholt, Gerd Hoffmann, Daniel Vetter,
	Alex Deucher, Dave Airlie, Harry Wentland, Christian König,
	Ben Skeggs


[-- Attachment #1.1: Type: text/plain, Size: 1372 bytes --]

On Fri, Oct 23, 2020 at 02:28:11PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>


Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 15:13     ` Maxime Ripard
  0 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:13 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Leo Li, nouveau, Intel Graphics Development, DRI Development,
	virtualization, Gerd Hoffmann, Daniel Vetter, Alex Deucher,
	Dave Airlie, Christian König, Ben Skeggs


[-- Attachment #1.1: Type: text/plain, Size: 1372 bytes --]

On Fri, Oct 23, 2020 at 02:28:11PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>


Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

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

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 15:13     ` Maxime Ripard
  0 siblings, 0 replies; 67+ messages in thread
From: Maxime Ripard @ 2020-10-23 15:13 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Leo Li, nouveau, Intel Graphics Development, DRI Development,
	virtualization, Eric Anholt, Gerd Hoffmann, Daniel Vetter,
	Alex Deucher, Dave Airlie, Harry Wentland, Christian König,
	Ben Skeggs


[-- Attachment #1.1: Type: text/plain, Size: 1372 bytes --]

On Fri, Oct 23, 2020 at 02:28:11PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>


Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
  2020-10-23 12:28   ` Daniel Vetter
                       ` (2 preceding siblings ...)
  (?)
@ 2020-10-23 15:22     ` kernel test robot
  -1 siblings, 0 replies; 67+ messages in thread
From: kernel test robot @ 2020-10-23 15:22 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: kbuild-all, Leo Li, nouveau, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, Gerd Hoffmann,
	Alex Deucher, Daniel Vetter

[-- Attachment #1: Type: text/plain, Size: 2234 bytes --]

Hi Daniel,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next linus/master v5.9 next-20201023]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-randconfig-r011-20201022 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
        git checkout 9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c:921:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
     921 | const static struct drm_driver ade_driver = {
         | ^~~~~

vim +/static +921 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c

   920	
 > 921	const static struct drm_driver ade_driver = {
   922		.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
   923		.fops = &ade_fops,
   924		DRM_GEM_CMA_DRIVER_OPS,
   925		.name = "kirin",
   926		.desc = "Hisilicon Kirin620 SoC DRM Driver",
   927		.date = "20150718",
   928		.major = 1,
   929		.minor = 0,
   930	};
   931	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34713 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 15:22     ` kernel test robot
  0 siblings, 0 replies; 67+ messages in thread
From: kernel test robot @ 2020-10-23 15:22 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: kbuild-all, Leo Li, nouveau, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, Alex Deucher,
	Daniel Vetter

[-- Attachment #1: Type: text/plain, Size: 2234 bytes --]

Hi Daniel,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next linus/master v5.9 next-20201023]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-randconfig-r011-20201022 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
        git checkout 9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c:921:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
     921 | const static struct drm_driver ade_driver = {
         | ^~~~~

vim +/static +921 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c

   920	
 > 921	const static struct drm_driver ade_driver = {
   922		.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
   923		.fops = &ade_fops,
   924		DRM_GEM_CMA_DRIVER_OPS,
   925		.name = "kirin",
   926		.desc = "Hisilicon Kirin620 SoC DRM Driver",
   927		.date = "20150718",
   928		.major = 1,
   929		.minor = 0,
   930	};
   931	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34713 bytes --]

[-- Attachment #3: Type: text/plain, Size: 183 bytes --]

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 15:22     ` kernel test robot
  0 siblings, 0 replies; 67+ messages in thread
From: kernel test robot @ 2020-10-23 15:22 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: kbuild-all, Leo Li, nouveau, Intel Graphics Development,
	virtualization, Gerd Hoffmann, Alex Deucher, Daniel Vetter

[-- Attachment #1: Type: text/plain, Size: 2234 bytes --]

Hi Daniel,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next linus/master v5.9 next-20201023]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-randconfig-r011-20201022 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
        git checkout 9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c:921:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
     921 | const static struct drm_driver ade_driver = {
         | ^~~~~

vim +/static +921 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c

   920	
 > 921	const static struct drm_driver ade_driver = {
   922		.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
   923		.fops = &ade_fops,
   924		DRM_GEM_CMA_DRIVER_OPS,
   925		.name = "kirin",
   926		.desc = "Hisilicon Kirin620 SoC DRM Driver",
   927		.date = "20150718",
   928		.major = 1,
   929		.minor = 0,
   930	};
   931	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34713 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

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

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 15:22     ` kernel test robot
  0 siblings, 0 replies; 67+ messages in thread
From: kernel test robot @ 2020-10-23 15:22 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: kbuild-all, Leo Li, nouveau, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, Gerd Hoffmann,
	Alex Deucher, Daniel Vetter

[-- Attachment #1: Type: text/plain, Size: 2234 bytes --]

Hi Daniel,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next linus/master v5.9 next-20201023]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-randconfig-r011-20201022 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
        git checkout 9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c:921:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
     921 | const static struct drm_driver ade_driver = {
         | ^~~~~

vim +/static +921 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c

   920	
 > 921	const static struct drm_driver ade_driver = {
   922		.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
   923		.fops = &ade_fops,
   924		DRM_GEM_CMA_DRIVER_OPS,
   925		.name = "kirin",
   926		.desc = "Hisilicon Kirin620 SoC DRM Driver",
   927		.date = "20150718",
   928		.major = 1,
   929		.minor = 0,
   930	};
   931	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34713 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 15:22     ` kernel test robot
  0 siblings, 0 replies; 67+ messages in thread
From: kernel test robot @ 2020-10-23 15:22 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2287 bytes --]

Hi Daniel,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next linus/master v5.9 next-20201023]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-randconfig-r011-20201022 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Vetter/drm-radeon-Stop-changing-the-drm_driver-struct/20201023-203020
        git checkout 9e2fdb03c9047a5d4b24b3e95f0370bcc59eec5e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c:921:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
     921 | const static struct drm_driver ade_driver = {
         | ^~~~~

vim +/static +921 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c

   920	
 > 921	const static struct drm_driver ade_driver = {
   922		.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
   923		.fops = &ade_fops,
   924		DRM_GEM_CMA_DRIVER_OPS,
   925		.name = "kirin",
   926		.desc = "Hisilicon Kirin620 SoC DRM Driver",
   927		.date = "20150718",
   928		.major = 1,
   929		.minor = 0,
   930	};
   931	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34713 bytes --]

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [PATCH] drm/<drivers>: Constify struct drm_driver
  2020-10-23 12:28   ` Daniel Vetter
  (?)
  (?)
@ 2020-10-23 16:04       ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 16:04 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, kernel test robot, Leo Li,
	Intel Graphics Development, Maxime Ripard,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Eric Anholt, Gerd Hoffmann,
	nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Alex Deucher,
	Dave Airlie, Harry Wentland, Christian König, Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

v2: Fix one misplaced const static, should be static const (0day)

Cc: kernel test robot <lkp@intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..aa9641a6a7d8 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+static const struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 16:04       ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 16:04 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, kernel test robot, Leo Li, Daniel Vetter,
	Intel Graphics Development, Maxime Ripard, virtualization,
	Eric Anholt, nouveau, Alex Deucher, Dave Airlie, Harry Wentland,
	Christian König, Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

v2: Fix one misplaced const static, should be static const (0day)

Cc: kernel test robot <lkp@intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..aa9641a6a7d8 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+static const struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 16:04       ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 16:04 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, kernel test robot, Leo Li, Daniel Vetter,
	Intel Graphics Development, virtualization, Gerd Hoffmann,
	nouveau, Alex Deucher, Dave Airlie, Christian König,
	Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

v2: Fix one misplaced const static, should be static const (0day)

Cc: kernel test robot <lkp@intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..aa9641a6a7d8 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+static const struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-23 16:04       ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-23 16:04 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Leo Li, Daniel Vetter, Intel Graphics Development,
	Maxime Ripard, virtualization, Eric Anholt, Gerd Hoffmann,
	nouveau, Alex Deucher, Dave Airlie, Harry Wentland,
	Christian König, Ben Skeggs

Only the following drivers aren't converted:
- amdgpu, because of the driver_feature mangling due to virt support
- nouveau, because DRIVER_ATOMIC uapi is still not the default on the
  platforms where it's supported (i.e. again driver_feature mangling)
- vc4, again because of driver_feature mangling
- qxl, because the ioctl table is somewhere else and moving that is
  maybe a bit too much, hence the num_ioctls assignment prevents a
  const driver structure.

Note that for armada I also went ahead and made the ioctl array const.

Only cc'ing the driver people who've not been converted (everyone else
is way too much).

v2: Fix one misplaced const static, should be static const (0day)

Cc: kernel test robot <lkp@intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux-foundation.org
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
 drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
 drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
 drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
 drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
 drivers/gpu/drm/ast/ast_main.c                   | 2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
 drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
 drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
 drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
 drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
 drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
 drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
 drivers/gpu/drm/meson/meson_drv.c                | 2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
 drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
 drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
 drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
 drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
 drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
 drivers/gpu/drm/stm/drv.c                        | 2 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
 drivers/gpu/drm/tegra/drm.c                      | 5 ++---
 drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
 drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
 drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
 drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
 drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
 drivers/gpu/drm/tiny/repaper.c                   | 2 +-
 drivers/gpu/drm/tiny/st7586.c                    | 2 +-
 drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
 drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
 drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
 drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
 drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
 63 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index cc5b5915bc5e..d04008f3e31a 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 	return status;
 }
 
-static struct drm_driver komeda_kms_driver = {
+static const struct drm_driver komeda_kms_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.lastclose			= drm_fb_helper_lastclose,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index faa8a5a752da..81ae92390736 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver hdlcd_driver = {
+static const struct drm_driver hdlcd_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = hdlcd_irq,
 	.irq_preinstall = hdlcd_irq_preinstall,
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 26e60401a8e1..d83c7366b348 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 #endif //CONFIG_DEBUG_FS
 
-static struct drm_driver malidp_driver = {
+static const struct drm_driver malidp_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 22247cfce80b..44fe9f994fc5 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -27,7 +27,7 @@
 #include <drm/armada_drm.h>
 #include "armada_ioctlP.h"
 
-static struct drm_ioctl_desc armada_ioctls[] = {
+static const struct drm_ioctl_desc armada_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
 	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
@@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
 
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
-static struct drm_driver armada_drm_driver = {
+static const struct drm_driver armada_drm_driver = {
 	.lastclose		= drm_fb_helper_lastclose,
 	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
@@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
 	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
+	.num_ioctls = ARRAY_SIZE(armada_ioctls),
 	.fops			= &armada_drm_fops,
 };
 
@@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
 {
 	int ret;
 
-	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
-
 	ret = platform_driver_register(&armada_lcd_platform_driver);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 771ad71cd340..457ec04950f7 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver aspeed_gfx_driver = {
+static const struct drm_driver aspeed_gfx_driver = {
 	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &fops,
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index f0b4af1c390a..667b450606ef 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(ast_fops);
 
-static struct drm_driver ast_driver = {
+static const struct drm_driver ast_driver = {
 	.driver_features = DRIVER_ATOMIC |
 			   DRIVER_GEM |
 			   DRIVER_MODESET,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 467049ca8430..33e596a4f042 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
 	return container_of(dev, struct ast_private, base);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags);
 
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 77066bca8793..45dd8185a488 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -392,7 +392,7 @@ static void ast_device_release(void *data)
 	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
 }
 
-struct ast_private *ast_device_create(struct drm_driver *drv,
+struct ast_private *ast_device_create(const struct drm_driver *drv,
 				      struct pci_dev *pdev,
 				      unsigned long flags)
 {
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 03984932d174..65af56e47129 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver atmel_hlcdc_dc_driver = {
+static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler = atmel_hlcdc_dc_irq_handler,
 	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index e18c51de1196..fd454225fd19 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
 
 DEFINE_DRM_GEM_FOPS(bochs_fops);
 
-static struct drm_driver bochs_driver = {
+static const struct drm_driver bochs_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index aa270b79e585..7604e3c07973 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -480,7 +480,7 @@ static const struct file_operations fops = {
 	.mmap               = etnaviv_gem_mmap,
 };
 
-static struct drm_driver etnaviv_drm_driver = {
+static const struct drm_driver etnaviv_drm_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
 	.open               = etnaviv_open,
 	.postclose           = etnaviv_postclose,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index fe46680ca208..e60257f1f24b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
 	.release	= drm_release,
 };
 
-static struct drm_driver exynos_drm_driver = {
+static const struct drm_driver exynos_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM
 				  | DRIVER_ATOMIC | DRIVER_RENDER,
 	.open			= exynos_drm_open,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index ae584f62aa19..75b58d55a940 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
 
-static struct drm_driver fsl_dcu_drm_driver = {
+static const struct drm_driver fsl_dcu_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.load			= fsl_dcu_load,
 	.unload			= fsl_dcu_unload,
@@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct resource *res;
 	void __iomem *base;
-	struct drm_driver *driver = &fsl_dcu_drm_driver;
 	struct clk *pix_clk_in;
 	char pix_clk_name[32];
 	const char *pix_clk_in_name;
@@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 
 	fsl_dev->tcon = fsl_tcon_init(dev);
 
-	drm = drm_dev_alloc(driver, dev);
+	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
 	if (IS_ERR(drm)) {
 		ret = PTR_ERR(drm);
 		goto unregister_pix_clk;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index b13376a6fb91..6e7197d89463 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -34,7 +34,7 @@
 #include "psb_intel_reg.h"
 #include "psb_reg.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 
 /*
@@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
 	.read = drm_read,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.lastclose = drm_fb_helper_lastclose,
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index a684814927cd..27205aa907f4 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static struct drm_driver hibmc_driver = {
+static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index cfe8ff596d55..aa9641a6a7d8 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
 
-static struct drm_driver ade_driver = {
+static const struct drm_driver ade_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops = &ade_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index dee8ec2f7f2e..386d137f29e5 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -40,7 +40,7 @@ struct kirin_drm_data {
 	u32 num_planes;
 	u32 prim_plane;
 
-	struct drm_driver *driver;
+	const struct drm_driver *driver;
 	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
 	const struct drm_crtc_funcs *crtc_funcs;
 	const struct drm_plane_helper_funcs *plane_helper_funcs;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d3237b0d821d..27249b5e2729 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -87,7 +87,7 @@
 #include "intel_sideband.h"
 #include "vlv_suspend.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
 {
@@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	/* Don't use MTRRs here; the Xserver or userspace app should
 	 * deal with them for Intel hardware.
 	 */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 9220c9d1a4b7..e946bd2087d8 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
 	i915_params_free(&i915->params);
 }
 
-static struct drm_driver mock_driver = {
+static const struct drm_driver mock_driver = {
 	.name = "mock",
 	.driver_features = DRIVER_GEM,
 	.release = mock_device_release,
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index b72e5cef7e40..b549ce5e7607 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 	.atomic_commit = drm_atomic_helper_commit,
 };
 
-static struct drm_driver dcss_kms_driver = {
+static const struct drm_driver dcss_kms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops			= &dcss_cma_fops,
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 183f2e91881d..7090b82e7ea2 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
 	/* none so far */
 };
 
-static struct drm_driver imx_drm_driver = {
+static const struct drm_driver imx_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.ioctls			= imx_drm_ioctls,
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 2329754af116..082cb9e45908 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
 
 DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
 
-static struct drm_driver ingenic_drm_driver_data = {
+static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index ab460121fd52..d497af91d850 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
  * - 1.1.0 - add heap buffer support
  */
 
-static struct drm_driver lima_drm_driver = {
+static const struct drm_driver lima_drm_driver = {
 	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open               = lima_drm_driver_open,
 	.postclose          = lima_drm_driver_postclose,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f9b5f450a9cb..870626e04ec0 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver mcde_drm_driver = {
+static const struct drm_driver mcde_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose = drm_fb_helper_lastclose,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 7f3398a7c2b0..2e8065b1e2bb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
 	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
 }
 
-static struct drm_driver mtk_drm_driver = {
+static const struct drm_driver mtk_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.dumb_create = mtk_drm_gem_dumb_create,
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 8b9c8dd788c4..dc8509ceb787 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver meson_driver = {
+static const struct drm_driver meson_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* IRQ */
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 771b26aeee19..0f07f259503d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
 
 DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
-static struct drm_driver mgag200_driver = {
+static const struct drm_driver mgag200_driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index aa4509766d64..f8fd31e709bb 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
 	return ret;
 }
 
-static int msm_drm_init(struct device *dev, struct drm_driver *drv)
+static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *ddev;
@@ -984,7 +984,7 @@ static const struct file_operations fops = {
 	.mmap               = msm_gem_mmap,
 };
 
-static struct drm_driver msm_driver = {
+static const struct drm_driver msm_driver = {
 	.driver_features    = DRIVER_GEM |
 				DRIVER_RENDER |
 				DRIVER_ATOMIC |
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 35122aef037b..6faf17b6408d 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver mxsfb_driver = {
+static const struct drm_driver mxsfb_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_disable,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 2b82a708eca6..21a6cd3f5473 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
 	.llseek = noop_llseek,
 };
 
-static struct drm_driver omap_drm_driver = {
+static const struct drm_driver omap_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
 		DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = dev_open,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 37d4cb7a5491..ed116bd3d6d6 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
  * - 1.0 - initial interface
  * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
  */
-static struct drm_driver panfrost_drm_driver = {
+static const struct drm_driver panfrost_drm_driver = {
 	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
 	.open			= panfrost_open,
 	.postclose		= panfrost_postclose,
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 3899c28f428d..10d9a12be672 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver pl111_drm_driver = {
+static const struct drm_driver pl111_drm_driver = {
 	.driver_features =
 		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 9c11e36ad33a..bfadb799d6a3 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, pciidlist);
 
-static struct drm_driver kms_driver;
+static const struct drm_driver kms_driver;
 
 bool radeon_device_is_virtual(void);
 
@@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
 	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
-static struct drm_driver kms_driver = {
+static const struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 447be991fa25..600056dff374 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
 
 DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
 
-static struct drm_driver rcar_du_driver = {
+static const struct drm_driver rcar_du_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
 	.fops			= &rcar_du_fops,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b7654f5e4225..212bd87c0c4a 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -35,7 +35,7 @@
 #define DRIVER_MINOR	0
 
 static bool is_support_iommu = true;
-static struct drm_driver rockchip_drm_driver;
+static const struct drm_driver rockchip_drm_driver;
 
 /*
  * Attach a (component) device to the shared drm dma mapping from master drm
@@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
 	.release = drm_release,
 };
 
-static struct drm_driver rockchip_drm_driver = {
+static const struct drm_driver rockchip_drm_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.lastclose		= drm_fb_helper_lastclose,
 	.dumb_create		= rockchip_gem_dumb_create,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 26a15c214bd3..0a02b7092c04 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
 
 DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
 
-static struct drm_driver shmob_drm_driver = {
+static const struct drm_driver shmob_drm_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
 	.irq_handler		= shmob_drm_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 3f54efa36098..c7efb43b83ee 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
 
-static struct drm_driver sti_driver = {
+static const struct drm_driver sti_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.fops = &sti_driver_fops,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 411103f013e2..222869b232ae 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
 
 DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
 
-static struct drm_driver drv_driver = {
+static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 29861fc81b35..91502937f26d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
 
 DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
 
-static struct drm_driver sun4i_drv_driver = {
+static const struct drm_driver sun4i_drv_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
 	/* Generic Operations */
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 24f353c1cee8..ae13a3ff8a87 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-static struct drm_driver tegra_drm_driver = {
+static const struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM |
 			   DRIVER_ATOMIC | DRIVER_RENDER,
 	.open = tegra_drm_open,
@@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 
 static int host1x_drm_probe(struct host1x_device *dev)
 {
-	struct drm_driver *driver = &tegra_drm_driver;
 	struct tegra_drm *tegra;
 	struct drm_device *drm;
 	int err;
 
-	drm = drm_dev_alloc(driver, &dev->dev);
+	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 9179ea18f625..66e3c86eb5c7 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
 
 DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
 
-static struct drm_driver tidss_driver = {
+static const struct drm_driver tidss_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &tidss_fops,
 	.release		= tidss_release,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index c5f82e693f1a..137f74f613ab 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
 	drm_dev_put(dev);
 }
 
-static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
+static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
 {
 	struct drm_device *ddev;
 	struct platform_device *pdev = to_platform_device(dev);
@@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 
 DEFINE_DRM_GEM_CMA_FOPS(fops);
 
-static struct drm_driver tilcdc_driver = {
+static const struct drm_driver tilcdc_driver = {
 	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.irq_handler        = tilcdc_irq,
 	DRM_GEM_CMA_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index 759a5a66dd0b..e5641969c181 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
 
 DEFINE_DRM_GEM_FOPS(cirrus_fops);
 
-static struct drm_driver cirrus_driver = {
+static const struct drm_driver cirrus_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index cc397671f689..5a953c4ce265 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
 
 DEFINE_DRM_GEM_FOPS(gm12u320_fops);
 
-static struct drm_driver gm12u320_drm_driver = {
+static const struct drm_driver gm12u320_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
 	.name		 = DRIVER_NAME,
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 0998309b0d95..c6525cd02bc2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
 
-static struct drm_driver hx8357d_driver = {
+static const struct drm_driver hx8357d_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hx8357d_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 97a77262d791..8e98962db5a2 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
 
-static struct drm_driver ili9225_driver = {
+static const struct drm_driver ili9225_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9225_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index d39c39df56ad..6ce97f0698eb 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
 
-static struct drm_driver ili9341_driver = {
+static const struct drm_driver ili9341_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9341_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 403af68fa440..d7ce40eb166a 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
 
-static struct drm_driver ili9486_driver = {
+static const struct drm_driver ili9486_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &ili9486_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index 2131b4268c00..ff77f983f803 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
 
-static struct drm_driver mi0283qt_driver = {
+static const struct drm_driver mi0283qt_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &mi0283qt_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 2e01cf0a9876..11c602fc9897 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
 
 DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
 
-static struct drm_driver repaper_driver = {
+static const struct drm_driver repaper_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &repaper_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index d05de03891f8..ff5cf60f4bd7 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
 
-static struct drm_driver st7586_driver = {
+static const struct drm_driver st7586_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7586_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index a0f688f0d050..2c77d9ab7e8d 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
 
 DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
 
-static struct drm_driver st7735r_driver = {
+static const struct drm_driver st7735r_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &st7735r_fops,
 	DRM_GEM_CMA_DRIVER_OPS_VMAP,
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b5259cb1383f..07140e0b90a3 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
 
 DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
 
-static struct drm_driver tve200_drm_driver = {
+static const struct drm_driver tve200_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.ioctls = NULL,
 	.fops = &drm_fops,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 96d4317a2c1b..46df4d07bd7b 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
 
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
 
 	/* GEM hooks */
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index 9f7c26193831..2da0c1180bc6 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
 	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
 };
 
-static struct drm_driver v3d_drm_driver = {
+static const struct drm_driver v3d_drm_driver = {
 	.driver_features = (DRIVER_GEM |
 			    DRIVER_RENDER |
 			    DRIVER_SYNCOBJ),
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index cf2e3e6a2388..f3eac72cb46e 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -26,7 +26,7 @@ static int vbox_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, vbox_modeset, int, 0400);
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
 	{ PCI_DEVICE(0x80ee, 0xbeef) },
@@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
 
 DEFINE_DRM_GEM_FOPS(vbox_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index fa54a6d1403d..3e9b7a4c30ce 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
 	.vm_ops = &vgem_gem_vm_ops,
 };
 
-static struct drm_driver vgem_driver = {
+static const struct drm_driver vgem_driver = {
 	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
 	.open				= vgem_open,
 	.postclose			= vgem_postclose,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 86330f1ade72..27f13bd29c13 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -37,7 +37,7 @@
 
 #include "virtgpu_drv.h"
 
-static struct drm_driver driver;
+static const struct drm_driver driver;
 
 static int virtio_gpu_modeset = -1;
 
@@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
 
 DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
 	.open = virtio_gpu_driver_open,
 	.postclose = virtio_gpu_driver_postclose,
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 98ba844ae77d..8056b3d1ff6a 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static struct drm_driver vkms_driver = {
+static const struct drm_driver vkms_driver = {
 	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
 	.release		= vkms_release,
 	.fops			= &vkms_driver_fops,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 68206d0a1237..e66b252e3923 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
 	.get_unmapped_area = vmw_get_unmapped_area,
 };
 
-static struct drm_driver driver = {
+static const struct drm_driver driver = {
 	.driver_features =
 	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
 	.ioctls = vmw_ioctls,
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 98b6d2ba088a..30d9adf31c84 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
 	.mmap           = xen_drm_front_gem_mmap,
 };
 
-static struct drm_driver xen_drm_driver = {
+static const struct drm_driver xen_drm_driver = {
 	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.release                   = xen_drm_drv_release,
 	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index f3ffc3703a0e..0c1c50271a88 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
 
-static struct drm_driver zynqmp_dpsub_drm_driver = {
+static const struct drm_driver zynqmp_dpsub_drm_driver = {
 	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
 					  DRIVER_ATOMIC,
 
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 31014a451f8b..5506336594e2 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
 
 DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
 
-static struct drm_driver zx_drm_driver = {
+static const struct drm_driver zx_drm_driver = {
 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	DRM_GEM_CMA_DRIVER_OPS,
 	.fops = &zx_drm_fops,
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (8 preceding siblings ...)
  (?)
@ 2020-10-23 16:32 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 16:32 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
URL   : https://patchwork.freedesktop.org/series/82993/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
2f883aa943af drm/radeon: Stop changing the drm_driver struct
-:60: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#60: FILE: drivers/gpu/drm/radeon/radeon_drv.c:587:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                          ^

-:60: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#60: FILE: drivers/gpu/drm/radeon/radeon_drv.c:587:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                     ^

-:61: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#61: FILE: drivers/gpu/drm/radeon/radeon_drv.c:588:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                           ^

-:61: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#61: FILE: drivers/gpu/drm/radeon/radeon_drv.c:588:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                      ^

-:62: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#62: FILE: drivers/gpu/drm/radeon/radeon_drv.c:589:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                          ^

-:62: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#62: FILE: drivers/gpu/drm/radeon/radeon_drv.c:589:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                     ^

-:63: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#63: FILE: drivers/gpu/drm/radeon/radeon_drv.c:590:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                           ^

-:63: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#63: FILE: drivers/gpu/drm/radeon/radeon_drv.c:590:
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                      ^

-:74: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#74: FILE: drivers/gpu/drm/radeon/radeon_drv.c:601:
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                           ^

-:74: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#74: FILE: drivers/gpu/drm/radeon/radeon_drv.c:601:
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                      ^

-:81: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#81: FILE: drivers/gpu/drm/radeon/radeon_drv.c:608:
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                            ^

-:81: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#81: FILE: drivers/gpu/drm/radeon/radeon_drv.c:608:
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
 	                                                                       ^

-:88: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#88: FILE: drivers/gpu/drm/radeon/radeon_drv.c:615:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                  ^

-:89: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#89: FILE: drivers/gpu/drm/radeon/radeon_drv.c:616:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                      ^

-:90: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#90: FILE: drivers/gpu/drm/radeon/radeon_drv.c:617:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                  ^

-:91: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#91: FILE: drivers/gpu/drm/radeon/radeon_drv.c:618:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:91: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#91: FILE: drivers/gpu/drm/radeon/radeon_drv.c:618:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                              ^

-:94: WARNING:LONG_LINE: line length of 103 exceeds 100 columns
#94: FILE: drivers/gpu/drm/radeon/radeon_drv.c:621:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:94: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#94: FILE: drivers/gpu/drm/radeon/radeon_drv.c:621:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                            ^

-:95: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#95: FILE: drivers/gpu/drm/radeon/radeon_drv.c:622:
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                      ^

-:96: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#96: FILE: drivers/gpu/drm/radeon/radeon_drv.c:623:
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                          ^

-:97: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#97: FILE: drivers/gpu/drm/radeon/radeon_drv.c:624:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:97: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#97: FILE: drivers/gpu/drm/radeon/radeon_drv.c:624:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                              ^

-:98: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#98: FILE: drivers/gpu/drm/radeon/radeon_drv.c:625:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),

-:98: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#98: FILE: drivers/gpu/drm/radeon/radeon_drv.c:625:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                              ^

-:99: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#99: FILE: drivers/gpu/drm/radeon/radeon_drv.c:626:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                  ^

-:100: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#100: FILE: drivers/gpu/drm/radeon/radeon_drv.c:627:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                              ^

-:101: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#101: FILE: drivers/gpu/drm/radeon/radeon_drv.c:628:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                              ^

-:102: CHECK:SPACING: spaces preferred around that '|' (ctx:VxV)
#102: FILE: drivers/gpu/drm/radeon/radeon_drv.c:629:
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
 	                                                                        ^

total: 0 errors, 4 warnings, 25 checks, 157 lines checked
7ed751705b45 drm: Compile out legacy chunks from struct drm_device
-:50: WARNING:BRACES: braces {} are not necessary for single statement blocks
#50: FILE: drivers/gpu/drm/drm_vblank.c:214:
+	else if (dev->driver->get_vblank_counter) {
 		return dev->driver->get_vblank_counter(dev, pipe);
 	}

-:64: WARNING:BRACES: braces {} are not necessary for single statement blocks
#64: FILE: drivers/gpu/drm/drm_vblank.c:437:
+	else {
 		dev->driver->disable_vblank(dev, pipe);
 	}

-:64: CHECK:BRACES: Unbalanced braces around else statement
#64: FILE: drivers/gpu/drm/drm_vblank.c:437:
+	else {

-:78: WARNING:BRACES: braces {} are not necessary for single statement blocks
#78: FILE: drivers/gpu/drm/drm_vblank.c:1107:
+	else if (dev->driver->enable_vblank) {
 		return dev->driver->enable_vblank(dev, pipe);
 	}

total: 0 errors, 3 warnings, 1 checks, 64 lines checked
4f84e9660b68 drm/amdgpu: Paper over the drm_driver mangling for virt
93256c8fddc6 drm: Allow const struct drm_driver
-:38: CHECK:SPACING: No space is necessary after a cast
#38: FILE: drivers/gpu/drm/drm_drv.c:593:
+	dev->driver = (struct drm_driver *) driver;

total: 0 errors, 0 warnings, 1 checks, 80 lines checked
2976dd730172 drm/<drivers>: Constify struct drm_driver
-:698: WARNING:OBSOLETE: drivers/gpu/drm/tiny/cirrus.c is marked as 'obsolete' in the MAINTAINERS hierarchy.  No unnecessary modifications please.

-:701: WARNING:OBSOLETE: drivers/gpu/drm/tiny/cirrus.c is marked as 'obsolete' in the MAINTAINERS hierarchy.  No unnecessary modifications please.

total: 0 errors, 2 warnings, 0 checks, 619 lines checked


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (9 preceding siblings ...)
  (?)
@ 2020-10-23 16:34 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 16:34 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
URL   : https://patchwork.freedesktop.org/series/82993/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
-
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgv_sriovmsg.h:261:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1367:25: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1367:25:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1367:25:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1368:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1368:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1368:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1427:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1427:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1427:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:262:16: error: incompatible types in comparison expression (different type sizes):
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:262:16:    unsigned long *
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:262:16:    unsigned long long *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:274:25: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:274:25:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:274:25:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:275:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:275:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:275:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:330:17: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:330:17:    struct dma_fence *
+drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c:330:17:    struct dma_fence [noderef] __rcu *
+drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.h:92:56: error: marked inline, but without a definition
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:257:49:


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (10 preceding siblings ...)
  (?)
@ 2020-10-23 16:57 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 16:57 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 4990 bytes --]

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
URL   : https://patchwork.freedesktop.org/series/82993/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_9191 -> Patchwork_18776
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/index.html

Known issues
------------

  Here are the changes found in Patchwork_18776 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - fi-icl-u2:          [PASS][1] -> [DMESG-WARN][2] ([i915#1982]) +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  
#### Possible fixes ####

  * igt@gem_close_race@basic-threads:
    - fi-apl-guc:         [INCOMPLETE][3] ([i915#1635]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-apl-guc/igt@gem_close_race@basic-threads.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-apl-guc/igt@gem_close_race@basic-threads.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-bsw-kefka:       [DMESG-WARN][5] ([i915#1982]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@i915_pm_rpm@module-reload:
    - fi-byt-j1900:       [DMESG-WARN][7] ([i915#1982]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html

  * igt@kms_chamelium@dp-crc-fast:
    - fi-kbl-7500u:       [DMESG-WARN][9] ([i915#165]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-kbl-7500u/igt@kms_chamelium@dp-crc-fast.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-kbl-7500u/igt@kms_chamelium@dp-crc-fast.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-kbl-7500u:       [DMESG-WARN][11] ([i915#2203]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-kbl-7500u/igt@kms_chamelium@hdmi-crc-fast.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-kbl-7500u/igt@kms_chamelium@hdmi-crc-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - {fi-kbl-7560u}:     [DMESG-WARN][13] ([i915#1982]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-kbl-7560u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-kbl-7560u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - fi-icl-u2:          [DMESG-WARN][15] ([i915#1982]) -> [PASS][16] +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#165]: https://gitlab.freedesktop.org/drm/intel/issues/165
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2203]: https://gitlab.freedesktop.org/drm/intel/issues/2203


Participating hosts (46 -> 39)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * Linux: CI_DRM_9191 -> Patchwork_18776

  CI-20190529: 20190529
  CI_DRM_9191: 4b693bbb9b41fda404b5cd081bf5cd8dba240468 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5823: 7dd2fe99bd9dde00456cc5abf7e5ef0c8d7d6118 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_18776: 2976dd730172e1543502c3fd764f34e6f28b77f9 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

2976dd730172 drm/<drivers>: Constify struct drm_driver
93256c8fddc6 drm: Allow const struct drm_driver
4f84e9660b68 drm/amdgpu: Paper over the drm_driver mangling for virt
7ed751705b45 drm: Compile out legacy chunks from struct drm_device
2f883aa943af drm/radeon: Stop changing the drm_driver struct

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/index.html

[-- Attachment #1.2: Type: text/html, Size: 6084 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (11 preceding siblings ...)
  (?)
@ 2020-10-23 17:11 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 17:11 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 17262 bytes --]

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct
URL   : https://patchwork.freedesktop.org/series/82993/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_9190_full -> Patchwork_18771_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_18771_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_18771_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_18771_full:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_frontbuffer_tracking@fbc-badstride:
    - shard-tglb:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-tglb6/igt@kms_frontbuffer_tracking@fbc-badstride.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-tglb6/igt@kms_frontbuffer_tracking@fbc-badstride.html

  * igt@kms_plane_cursor@pipe-c-viewport-size-64:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-kbl2/igt@kms_plane_cursor@pipe-c-viewport-size-64.html

  * igt@perf@blocking-parameterized:
    - shard-kbl:          NOTRUN -> [INCOMPLETE][4] +3 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-kbl2/igt@perf@blocking-parameterized.html

  * igt@prime_vgem@coherency-blt:
    - shard-hsw:          [PASS][5] -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-hsw5/igt@prime_vgem@coherency-blt.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-hsw4/igt@prime_vgem@coherency-blt.html

  
Known issues
------------

  Here are the changes found in Patchwork_18771_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_whisper@basic-queues-forked:
    - shard-glk:          [PASS][7] -> [DMESG-WARN][8] ([i915#118] / [i915#95])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk9/igt@gem_exec_whisper@basic-queues-forked.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk9/igt@gem_exec_whisper@basic-queues-forked.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-skl:          [PASS][9] -> [TIMEOUT][10] ([i915#2424])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl4/igt@gem_userptr_blits@unsync-unmap-cycles.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl2/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@i915_suspend@sysfs-reader:
    - shard-skl:          [PASS][11] -> [INCOMPLETE][12] ([i915#198]) +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl2/igt@i915_suspend@sysfs-reader.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl2/igt@i915_suspend@sysfs-reader.html

  * igt@kms_big_fb@linear-32bpp-rotate-180:
    - shard-glk:          [PASS][13] -> [DMESG-FAIL][14] ([i915#118] / [i915#95]) +1 similar issue
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk6/igt@kms_big_fb@linear-32bpp-rotate-180.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk9/igt@kms_big_fb@linear-32bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-apl:          [PASS][15] -> [DMESG-WARN][16] ([i915#1635] / [i915#1982]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-apl4/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-apl3/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_cursor_crc@pipe-c-cursor-128x128-onscreen:
    - shard-skl:          [PASS][17] -> [FAIL][18] ([i915#54])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl4/igt@kms_cursor_crc@pipe-c-cursor-128x128-onscreen.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl7/igt@kms_cursor_crc@pipe-c-cursor-128x128-onscreen.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-skl:          [PASS][19] -> [FAIL][20] ([i915#79])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl1/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl2/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_flip@plain-flip-ts-check@b-edp1:
    - shard-skl:          [PASS][21] -> [FAIL][22] ([i915#2122])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl2/igt@kms_flip@plain-flip-ts-check@b-edp1.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl9/igt@kms_flip@plain-flip-ts-check@b-edp1.html

  * igt@kms_frontbuffer_tracking@fbc-modesetfrombusy:
    - shard-snb:          [PASS][23] -> [INCOMPLETE][24] ([i915#82])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-snb2/igt@kms_frontbuffer_tracking@fbc-modesetfrombusy.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-snb4/igt@kms_frontbuffer_tracking@fbc-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:
    - shard-tglb:         [PASS][25] -> [DMESG-WARN][26] ([i915#1982]) +4 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-tglb7/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-tglb1/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbc-stridechange:
    - shard-glk:          [PASS][27] -> [DMESG-WARN][28] ([i915#1982])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk5/igt@kms_frontbuffer_tracking@fbc-stridechange.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk4/igt@kms_frontbuffer_tracking@fbc-stridechange.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
    - shard-skl:          [PASS][29] -> [FAIL][30] ([fdo#108145] / [i915#265])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl4/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html

  * igt@kms_plane_scaling@pipe-c-plane-scaling:
    - shard-skl:          [PASS][31] -> [DMESG-WARN][32] ([i915#1982]) +8 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl1/igt@kms_plane_scaling@pipe-c-plane-scaling.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl8/igt@kms_plane_scaling@pipe-c-plane-scaling.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [PASS][33] -> [SKIP][34] ([fdo#109441]) +2 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-iclb7/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@perf_pmu@module-unload:
    - shard-iclb:         [PASS][35] -> [DMESG-WARN][36] ([i915#1982])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-iclb8/igt@perf_pmu@module-unload.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-iclb2/igt@perf_pmu@module-unload.html

  
#### Possible fixes ####

  * igt@gem_exec_reloc@basic-gtt-read-active:
    - shard-skl:          [DMESG-WARN][37] ([i915#1982]) -> [PASS][38] +3 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl1/igt@gem_exec_reloc@basic-gtt-read-active.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl4/igt@gem_exec_reloc@basic-gtt-read-active.html

  * igt@gem_exec_whisper@basic-contexts:
    - shard-glk:          [DMESG-WARN][39] ([i915#118] / [i915#95]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk2/igt@gem_exec_whisper@basic-contexts.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk3/igt@gem_exec_whisper@basic-contexts.html

  * igt@i915_pm_rc6_residency@rc6-fence:
    - shard-hsw:          [WARN][41] ([i915#1519]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-hsw6/igt@i915_pm_rc6_residency@rc6-fence.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-hsw4/igt@i915_pm_rc6_residency@rc6-fence.html

  * igt@i915_suspend@debugfs-reader:
    - shard-kbl:          [INCOMPLETE][43] ([i915#155]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-kbl4/igt@i915_suspend@debugfs-reader.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-kbl2/igt@i915_suspend@debugfs-reader.html

  * {igt@kms_async_flips@async-flip-with-page-flip-events}:
    - shard-glk:          [FAIL][45] ([i915#2521]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk7/igt@kms_async_flips@async-flip-with-page-flip-events.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk6/igt@kms_async_flips@async-flip-with-page-flip-events.html
    - shard-apl:          [FAIL][47] ([i915#1635] / [i915#2521]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-apl6/igt@kms_async_flips@async-flip-with-page-flip-events.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-apl4/igt@kms_async_flips@async-flip-with-page-flip-events.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-kbl:          [DMESG-WARN][49] ([i915#1982]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-kbl4/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-kbl2/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_cursor_edge_walk@pipe-c-128x128-top-edge:
    - shard-glk:          [DMESG-WARN][51] ([i915#1982]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk8/igt@kms_cursor_edge_walk@pipe-c-128x128-top-edge.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk6/igt@kms_cursor_edge_walk@pipe-c-128x128-top-edge.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-hsw:          [FAIL][53] ([i915#96]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-hsw8/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-hsw2/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [FAIL][55] ([i915#72]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-glk1/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled:
    - shard-apl:          [DMESG-WARN][57] ([i915#1635] / [i915#1982]) -> [PASS][58] +1 similar issue
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-apl4/igt@kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-apl4/igt@kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-blt-untiled:
    - shard-snb:          [FAIL][59] ([i915#54]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-snb4/igt@kms_draw_crc@draw-method-xrgb2101010-blt-untiled.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-snb7/igt@kms_draw_crc@draw-method-xrgb2101010-blt-untiled.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
    - shard-skl:          [FAIL][61] ([i915#79]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl9/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen:
    - shard-tglb:         [DMESG-WARN][63] ([i915#1982]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-tglb7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_hdr@bpc-switch:
    - shard-skl:          [FAIL][65] ([i915#1188]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl4/igt@kms_hdr@bpc-switch.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl6/igt@kms_hdr@bpc-switch.html

  * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
    - shard-skl:          [FAIL][67] ([fdo#108145] / [i915#265]) -> [PASS][68] +2 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl9/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl7/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html

  * igt@kms_psr@psr2_cursor_blt:
    - shard-iclb:         [SKIP][69] ([fdo#109441]) -> [PASS][70] +1 similar issue
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-iclb4/igt@kms_psr@psr2_cursor_blt.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-iclb2/igt@kms_psr@psr2_cursor_blt.html

  * igt@kms_setmode@basic:
    - shard-apl:          [FAIL][71] ([i915#1635] / [i915#31]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-apl7/igt@kms_setmode@basic.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-apl8/igt@kms_setmode@basic.html

  * igt@prime_vgem@coherency-blt:
    - shard-snb:          [FAIL][73] -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-snb4/igt@prime_vgem@coherency-blt.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-snb7/igt@prime_vgem@coherency-blt.html

  * igt@sysfs_heartbeat_interval@mixed@bcs0:
    - shard-skl:          [FAIL][75] ([i915#1731]) -> [PASS][76]
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9190/shard-skl10/igt@sysfs_heartbeat_interval@mixed@bcs0.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/shard-skl4/igt@sysfs_heartbeat_interval@mixed@bcs0.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
  [i915#1519]: https://gitlab.freedesktop.org/drm/intel/issues/1519
  [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155
  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#1731]: https://gitlab.freedesktop.org/drm/intel/issues/1731
  [i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
  [i915#2424]: https://gitlab.freedesktop.org/drm/intel/issues/2424
  [i915#2521]: https://gitlab.freedesktop.org/drm/intel/issues/2521
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
  [i915#96]: https://gitlab.freedesktop.org/drm/intel/issues/96


Participating hosts (11 -> 11)
------------------------------

  No changes in participating hosts


Build changes
-------------

  * Linux: CI_DRM_9190 -> Patchwork_18771

  CI-20190529: 20190529
  CI_DRM_9190: a3d535579dd93942862b867b4452ba11e4f6bbb1 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5822: b4bcf05cb9839037128905deda7146434155cc41 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_18771: 81dc6fc9de5a8ba37221f7b44f79767ec691b5a1 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18771/index.html

[-- Attachment #1.2: Type: text/html, Size: 20331 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
  2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
                   ` (12 preceding siblings ...)
  (?)
@ 2020-10-23 20:37 ` Patchwork
  -1 siblings, 0 replies; 67+ messages in thread
From: Patchwork @ 2020-10-23 20:37 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 14560 bytes --]

== Series Details ==

Series: series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2)
URL   : https://patchwork.freedesktop.org/series/82993/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_9191_full -> Patchwork_18776_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_18776_full:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@core_hotunplug@hotrebind}:
    - shard-hsw:          NOTRUN -> [WARN][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-hsw1/igt@core_hotunplug@hotrebind.html

  
Known issues
------------

  Here are the changes found in Patchwork_18776_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_create@basic:
    - shard-glk:          [PASS][2] -> [DMESG-WARN][3] ([i915#118] / [i915#95])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-glk4/igt@gem_exec_create@basic.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-glk1/igt@gem_exec_create@basic.html

  * igt@gem_exec_reloc@basic-many-active@vecs0:
    - shard-glk:          [PASS][4] -> [FAIL][5] ([i915#2389]) +1 similar issue
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-glk4/igt@gem_exec_reloc@basic-many-active@vecs0.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-glk5/igt@gem_exec_reloc@basic-many-active@vecs0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglb:         [PASS][6] -> [SKIP][7] ([i915#2190])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-tglb7/igt@gem_huc_copy@huc-copy.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-tglb6/igt@gem_huc_copy@huc-copy.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-skl:          [PASS][8] -> [DMESG-WARN][9] ([i915#1436] / [i915#716])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl2/igt@gen9_exec_parse@allowed-single.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl2/igt@gen9_exec_parse@allowed-single.html

  * igt@kms_cursor_edge_walk@pipe-c-64x64-right-edge:
    - shard-glk:          [PASS][10] -> [DMESG-WARN][11] ([i915#1982])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-glk3/igt@kms_cursor_edge_walk@pipe-c-64x64-right-edge.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-glk3/igt@kms_cursor_edge_walk@pipe-c-64x64-right-edge.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-blt-xtiled:
    - shard-snb:          [PASS][12] -> [FAIL][13] ([i915#54])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-snb2/igt@kms_draw_crc@draw-method-xrgb2101010-blt-xtiled.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-snb2/igt@kms_draw_crc@draw-method-xrgb2101010-blt-xtiled.html

  * igt@kms_flip@basic-plain-flip@a-edp1:
    - shard-skl:          [PASS][14] -> [DMESG-WARN][15] ([i915#1982]) +14 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl6/igt@kms_flip@basic-plain-flip@a-edp1.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl7/igt@kms_flip@basic-plain-flip@a-edp1.html

  * igt@kms_flip@modeset-vs-vblank-race@a-dp1:
    - shard-apl:          [PASS][16] -> [DMESG-WARN][17] ([i915#1635] / [i915#1982])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-apl4/igt@kms_flip@modeset-vs-vblank-race@a-dp1.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-apl4/igt@kms_flip@modeset-vs-vblank-race@a-dp1.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-dp1:
    - shard-kbl:          [PASS][18] -> [DMESG-WARN][19] ([i915#1982]) +1 similar issue
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-kbl4/igt@kms_flip@wf_vblank-ts-check-interruptible@a-dp1.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-kbl6/igt@kms_flip@wf_vblank-ts-check-interruptible@a-dp1.html

  * igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
    - shard-tglb:         [PASS][20] -> [DMESG-WARN][21] ([i915#1982]) +2 similar issues
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-tglb1/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-tglb5/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-skl:          [PASS][22] -> [FAIL][23] ([i915#1188])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl4/igt@kms_hdr@bpc-switch-suspend.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl10/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
    - shard-skl:          [PASS][24] -> [FAIL][25] ([fdo#108145] / [i915#265]) +1 similar issue
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl6/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl4/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_render:
    - shard-iclb:         [PASS][26] -> [SKIP][27] ([fdo#109441])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-iclb3/igt@kms_psr@psr2_sprite_render.html

  * igt@perf@polling:
    - shard-skl:          [PASS][28] -> [FAIL][29] ([i915#1542])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl7/igt@perf@polling.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl4/igt@perf@polling.html

  * igt@perf@polling-parameterized:
    - shard-glk:          [PASS][30] -> [FAIL][31] ([i915#1542])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-glk6/igt@perf@polling-parameterized.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-glk6/igt@perf@polling-parameterized.html

  
#### Possible fixes ####

  * igt@gem_ctx_isolation@preservation-s3@vcs0:
    - shard-skl:          [INCOMPLETE][32] ([i915#198]) -> [PASS][33]
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl4/igt@gem_ctx_isolation@preservation-s3@vcs0.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl6/igt@gem_ctx_isolation@preservation-s3@vcs0.html

  * {igt@kms_async_flips@alternate-sync-async-flip}:
    - shard-kbl:          [FAIL][34] ([i915#2521]) -> [PASS][35]
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-kbl6/igt@kms_async_flips@alternate-sync-async-flip.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-kbl6/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-0:
    - shard-glk:          [DMESG-WARN][36] ([i915#1982]) -> [PASS][37]
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-glk3/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-glk3/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html

  * igt@kms_cursor_crc@pipe-c-cursor-128x128-offscreen:
    - shard-skl:          [FAIL][38] ([i915#54]) -> [PASS][39]
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl2/igt@kms_cursor_crc@pipe-c-cursor-128x128-offscreen.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl2/igt@kms_cursor_crc@pipe-c-cursor-128x128-offscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
    - shard-kbl:          [DMESG-WARN][40] ([i915#180]) -> [PASS][41]
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-kbl4/igt@kms_cursor_crc@pipe-c-cursor-suspend.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-hsw:          [FAIL][42] ([i915#96]) -> [PASS][43]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-hsw6/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-hsw4/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_flip@flip-vs-suspend@c-hdmi-a1:
    - shard-hsw:          [INCOMPLETE][44] ([i915#2055]) -> [PASS][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-hsw1/igt@kms_flip@flip-vs-suspend@c-hdmi-a1.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-hsw1/igt@kms_flip@flip-vs-suspend@c-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
    - shard-snb:          [INCOMPLETE][46] ([i915#82]) -> [PASS][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-snb5/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-snb7/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
    - shard-tglb:         [DMESG-WARN][48] ([i915#1982]) -> [PASS][49]
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-tglb5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-kbl:          [DMESG-WARN][50] ([i915#1982]) -> [PASS][51] +1 similar issue
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc:
    - shard-skl:          [DMESG-WARN][52] ([i915#1982]) -> [PASS][53] +3 similar issues
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl9/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl1/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc.html

  * igt@kms_psr@psr2_cursor_mmap_cpu:
    - shard-iclb:         [SKIP][54] ([fdo#109441]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-iclb3/igt@kms_psr@psr2_cursor_mmap_cpu.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html

  
#### Warnings ####

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-iclb:         [FAIL][56] ([i915#1515]) -> [WARN][57] ([i915#1515])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-iclb5/igt@i915_pm_rc6_residency@rc6-idle.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-iclb1/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
    - shard-skl:          [FAIL][58] ([fdo#108145] / [i915#265]) -> [DMESG-FAIL][59] ([fdo#108145] / [i915#1982])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl7/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl7/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html

  * igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:
    - shard-skl:          [DMESG-FAIL][60] ([fdo#108145] / [i915#1982]) -> [FAIL][61] ([fdo#108145] / [i915#265])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9191/shard-skl2/igt@kms_plane_alpha_blend@pipe-c-alpha-7efc.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/shard-skl2/igt@kms_plane_alpha_blend@pipe-c-alpha-7efc.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1515]: https://gitlab.freedesktop.org/drm/intel/issues/1515
  [i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2055]: https://gitlab.freedesktop.org/drm/intel/issues/2055
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2389]: https://gitlab.freedesktop.org/drm/intel/issues/2389
  [i915#2521]: https://gitlab.freedesktop.org/drm/intel/issues/2521
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
  [i915#96]: https://gitlab.freedesktop.org/drm/intel/issues/96


Participating hosts (11 -> 11)
------------------------------

  No changes in participating hosts


Build changes
-------------

  * Linux: CI_DRM_9191 -> Patchwork_18776

  CI-20190529: 20190529
  CI_DRM_9191: 4b693bbb9b41fda404b5cd081bf5cd8dba240468 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5823: 7dd2fe99bd9dde00456cc5abf7e5ef0c8d7d6118 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_18776: 2976dd730172e1543502c3fd764f34e6f28b77f9 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18776/index.html

[-- Attachment #1.2: Type: text/html, Size: 17266 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 4/5] drm: Allow const struct drm_driver
  2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
@ 2020-10-25 21:44     ` Sam Ravnborg
  -1 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 21:44 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Thomas Zimmermann, DRI Development

On Fri, Oct 23, 2020 at 02:28:10PM +0200, Daniel Vetter wrote:
> It's nice if a big function/ioctl table like this is const. Only
> downside here is that we need a few more #ifdef to paper over the
> differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
> motivation to sunset that horror show :-)
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/drm_drv.c | 15 ++++++++++-----
>  include/drm/drm_device.h  |  4 ++++
>  include/drm/drm_drv.h     |  5 +++--
>  3 files changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 457ac0f82be2..94d2c41115b8 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
>  }
>  
>  static int drm_dev_init(struct drm_device *dev,
> -			struct drm_driver *driver,
> +			const struct drm_driver *driver,
>  			struct device *parent)
>  {
>  	int ret;
> @@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev,
>  
>  	kref_init(&dev->ref);
>  	dev->dev = get_device(parent);
> +#ifdef CONFIG_DRM_LEGACY
> +	dev->driver = (struct drm_driver *) driver;
checkpatch will tell you to drop space after closing ')'

With this super important fix the patch is:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> +#else
>  	dev->driver = driver;
> +#endif
>  
>  	INIT_LIST_HEAD(&dev->managed.resources);
>  	spin_lock_init(&dev->managed.lock);
> @@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data)
>  
>  static int devm_drm_dev_init(struct device *parent,
>  			     struct drm_device *dev,
> -			     struct drm_driver *driver)
> +			     const struct drm_driver *driver)
>  {
>  	int ret;
>  
> @@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent,
>  	return ret;
>  }
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset)
>  {
>  	void *container;
> @@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
>   * RETURNS:
>   * Pointer to new DRM device, or ERR_PTR on failure.
>   */
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent)
>  {
>  	struct drm_device *dev;
> @@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev)
>   */
>  int drm_dev_register(struct drm_device *dev, unsigned long flags)
>  {
> -	struct drm_driver *driver = dev->driver;
> +	const struct drm_driver *driver = dev->driver;
>  	int ret;
>  
>  	if (!driver->load)
> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> index f4f68e7a9149..2c361964aee7 100644
> --- a/include/drm/drm_device.h
> +++ b/include/drm/drm_device.h
> @@ -83,7 +83,11 @@ struct drm_device {
>  	} managed;
>  
>  	/** @driver: DRM driver managing the device */
> +#ifdef CONFIG_DRM_LEGACY
>  	struct drm_driver *driver;
> +#else
> +	const struct drm_driver *driver;
> +#endif
>  
>  	/**
>  	 * @dev_private:
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 7af220226a25..cc9da43b6eda 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -516,7 +516,8 @@ struct drm_driver {
>  #endif
>  };
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset);
>  
>  /**
> @@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
>  	((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \
>  				       offsetof(type, member)))
>  
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent);
>  int drm_dev_register(struct drm_device *dev, unsigned long flags);
>  void drm_dev_unregister(struct drm_device *dev);
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 4/5] drm: Allow const struct drm_driver
@ 2020-10-25 21:44     ` Sam Ravnborg
  0 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 21:44 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Thomas Zimmermann, DRI Development

On Fri, Oct 23, 2020 at 02:28:10PM +0200, Daniel Vetter wrote:
> It's nice if a big function/ioctl table like this is const. Only
> downside here is that we need a few more #ifdef to paper over the
> differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
> motivation to sunset that horror show :-)
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/drm_drv.c | 15 ++++++++++-----
>  include/drm/drm_device.h  |  4 ++++
>  include/drm/drm_drv.h     |  5 +++--
>  3 files changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 457ac0f82be2..94d2c41115b8 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
>  }
>  
>  static int drm_dev_init(struct drm_device *dev,
> -			struct drm_driver *driver,
> +			const struct drm_driver *driver,
>  			struct device *parent)
>  {
>  	int ret;
> @@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev,
>  
>  	kref_init(&dev->ref);
>  	dev->dev = get_device(parent);
> +#ifdef CONFIG_DRM_LEGACY
> +	dev->driver = (struct drm_driver *) driver;
checkpatch will tell you to drop space after closing ')'

With this super important fix the patch is:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> +#else
>  	dev->driver = driver;
> +#endif
>  
>  	INIT_LIST_HEAD(&dev->managed.resources);
>  	spin_lock_init(&dev->managed.lock);
> @@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data)
>  
>  static int devm_drm_dev_init(struct device *parent,
>  			     struct drm_device *dev,
> -			     struct drm_driver *driver)
> +			     const struct drm_driver *driver)
>  {
>  	int ret;
>  
> @@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent,
>  	return ret;
>  }
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset)
>  {
>  	void *container;
> @@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
>   * RETURNS:
>   * Pointer to new DRM device, or ERR_PTR on failure.
>   */
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent)
>  {
>  	struct drm_device *dev;
> @@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev)
>   */
>  int drm_dev_register(struct drm_device *dev, unsigned long flags)
>  {
> -	struct drm_driver *driver = dev->driver;
> +	const struct drm_driver *driver = dev->driver;
>  	int ret;
>  
>  	if (!driver->load)
> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> index f4f68e7a9149..2c361964aee7 100644
> --- a/include/drm/drm_device.h
> +++ b/include/drm/drm_device.h
> @@ -83,7 +83,11 @@ struct drm_device {
>  	} managed;
>  
>  	/** @driver: DRM driver managing the device */
> +#ifdef CONFIG_DRM_LEGACY
>  	struct drm_driver *driver;
> +#else
> +	const struct drm_driver *driver;
> +#endif
>  
>  	/**
>  	 * @dev_private:
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 7af220226a25..cc9da43b6eda 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -516,7 +516,8 @@ struct drm_driver {
>  #endif
>  };
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset);
>  
>  /**
> @@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
>  	((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \
>  				       offsetof(type, member)))
>  
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent);
>  int drm_dev_register(struct drm_device *dev, unsigned long flags);
>  void drm_dev_unregister(struct drm_device *dev);
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
  2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
@ 2020-10-25 22:08     ` Sam Ravnborg
  -1 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 22:08 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Thomas Zimmermann, DRI Development

On Fri, Oct 23, 2020 at 02:28:08PM +0200, Daniel Vetter wrote:
> This means some very few #ifdef in code, but it allows us to
> enlist the compiler to make sure this stuff isn't used anymore.
> 
> More important, only legacy drivers change drm_device (for the
> legacy_dev_list shadow attach management), therefore this is
> prep to allow modern drivers to have a const driver struct. Which
> is nice, because there's a ton of function pointers in there.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Some of the conditionals does not help the readability :-(
But they are better than exposing legacy stuff to non-legacy drivers.
And it is a suprising fews that are required.
So legacy seems to be factored out well from the core.

Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> ---
>  drivers/gpu/drm/drm_file.c   |  2 ++
>  drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
>  include/drm/drm_drv.h        |  2 ++
>  3 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index 0ac4566ae3f4..b50380fa80ce 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
>  		  (long)old_encode_dev(file->minor->kdev->devt),
>  		  atomic_read(&dev->open_count));
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
>  	    dev->driver->preclose)
>  		dev->driver->preclose(dev, file);
> +#endif
>  
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		drm_legacy_lock_release(dev, file->filp);
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index ba7e741764aa..15e5ea436434 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->get_vblank_counter)
>  			return crtc->funcs->get_vblank_counter(crtc);
> -	} else if (dev->driver->get_vblank_counter) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->get_vblank_counter) {
>  		return dev->driver->get_vblank_counter(dev, pipe);
>  	}
> +#endif
>  
>  	return drm_vblank_no_hw_counter(dev, pipe);
>  }
> @@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->disable_vblank)
>  			crtc->funcs->disable_vblank(crtc);
> -	} else {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else {
>  		dev->driver->disable_vblank(dev, pipe);
>  	}
> +#endif
>  }
>  
>  /*
> @@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->enable_vblank)
>  			return crtc->funcs->enable_vblank(crtc);
> -	} else if (dev->driver->enable_vblank) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->enable_vblank) {
>  		return dev->driver->enable_vblank(dev, pipe);
>  	}
> +#endif
>  
>  	return -EINVAL;
>  }
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index c6d17550efc9..7af220226a25 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -498,6 +498,7 @@ struct drm_driver {
>  	 */
>  	const struct file_operations *fops;
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	/* Everything below here is for legacy driver, never use! */
>  	/* private: */
>  
> @@ -512,6 +513,7 @@ struct drm_driver {
>  	int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	int dev_priv_size;
> +#endif
>  };
>  
>  void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
@ 2020-10-25 22:08     ` Sam Ravnborg
  0 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 22:08 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development,
	Thomas Zimmermann, DRI Development

On Fri, Oct 23, 2020 at 02:28:08PM +0200, Daniel Vetter wrote:
> This means some very few #ifdef in code, but it allows us to
> enlist the compiler to make sure this stuff isn't used anymore.
> 
> More important, only legacy drivers change drm_device (for the
> legacy_dev_list shadow attach management), therefore this is
> prep to allow modern drivers to have a const driver struct. Which
> is nice, because there's a ton of function pointers in there.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Some of the conditionals does not help the readability :-(
But they are better than exposing legacy stuff to non-legacy drivers.
And it is a suprising fews that are required.
So legacy seems to be factored out well from the core.

Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> ---
>  drivers/gpu/drm/drm_file.c   |  2 ++
>  drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
>  include/drm/drm_drv.h        |  2 ++
>  3 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index 0ac4566ae3f4..b50380fa80ce 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
>  		  (long)old_encode_dev(file->minor->kdev->devt),
>  		  atomic_read(&dev->open_count));
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
>  	    dev->driver->preclose)
>  		dev->driver->preclose(dev, file);
> +#endif
>  
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		drm_legacy_lock_release(dev, file->filp);
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index ba7e741764aa..15e5ea436434 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->get_vblank_counter)
>  			return crtc->funcs->get_vblank_counter(crtc);
> -	} else if (dev->driver->get_vblank_counter) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->get_vblank_counter) {
>  		return dev->driver->get_vblank_counter(dev, pipe);
>  	}
> +#endif
>  
>  	return drm_vblank_no_hw_counter(dev, pipe);
>  }
> @@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->disable_vblank)
>  			crtc->funcs->disable_vblank(crtc);
> -	} else {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else {
>  		dev->driver->disable_vblank(dev, pipe);
>  	}
> +#endif
>  }
>  
>  /*
> @@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->enable_vblank)
>  			return crtc->funcs->enable_vblank(crtc);
> -	} else if (dev->driver->enable_vblank) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->enable_vblank) {
>  		return dev->driver->enable_vblank(dev, pipe);
>  	}
> +#endif
>  
>  	return -EINVAL;
>  }
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index c6d17550efc9..7af220226a25 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -498,6 +498,7 @@ struct drm_driver {
>  	 */
>  	const struct file_operations *fops;
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	/* Everything below here is for legacy driver, never use! */
>  	/* private: */
>  
> @@ -512,6 +513,7 @@ struct drm_driver {
>  	int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	int dev_priv_size;
> +#endif
>  };
>  
>  void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH] drm/<drivers>: Constify struct drm_driver
  2020-10-23 16:04       ` Daniel Vetter
  (?)
  (?)
@ 2020-10-25 22:23           ` Sam Ravnborg
  -1 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 22:23 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: kernel test robot, Leo Li,
	nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Intel Graphics Development, DRI Development,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

Hi Daniel.

On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
My grepping turned up the following:
- The example in drm_drv needs to be updated
- legacy drivers, that are obviously not converted - but worth to
  mention above
- arc is not converted and it is not legacy  
  Maybe you have it covered in your big arc conversion patch?

With the above fixed:
Acked-by: Sam Ravnborg <sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> v2: Fix one misplaced const static, should be static const (0day)
> 
> Cc: kernel test robot <lkp-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Acked-by: Maxime Ripard <mripard-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Signed-off-by: Daniel Vetter <daniel.vetter-/w4YWyX8dFk@public.gmane.org>
> Cc: Dave Airlie <airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Cc: Gerd Hoffmann <kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Cc: virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> Cc: Harry Wentland <harry.wentland-5C7GfCeVMHo@public.gmane.org>
> Cc: Leo Li <sunpeng.li-5C7GfCeVMHo@public.gmane.org>
> Cc: Alex Deucher <alexander.deucher-5C7GfCeVMHo@public.gmane.org>
> Cc: Christian König <christian.koenig-5C7GfCeVMHo@public.gmane.org>
> Cc: Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>
> Cc: Maxime Ripard <mripard-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> Signed-off-by: Daniel Vetter <daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

Hmm, so we have more than one Daniel in play here.
Both the Intel guy and the ffwll guy - looks funny.

	Sam

> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..aa9641a6a7d8 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +static const struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-25 22:23           ` Sam Ravnborg
  0 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 22:23 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: kernel test robot, Leo Li, nouveau, Intel Graphics Development,
	DRI Development, virtualization, Dave Airlie, Alex Deucher,
	Daniel Vetter, Christian König, Ben Skeggs

Hi Daniel.

On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
My grepping turned up the following:
- The example in drm_drv needs to be updated
- legacy drivers, that are obviously not converted - but worth to
  mention above
- arc is not converted and it is not legacy  
  Maybe you have it covered in your big arc conversion patch?

With the above fixed:
Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> v2: Fix one misplaced const static, should be static const (0day)
> 
> Cc: kernel test robot <lkp@intel.com>
> Acked-by: Maxime Ripard <mripard@kernel.org>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

Hmm, so we have more than one Daniel in play here.
Both the Intel guy and the ffwll guy - looks funny.

	Sam

> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..aa9641a6a7d8 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +static const struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-25 22:23           ` Sam Ravnborg
  0 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 22:23 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: kernel test robot, Leo Li, nouveau, Intel Graphics Development,
	DRI Development, virtualization, Gerd Hoffmann, Dave Airlie,
	Alex Deucher, Daniel Vetter, Christian König, Ben Skeggs

Hi Daniel.

On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
My grepping turned up the following:
- The example in drm_drv needs to be updated
- legacy drivers, that are obviously not converted - but worth to
  mention above
- arc is not converted and it is not legacy  
  Maybe you have it covered in your big arc conversion patch?

With the above fixed:
Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> v2: Fix one misplaced const static, should be static const (0day)
> 
> Cc: kernel test robot <lkp@intel.com>
> Acked-by: Maxime Ripard <mripard@kernel.org>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

Hmm, so we have more than one Daniel in play here.
Both the Intel guy and the ffwll guy - looks funny.

	Sam

> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..aa9641a6a7d8 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +static const struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-25 22:23           ` Sam Ravnborg
  0 siblings, 0 replies; 67+ messages in thread
From: Sam Ravnborg @ 2020-10-25 22:23 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Leo Li, nouveau, Intel Graphics Development, DRI Development,
	virtualization, Gerd Hoffmann, Dave Airlie, Alex Deucher,
	Daniel Vetter, Christian König, Ben Skeggs

Hi Daniel.

On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
My grepping turned up the following:
- The example in drm_drv needs to be updated
- legacy drivers, that are obviously not converted - but worth to
  mention above
- arc is not converted and it is not legacy  
  Maybe you have it covered in your big arc conversion patch?

With the above fixed:
Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> v2: Fix one misplaced const static, should be static const (0day)
> 
> Cc: kernel test robot <lkp@intel.com>
> Acked-by: Maxime Ripard <mripard@kernel.org>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

Hmm, so we have more than one Daniel in play here.
Both the Intel guy and the ffwll guy - looks funny.

	Sam

> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..aa9641a6a7d8 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +static const struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> -- 
> 2.28.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH] drm/<drivers>: Constify struct drm_driver
  2020-10-25 22:23           ` Sam Ravnborg
  (?)
  (?)
@ 2020-10-25 23:04               ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-25 23:04 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: kernel test robot, Leo Li, Nouveau Dev,
	Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

On Sun, Oct 25, 2020 at 11:23 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Daniel.
>
> On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> My grepping turned up the following:
> - The example in drm_drv needs to be updated
> - legacy drivers, that are obviously not converted - but worth to
>   mention above
> - arc is not converted and it is not legacy
>   Maybe you have it covered in your big arc conversion patch?

Yeah I excluded that one because it's stuck behind my arcpgu
tinification. I'll update the commit message to mention that with your
other suggestions.
-Daniel

>
> With the above fixed:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > v2: Fix one misplaced const static, should be static const (0day)
> >
> > Cc: kernel test robot <lkp@intel.com>
> > Acked-by: Maxime Ripard <mripard@kernel.org>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>
> Hmm, so we have more than one Daniel in play here.
> Both the Intel guy and the ffwll guy - looks funny.
>
>         Sam
>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..aa9641a6a7d8 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +static const struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> > --
> > 2.28.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-25 23:04               ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-25 23:04 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: kernel test robot, Leo Li, Nouveau Dev,
	Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Dave Airlie, Alex Deucher, Daniel Vetter, Christian König,
	Ben Skeggs

On Sun, Oct 25, 2020 at 11:23 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Daniel.
>
> On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> My grepping turned up the following:
> - The example in drm_drv needs to be updated
> - legacy drivers, that are obviously not converted - but worth to
>   mention above
> - arc is not converted and it is not legacy
>   Maybe you have it covered in your big arc conversion patch?

Yeah I excluded that one because it's stuck behind my arcpgu
tinification. I'll update the commit message to mention that with your
other suggestions.
-Daniel

>
> With the above fixed:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > v2: Fix one misplaced const static, should be static const (0day)
> >
> > Cc: kernel test robot <lkp@intel.com>
> > Acked-by: Maxime Ripard <mripard@kernel.org>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>
> Hmm, so we have more than one Daniel in play here.
> Both the Intel guy and the ffwll guy - looks funny.
>
>         Sam
>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..aa9641a6a7d8 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +static const struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> > --
> > 2.28.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-25 23:04               ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-25 23:04 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: kernel test robot, Leo Li, Nouveau Dev,
	Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

On Sun, Oct 25, 2020 at 11:23 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Daniel.
>
> On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> My grepping turned up the following:
> - The example in drm_drv needs to be updated
> - legacy drivers, that are obviously not converted - but worth to
>   mention above
> - arc is not converted and it is not legacy
>   Maybe you have it covered in your big arc conversion patch?

Yeah I excluded that one because it's stuck behind my arcpgu
tinification. I'll update the commit message to mention that with your
other suggestions.
-Daniel

>
> With the above fixed:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > v2: Fix one misplaced const static, should be static const (0day)
> >
> > Cc: kernel test robot <lkp@intel.com>
> > Acked-by: Maxime Ripard <mripard@kernel.org>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>
> Hmm, so we have more than one Daniel in play here.
> Both the Intel guy and the ffwll guy - looks funny.
>
>         Sam
>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..aa9641a6a7d8 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +static const struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> > --
> > 2.28.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/<drivers>: Constify struct drm_driver
@ 2020-10-25 23:04               ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-25 23:04 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Leo Li, Nouveau Dev, Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

On Sun, Oct 25, 2020 at 11:23 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Daniel.
>
> On Fri, Oct 23, 2020 at 06:04:44PM +0200, Daniel Vetter wrote:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> My grepping turned up the following:
> - The example in drm_drv needs to be updated
> - legacy drivers, that are obviously not converted - but worth to
>   mention above
> - arc is not converted and it is not legacy
>   Maybe you have it covered in your big arc conversion patch?

Yeah I excluded that one because it's stuck behind my arcpgu
tinification. I'll update the commit message to mention that with your
other suggestions.
-Daniel

>
> With the above fixed:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > v2: Fix one misplaced const static, should be static const (0day)
> >
> > Cc: kernel test robot <lkp@intel.com>
> > Acked-by: Maxime Ripard <mripard@kernel.org>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>
> Hmm, so we have more than one Daniel in play here.
> Both the Intel guy and the ffwll guy - looks funny.
>
>         Sam
>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..aa9641a6a7d8 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +static const struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> > --
> > 2.28.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
  2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
@ 2020-10-26  8:37     ` Thomas Zimmermann
  -1 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:37 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> This means some very few #ifdef in code, but it allows us to
> enlist the compiler to make sure this stuff isn't used anymore.
> 
> More important, only legacy drivers change drm_device (for the
> legacy_dev_list shadow attach management), therefore this is
> prep to allow modern drivers to have a const driver struct. Which
> is nice, because there's a ton of function pointers in there.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Review-by: Thomas Zimmermann <tzimmermann@suse.de>

Sort of related: the implementation for KMS and UMS devices is more and
more distinct from each other. Did you ever consider going for separate
legacy helpers instead of mixing-in all these ifdefs?

Best regards
Thomas

> ---
>  drivers/gpu/drm/drm_file.c   |  2 ++
>  drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
>  include/drm/drm_drv.h        |  2 ++
>  3 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index 0ac4566ae3f4..b50380fa80ce 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
>  		  (long)old_encode_dev(file->minor->kdev->devt),
>  		  atomic_read(&dev->open_count));
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
>  	    dev->driver->preclose)
>  		dev->driver->preclose(dev, file);
> +#endif
>  
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		drm_legacy_lock_release(dev, file->filp);
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index ba7e741764aa..15e5ea436434 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->get_vblank_counter)
>  			return crtc->funcs->get_vblank_counter(crtc);
> -	} else if (dev->driver->get_vblank_counter) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->get_vblank_counter) {
>  		return dev->driver->get_vblank_counter(dev, pipe);
>  	}
> +#endif
>  
>  	return drm_vblank_no_hw_counter(dev, pipe);
>  }
> @@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->disable_vblank)
>  			crtc->funcs->disable_vblank(crtc);
> -	} else {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else {
>  		dev->driver->disable_vblank(dev, pipe);
>  	}
> +#endif
>  }
>  
>  /*
> @@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->enable_vblank)
>  			return crtc->funcs->enable_vblank(crtc);
> -	} else if (dev->driver->enable_vblank) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->enable_vblank) {
>  		return dev->driver->enable_vblank(dev, pipe);
>  	}
> +#endif
>  
>  	return -EINVAL;
>  }
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index c6d17550efc9..7af220226a25 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -498,6 +498,7 @@ struct drm_driver {
>  	 */
>  	const struct file_operations *fops;
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	/* Everything below here is for legacy driver, never use! */
>  	/* private: */
>  
> @@ -512,6 +513,7 @@ struct drm_driver {
>  	int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	int dev_priv_size;
> +#endif
>  };
>  
>  void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
@ 2020-10-26  8:37     ` Thomas Zimmermann
  0 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:37 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> This means some very few #ifdef in code, but it allows us to
> enlist the compiler to make sure this stuff isn't used anymore.
> 
> More important, only legacy drivers change drm_device (for the
> legacy_dev_list shadow attach management), therefore this is
> prep to allow modern drivers to have a const driver struct. Which
> is nice, because there's a ton of function pointers in there.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Review-by: Thomas Zimmermann <tzimmermann@suse.de>

Sort of related: the implementation for KMS and UMS devices is more and
more distinct from each other. Did you ever consider going for separate
legacy helpers instead of mixing-in all these ifdefs?

Best regards
Thomas

> ---
>  drivers/gpu/drm/drm_file.c   |  2 ++
>  drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
>  include/drm/drm_drv.h        |  2 ++
>  3 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index 0ac4566ae3f4..b50380fa80ce 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
>  		  (long)old_encode_dev(file->minor->kdev->devt),
>  		  atomic_read(&dev->open_count));
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
>  	    dev->driver->preclose)
>  		dev->driver->preclose(dev, file);
> +#endif
>  
>  	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		drm_legacy_lock_release(dev, file->filp);
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index ba7e741764aa..15e5ea436434 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->get_vblank_counter)
>  			return crtc->funcs->get_vblank_counter(crtc);
> -	} else if (dev->driver->get_vblank_counter) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->get_vblank_counter) {
>  		return dev->driver->get_vblank_counter(dev, pipe);
>  	}
> +#endif
>  
>  	return drm_vblank_no_hw_counter(dev, pipe);
>  }
> @@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->disable_vblank)
>  			crtc->funcs->disable_vblank(crtc);
> -	} else {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else {
>  		dev->driver->disable_vblank(dev, pipe);
>  	}
> +#endif
>  }
>  
>  /*
> @@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
>  
>  		if (crtc->funcs->enable_vblank)
>  			return crtc->funcs->enable_vblank(crtc);
> -	} else if (dev->driver->enable_vblank) {
> +	}
> +#ifdef CONFIG_DRM_LEGACY
> +	else if (dev->driver->enable_vblank) {
>  		return dev->driver->enable_vblank(dev, pipe);
>  	}
> +#endif
>  
>  	return -EINVAL;
>  }
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index c6d17550efc9..7af220226a25 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -498,6 +498,7 @@ struct drm_driver {
>  	 */
>  	const struct file_operations *fops;
>  
> +#ifdef CONFIG_DRM_LEGACY
>  	/* Everything below here is for legacy driver, never use! */
>  	/* private: */
>  
> @@ -512,6 +513,7 @@ struct drm_driver {
>  	int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
>  	int dev_priv_size;
> +#endif
>  };
>  
>  void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 4/5] drm: Allow const struct drm_driver
  2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
@ 2020-10-26  8:40     ` Thomas Zimmermann
  -1 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:40 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: David Airlie, Intel Graphics Development, Daniel Vetter

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> It's nice if a big function/ioctl table like this is const. Only
> downside here is that we need a few more #ifdef to paper over the
> differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
> motivation to sunset that horror show :-)
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

I very much welcome the change, although the code is *really* ugly.

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>  drivers/gpu/drm/drm_drv.c | 15 ++++++++++-----
>  include/drm/drm_device.h  |  4 ++++
>  include/drm/drm_drv.h     |  5 +++--
>  3 files changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 457ac0f82be2..94d2c41115b8 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
>  }
>  
>  static int drm_dev_init(struct drm_device *dev,
> -			struct drm_driver *driver,
> +			const struct drm_driver *driver,
>  			struct device *parent)
>  {
>  	int ret;
> @@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev,
>  
>  	kref_init(&dev->ref);
>  	dev->dev = get_device(parent);
> +#ifdef CONFIG_DRM_LEGACY
> +	dev->driver = (struct drm_driver *) driver;
> +#else
>  	dev->driver = driver;
> +#endif
>  
>  	INIT_LIST_HEAD(&dev->managed.resources);
>  	spin_lock_init(&dev->managed.lock);
> @@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data)
>  
>  static int devm_drm_dev_init(struct device *parent,
>  			     struct drm_device *dev,
> -			     struct drm_driver *driver)
> +			     const struct drm_driver *driver)
>  {
>  	int ret;
>  
> @@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent,
>  	return ret;
>  }
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset)
>  {
>  	void *container;
> @@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
>   * RETURNS:
>   * Pointer to new DRM device, or ERR_PTR on failure.
>   */
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent)
>  {
>  	struct drm_device *dev;
> @@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev)
>   */
>  int drm_dev_register(struct drm_device *dev, unsigned long flags)
>  {
> -	struct drm_driver *driver = dev->driver;
> +	const struct drm_driver *driver = dev->driver;
>  	int ret;
>  
>  	if (!driver->load)
> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> index f4f68e7a9149..2c361964aee7 100644
> --- a/include/drm/drm_device.h
> +++ b/include/drm/drm_device.h
> @@ -83,7 +83,11 @@ struct drm_device {
>  	} managed;
>  
>  	/** @driver: DRM driver managing the device */
> +#ifdef CONFIG_DRM_LEGACY
>  	struct drm_driver *driver;
> +#else
> +	const struct drm_driver *driver;
> +#endif
>  
>  	/**
>  	 * @dev_private:
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 7af220226a25..cc9da43b6eda 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -516,7 +516,8 @@ struct drm_driver {
>  #endif
>  };
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset);
>  
>  /**
> @@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
>  	((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \
>  				       offsetof(type, member)))
>  
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent);
>  int drm_dev_register(struct drm_device *dev, unsigned long flags);
>  void drm_dev_unregister(struct drm_device *dev);
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 4/5] drm: Allow const struct drm_driver
@ 2020-10-26  8:40     ` Thomas Zimmermann
  0 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:40 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: David Airlie, Intel Graphics Development, Maxime Ripard, Daniel Vetter

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> It's nice if a big function/ioctl table like this is const. Only
> downside here is that we need a few more #ifdef to paper over the
> differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more
> motivation to sunset that horror show :-)
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

I very much welcome the change, although the code is *really* ugly.

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>  drivers/gpu/drm/drm_drv.c | 15 ++++++++++-----
>  include/drm/drm_device.h  |  4 ++++
>  include/drm/drm_drv.h     |  5 +++--
>  3 files changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 457ac0f82be2..94d2c41115b8 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
>  }
>  
>  static int drm_dev_init(struct drm_device *dev,
> -			struct drm_driver *driver,
> +			const struct drm_driver *driver,
>  			struct device *parent)
>  {
>  	int ret;
> @@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev,
>  
>  	kref_init(&dev->ref);
>  	dev->dev = get_device(parent);
> +#ifdef CONFIG_DRM_LEGACY
> +	dev->driver = (struct drm_driver *) driver;
> +#else
>  	dev->driver = driver;
> +#endif
>  
>  	INIT_LIST_HEAD(&dev->managed.resources);
>  	spin_lock_init(&dev->managed.lock);
> @@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data)
>  
>  static int devm_drm_dev_init(struct device *parent,
>  			     struct drm_device *dev,
> -			     struct drm_driver *driver)
> +			     const struct drm_driver *driver)
>  {
>  	int ret;
>  
> @@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent,
>  	return ret;
>  }
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset)
>  {
>  	void *container;
> @@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
>   * RETURNS:
>   * Pointer to new DRM device, or ERR_PTR on failure.
>   */
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent)
>  {
>  	struct drm_device *dev;
> @@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev)
>   */
>  int drm_dev_register(struct drm_device *dev, unsigned long flags)
>  {
> -	struct drm_driver *driver = dev->driver;
> +	const struct drm_driver *driver = dev->driver;
>  	int ret;
>  
>  	if (!driver->load)
> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> index f4f68e7a9149..2c361964aee7 100644
> --- a/include/drm/drm_device.h
> +++ b/include/drm/drm_device.h
> @@ -83,7 +83,11 @@ struct drm_device {
>  	} managed;
>  
>  	/** @driver: DRM driver managing the device */
> +#ifdef CONFIG_DRM_LEGACY
>  	struct drm_driver *driver;
> +#else
> +	const struct drm_driver *driver;
> +#endif
>  
>  	/**
>  	 * @dev_private:
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 7af220226a25..cc9da43b6eda 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -516,7 +516,8 @@ struct drm_driver {
>  #endif
>  };
>  
> -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> +void *__devm_drm_dev_alloc(struct device *parent,
> +			   const struct drm_driver *driver,
>  			   size_t size, size_t offset);
>  
>  /**
> @@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
>  	((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \
>  				       offsetof(type, member)))
>  
> -struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> +struct drm_device *drm_dev_alloc(const struct drm_driver *driver,
>  				 struct device *parent);
>  int drm_dev_register(struct drm_device *dev, unsigned long flags);
>  void drm_dev_unregister(struct drm_device *dev);
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
  2020-10-23 12:28   ` Daniel Vetter
  (?)
  (?)
@ 2020-10-26  8:43       ` Thomas Zimmermann
  -1 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:43 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: Leo Li, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Intel Graphics Development,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)

Oh please no. That's a huge patch for no apparent reason. Can you break
this up?

Best regards
Thomas

> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..8928550072df 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +const static struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-26  8:43       ` Thomas Zimmermann
  0 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:43 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: Leo Li, nouveau, Intel Graphics Development, virtualization,
	Dave Airlie, Alex Deucher, Daniel Vetter, Christian König,
	Ben Skeggs

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)

Oh please no. That's a huge patch for no apparent reason. Can you break
this up?

Best regards
Thomas

> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..8928550072df 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +const static struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-26  8:43       ` Thomas Zimmermann
  0 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:43 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: Leo Li, nouveau, Intel Graphics Development, virtualization,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)

Oh please no. That's a huge patch for no apparent reason. Can you break
this up?

Best regards
Thomas

> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..8928550072df 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +const static struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-26  8:43       ` Thomas Zimmermann
  0 siblings, 0 replies; 67+ messages in thread
From: Thomas Zimmermann @ 2020-10-26  8:43 UTC (permalink / raw)
  To: Daniel Vetter, DRI Development
  Cc: Leo Li, nouveau, Intel Graphics Development, virtualization,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

Hi

Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> Only the following drivers aren't converted:
> - amdgpu, because of the driver_feature mangling due to virt support
> - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
>   platforms where it's supported (i.e. again driver_feature mangling)
> - vc4, again because of driver_feature mangling
> - qxl, because the ioctl table is somewhere else and moving that is
>   maybe a bit too much, hence the num_ioctls assignment prevents a
>   const driver structure.
> 
> Note that for armada I also went ahead and made the ioctl array const.
> 
> Only cc'ing the driver people who've not been converted (everyone else
> is way too much).
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux-foundation.org
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: nouveau@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
>  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
>  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
>  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
>  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
>  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
>  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
>  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
>  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
>  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
>  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
>  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
>  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
>  drivers/gpu/drm/stm/drv.c                        | 2 +-
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
>  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
>  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
>  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
>  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
>  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
>  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
>  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
>  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
>  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
>  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
>  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
>  63 files changed, 75 insertions(+), 78 deletions(-)

Oh please no. That's a huge patch for no apparent reason. Can you break
this up?

Best regards
Thomas

> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index cc5b5915bc5e..d04008f3e31a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
>  	return status;
>  }
>  
> -static struct drm_driver komeda_kms_driver = {
> +static const struct drm_driver komeda_kms_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.lastclose			= drm_fb_helper_lastclose,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index faa8a5a752da..81ae92390736 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver hdlcd_driver = {
> +static const struct drm_driver hdlcd_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = hdlcd_irq,
>  	.irq_preinstall = hdlcd_irq_preinstall,
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 26e60401a8e1..d83c7366b348 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
>  
>  #endif //CONFIG_DEBUG_FS
>  
> -static struct drm_driver malidp_driver = {
> +static const struct drm_driver malidp_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
>  #ifdef CONFIG_DEBUG_FS
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 22247cfce80b..44fe9f994fc5 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -27,7 +27,7 @@
>  #include <drm/armada_drm.h>
>  #include "armada_ioctlP.h"
>  
> -static struct drm_ioctl_desc armada_ioctls[] = {
> +static const struct drm_ioctl_desc armada_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
>  	DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
>  
>  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
>  
> -static struct drm_driver armada_drm_driver = {
> +static const struct drm_driver armada_drm_driver = {
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.prime_handle_to_fd	= drm_gem_prime_handle_to_fd,
>  	.prime_fd_to_handle	= drm_gem_prime_fd_to_handle,
> @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
>  	.date			= "20120730",
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.ioctls			= armada_ioctls,
> +	.num_ioctls = ARRAY_SIZE(armada_ioctls),
>  	.fops			= &armada_drm_fops,
>  };
>  
> @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
>  {
>  	int ret;
>  
> -	armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> -
>  	ret = platform_driver_register(&armada_lcd_platform_driver);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index 771ad71cd340..457ec04950f7 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver aspeed_gfx_driver = {
> +static const struct drm_driver aspeed_gfx_driver = {
>  	.driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &fops,
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index f0b4af1c390a..667b450606ef 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(ast_fops);
>  
> -static struct drm_driver ast_driver = {
> +static const struct drm_driver ast_driver = {
>  	.driver_features = DRIVER_ATOMIC |
>  			   DRIVER_GEM |
>  			   DRIVER_MODESET,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index 467049ca8430..33e596a4f042 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
>  	return container_of(dev, struct ast_private, base);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags);
>  
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 77066bca8793..45dd8185a488 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
>  	ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
>  }
>  
> -struct ast_private *ast_device_create(struct drm_driver *drv,
> +struct ast_private *ast_device_create(const struct drm_driver *drv,
>  				      struct pci_dev *pdev,
>  				      unsigned long flags)
>  {
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 03984932d174..65af56e47129 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver atmel_hlcdc_dc_driver = {
> +static const struct drm_driver atmel_hlcdc_dc_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler = atmel_hlcdc_dc_irq_handler,
>  	.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> index e18c51de1196..fd454225fd19 100644
> --- a/drivers/gpu/drm/bochs/bochs_drv.c
> +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_FOPS(bochs_fops);
>  
> -static struct drm_driver bochs_driver = {
> +static const struct drm_driver bochs_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &bochs_fops,
>  	.name			= "bochs-drm",
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index aa270b79e585..7604e3c07973 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -480,7 +480,7 @@ static const struct file_operations fops = {
>  	.mmap               = etnaviv_gem_mmap,
>  };
>  
> -static struct drm_driver etnaviv_drm_driver = {
> +static const struct drm_driver etnaviv_drm_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_RENDER,
>  	.open               = etnaviv_open,
>  	.postclose           = etnaviv_postclose,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index fe46680ca208..e60257f1f24b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
>  	.release	= drm_release,
>  };
>  
> -static struct drm_driver exynos_drm_driver = {
> +static const struct drm_driver exynos_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM
>  				  | DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open			= exynos_drm_open,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index ae584f62aa19..75b58d55a940 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
>  
> -static struct drm_driver fsl_dcu_drm_driver = {
> +static const struct drm_driver fsl_dcu_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.load			= fsl_dcu_load,
>  	.unload			= fsl_dcu_unload,
> @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
>  	void __iomem *base;
> -	struct drm_driver *driver = &fsl_dcu_drm_driver;
>  	struct clk *pix_clk_in;
>  	char pix_clk_name[32];
>  	const char *pix_clk_in_name;
> @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
>  
>  	fsl_dev->tcon = fsl_tcon_init(dev);
>  
> -	drm = drm_dev_alloc(driver, dev);
> +	drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
>  	if (IS_ERR(drm)) {
>  		ret = PTR_ERR(drm);
>  		goto unregister_pix_clk;
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index b13376a6fb91..6e7197d89463 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -34,7 +34,7 @@
>  #include "psb_intel_reg.h"
>  #include "psb_reg.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
>  
>  /*
> @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
>  	.read = drm_read,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.lastclose = drm_fb_helper_lastclose,
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index a684814927cd..27205aa907f4 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
>  	return IRQ_HANDLED;
>  }
>  
> -static struct drm_driver hibmc_driver = {
> +static const struct drm_driver hibmc_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hibmc_fops,
>  	.name			= "hibmc",
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index cfe8ff596d55..8928550072df 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
>  
> -static struct drm_driver ade_driver = {
> +const static struct drm_driver ade_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops = &ade_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> index dee8ec2f7f2e..386d137f29e5 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> @@ -40,7 +40,7 @@ struct kirin_drm_data {
>  	u32 num_planes;
>  	u32 prim_plane;
>  
> -	struct drm_driver *driver;
> +	const struct drm_driver *driver;
>  	const struct drm_crtc_helper_funcs *crtc_helper_funcs;
>  	const struct drm_crtc_funcs *crtc_funcs;
>  	const struct drm_plane_helper_funcs *plane_helper_funcs;
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d3237b0d821d..27249b5e2729 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -87,7 +87,7 @@
>  #include "intel_sideband.h"
>  #include "vlv_suspend.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
>  {
> @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	/* Don't use MTRRs here; the Xserver or userspace app should
>  	 * deal with them for Intel hardware.
>  	 */
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9220c9d1a4b7..e946bd2087d8 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
>  	i915_params_free(&i915->params);
>  }
>  
> -static struct drm_driver mock_driver = {
> +static const struct drm_driver mock_driver = {
>  	.name = "mock",
>  	.driver_features = DRIVER_GEM,
>  	.release = mock_device_release,
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index b72e5cef7e40..b549ce5e7607 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
>  	.atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static struct drm_driver dcss_kms_driver = {
> +static const struct drm_driver dcss_kms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops			= &dcss_cma_fops,
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 183f2e91881d..7090b82e7ea2 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
>  	/* none so far */
>  };
>  
> -static struct drm_driver imx_drm_driver = {
> +static const struct drm_driver imx_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.ioctls			= imx_drm_ioctls,
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 2329754af116..082cb9e45908 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
>  
> -static struct drm_driver ingenic_drm_driver_data = {
> +static const struct drm_driver ingenic_drm_driver_data = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name			= "ingenic-drm",
>  	.desc			= "DRM module for Ingenic SoCs",
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> index ab460121fd52..d497af91d850 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
>   * - 1.1.0 - add heap buffer support
>   */
>  
> -static struct drm_driver lima_drm_driver = {
> +static const struct drm_driver lima_drm_driver = {
>  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open               = lima_drm_driver_open,
>  	.postclose          = lima_drm_driver_postclose,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> index f9b5f450a9cb..870626e04ec0 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver mcde_drm_driver = {
> +static const struct drm_driver mcde_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 7f3398a7c2b0..2e8065b1e2bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
>  	return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
>  }
>  
> -static struct drm_driver mtk_drm_driver = {
> +static const struct drm_driver mtk_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.dumb_create = mtk_drm_gem_dumb_create,
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index 8b9c8dd788c4..dc8509ceb787 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver meson_driver = {
> +static const struct drm_driver meson_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* IRQ */
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 771b26aeee19..0f07f259503d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
>  
>  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
> -static struct drm_driver mgag200_driver = {
> +static const struct drm_driver mgag200_driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  	.fops = &mgag200_driver_fops,
>  	.name = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index aa4509766d64..f8fd31e709bb 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
>  	return ret;
>  }
>  
> -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
>  {
>  	struct platform_device *pdev = to_platform_device(dev);
>  	struct drm_device *ddev;
> @@ -984,7 +984,7 @@ static const struct file_operations fops = {
>  	.mmap               = msm_gem_mmap,
>  };
>  
> -static struct drm_driver msm_driver = {
> +static const struct drm_driver msm_driver = {
>  	.driver_features    = DRIVER_GEM |
>  				DRIVER_RENDER |
>  				DRIVER_ATOMIC |
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 35122aef037b..6faf17b6408d 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver mxsfb_driver = {
> +static const struct drm_driver mxsfb_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_disable,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 2b82a708eca6..21a6cd3f5473 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
>  	.llseek = noop_llseek,
>  };
>  
> -static struct drm_driver omap_drm_driver = {
> +static const struct drm_driver omap_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM  |
>  		DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = dev_open,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 37d4cb7a5491..ed116bd3d6d6 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
>   * - 1.0 - initial interface
>   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
>   */
> -static struct drm_driver panfrost_drm_driver = {
> +static const struct drm_driver panfrost_drm_driver = {
>  	.driver_features	= DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
>  	.open			= panfrost_open,
>  	.postclose		= panfrost_postclose,
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> index 3899c28f428d..10d9a12be672 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver pl111_drm_driver = {
> +static const struct drm_driver pl111_drm_driver = {
>  	.driver_features =
>  		DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 9c11e36ad33a..bfadb799d6a3 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> -static struct drm_driver kms_driver;
> +static const struct drm_driver kms_driver;
>  
>  bool radeon_device_is_virtual(void);
>  
> @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
>  	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
>  };
>  
> -static struct drm_driver kms_driver = {
> +static const struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>  	.load = radeon_driver_load_kms,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 447be991fa25..600056dff374 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>  
>  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
>  
> -static struct drm_driver rcar_du_driver = {
> +static const struct drm_driver rcar_du_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
>  	.fops			= &rcar_du_fops,
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index b7654f5e4225..212bd87c0c4a 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -35,7 +35,7 @@
>  #define DRIVER_MINOR	0
>  
>  static bool is_support_iommu = true;
> -static struct drm_driver rockchip_drm_driver;
> +static const struct drm_driver rockchip_drm_driver;
>  
>  /*
>   * Attach a (component) device to the shared drm dma mapping from master drm
> @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
>  	.release = drm_release,
>  };
>  
> -static struct drm_driver rockchip_drm_driver = {
> +static const struct drm_driver rockchip_drm_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.lastclose		= drm_fb_helper_lastclose,
>  	.dumb_create		= rockchip_gem_dumb_create,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> index 26a15c214bd3..0a02b7092c04 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
>  
> -static struct drm_driver shmob_drm_driver = {
> +static const struct drm_driver shmob_drm_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET,
>  	.irq_handler		= shmob_drm_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 3f54efa36098..c7efb43b83ee 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
>  
> -static struct drm_driver sti_driver = {
> +static const struct drm_driver sti_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.fops = &sti_driver_fops,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 411103f013e2..222869b232ae 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
>  
> -static struct drm_driver drv_driver = {
> +static const struct drm_driver drv_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.name = "stm",
>  	.desc = "STMicroelectronics SoC DRM",
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 29861fc81b35..91502937f26d 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
>  
> -static struct drm_driver sun4i_drv_driver = {
> +static const struct drm_driver sun4i_drv_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  
>  	/* Generic Operations */
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 24f353c1cee8..ae13a3ff8a87 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
>  }
>  #endif
>  
> -static struct drm_driver tegra_drm_driver = {
> +static const struct drm_driver tegra_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM |
>  			   DRIVER_ATOMIC | DRIVER_RENDER,
>  	.open = tegra_drm_open,
> @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
>  
>  static int host1x_drm_probe(struct host1x_device *dev)
>  {
> -	struct drm_driver *driver = &tegra_drm_driver;
>  	struct tegra_drm *tegra;
>  	struct drm_device *drm;
>  	int err;
>  
> -	drm = drm_dev_alloc(driver, &dev->dev);
> +	drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> index 9179ea18f625..66e3c86eb5c7 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
>  
> -static struct drm_driver tidss_driver = {
> +static const struct drm_driver tidss_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &tidss_fops,
>  	.release		= tidss_release,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index c5f82e693f1a..137f74f613ab 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
>  	drm_dev_put(dev);
>  }
>  
> -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
>  {
>  	struct drm_device *ddev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(fops);
>  
> -static struct drm_driver tilcdc_driver = {
> +static const struct drm_driver tilcdc_driver = {
>  	.driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.irq_handler        = tilcdc_irq,
>  	DRM_GEM_CMA_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> index 759a5a66dd0b..e5641969c181 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
>  
>  DEFINE_DRM_GEM_FOPS(cirrus_fops);
>  
> -static struct drm_driver cirrus_driver = {
> +static const struct drm_driver cirrus_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index cc397671f689..5a953c4ce265 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
>  
>  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
>  
> -static struct drm_driver gm12u320_drm_driver = {
> +static const struct drm_driver gm12u320_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
>  	.name		 = DRIVER_NAME,
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> index 0998309b0d95..c6525cd02bc2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
>  
> -static struct drm_driver hx8357d_driver = {
> +static const struct drm_driver hx8357d_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &hx8357d_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> index 97a77262d791..8e98962db5a2 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
>  
> -static struct drm_driver ili9225_driver = {
> +static const struct drm_driver ili9225_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9225_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> index d39c39df56ad..6ce97f0698eb 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
>  
> -static struct drm_driver ili9341_driver = {
> +static const struct drm_driver ili9341_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9341_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> index 403af68fa440..d7ce40eb166a 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
>  
> -static struct drm_driver ili9486_driver = {
> +static const struct drm_driver ili9486_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &ili9486_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> index 2131b4268c00..ff77f983f803 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
>  
> -static struct drm_driver mi0283qt_driver = {
> +static const struct drm_driver mi0283qt_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &mi0283qt_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 2e01cf0a9876..11c602fc9897 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
>  
>  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
>  
> -static struct drm_driver repaper_driver = {
> +static const struct drm_driver repaper_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &repaper_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> index d05de03891f8..ff5cf60f4bd7 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
>  
> -static struct drm_driver st7586_driver = {
> +static const struct drm_driver st7586_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7586_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> index a0f688f0d050..2c77d9ab7e8d 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
>  
> -static struct drm_driver st7735r_driver = {
> +static const struct drm_driver st7735r_driver = {
>  	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.fops			= &st7735r_fops,
>  	DRM_GEM_CMA_DRIVER_OPS_VMAP,
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> index b5259cb1383f..07140e0b90a3 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
>  
>  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
>  
> -static struct drm_driver tve200_drm_driver = {
> +static const struct drm_driver tve200_drm_driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  	.ioctls = NULL,
>  	.fops = &drm_fops,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..46df4d07bd7b 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
>  
>  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
>  
>  	/* GEM hooks */
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> index 9f7c26193831..2da0c1180bc6 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
>  	DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
>  };
>  
> -static struct drm_driver v3d_drm_driver = {
> +static const struct drm_driver v3d_drm_driver = {
>  	.driver_features = (DRIVER_GEM |
>  			    DRIVER_RENDER |
>  			    DRIVER_SYNCOBJ),
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index cf2e3e6a2388..f3eac72cb46e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, vbox_modeset, int, 0400);
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
>  	{ PCI_DEVICE(0x80ee, 0xbeef) },
> @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
>  
>  DEFINE_DRM_GEM_FOPS(vbox_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index fa54a6d1403d..3e9b7a4c30ce 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
>  	.vm_ops = &vgem_gem_vm_ops,
>  };
>  
> -static struct drm_driver vgem_driver = {
> +static const struct drm_driver vgem_driver = {
>  	.driver_features		= DRIVER_GEM | DRIVER_RENDER,
>  	.open				= vgem_open,
>  	.postclose			= vgem_postclose,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 86330f1ade72..27f13bd29c13 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -37,7 +37,7 @@
>  
>  #include "virtgpu_drv.h"
>  
> -static struct drm_driver driver;
> +static const struct drm_driver driver;
>  
>  static int virtio_gpu_modeset = -1;
>  
> @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
>  
>  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.open = virtio_gpu_driver_open,
>  	.postclose = virtio_gpu_driver_postclose,
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 98ba844ae77d..8056b3d1ff6a 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
>  	drm_atomic_helper_cleanup_planes(dev, old_state);
>  }
>  
> -static struct drm_driver vkms_driver = {
> +static const struct drm_driver vkms_driver = {
>  	.driver_features	= DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
>  	.release		= vkms_release,
>  	.fops			= &vkms_driver_fops,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 68206d0a1237..e66b252e3923 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  	.get_unmapped_area = vmw_get_unmapped_area,
>  };
>  
> -static struct drm_driver driver = {
> +static const struct drm_driver driver = {
>  	.driver_features =
>  	DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.ioctls = vmw_ioctls,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> index 98b6d2ba088a..30d9adf31c84 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
>  	.mmap           = xen_drm_front_gem_mmap,
>  };
>  
> -static struct drm_driver xen_drm_driver = {
> +static const struct drm_driver xen_drm_driver = {
>  	.driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	.release                   = xen_drm_drv_release,
>  	.prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index f3ffc3703a0e..0c1c50271a88 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
>  
> -static struct drm_driver zynqmp_dpsub_drm_driver = {
> +static const struct drm_driver zynqmp_dpsub_drm_driver = {
>  	.driver_features		= DRIVER_MODESET | DRIVER_GEM |
>  					  DRIVER_ATOMIC,
>  
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 31014a451f8b..5506336594e2 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
>  
>  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
>  
> -static struct drm_driver zx_drm_driver = {
> +static const struct drm_driver zx_drm_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
>  	DRM_GEM_CMA_DRIVER_OPS,
>  	.fops = &zx_drm_fops,
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
  2020-10-26  8:43       ` Thomas Zimmermann
  (?)
  (?)
@ 2020-10-26  9:14         ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-26  9:14 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Leo Li, Nouveau Dev, Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

On Mon, Oct 26, 2020 at 9:43 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
>
> Oh please no. That's a huge patch for no apparent reason. Can you break
> this up?

Function pointer tables are high value targets, making them const
allows the compiler to move them into the read-only section and the
kernel to protect them from stray writes. That helps against exploits,
especially for a function table which userspace pretty much directly
calls. So that's why making stuff const is important in the kernel.

Now I didn't feel like splitting this up per-driver because it's a bit
too much trivial change, plus it' would take weeks to get all the acks
for every piece. But if you promise you'll go and ack them all I can
inflate this up to 11 and dump a 60+ patch set on dri-devel :-)

Cheers, Daniel

>
> Best regards
> Thomas
>
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..8928550072df 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +const static struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-26  9:14         ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-26  9:14 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Leo Li, Nouveau Dev, Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Dave Airlie, Alex Deucher, Daniel Vetter, Christian König,
	Ben Skeggs

On Mon, Oct 26, 2020 at 9:43 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
>
> Oh please no. That's a huge patch for no apparent reason. Can you break
> this up?

Function pointer tables are high value targets, making them const
allows the compiler to move them into the read-only section and the
kernel to protect them from stray writes. That helps against exploits,
especially for a function table which userspace pretty much directly
calls. So that's why making stuff const is important in the kernel.

Now I didn't feel like splitting this up per-driver because it's a bit
too much trivial change, plus it' would take weeks to get all the acks
for every piece. But if you promise you'll go and ack them all I can
inflate this up to 11 and dump a 60+ patch set on dri-devel :-)

Cheers, Daniel

>
> Best regards
> Thomas
>
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..8928550072df 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +const static struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-26  9:14         ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-26  9:14 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Leo Li, Nouveau Dev, Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

On Mon, Oct 26, 2020 at 9:43 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
>
> Oh please no. That's a huge patch for no apparent reason. Can you break
> this up?

Function pointer tables are high value targets, making them const
allows the compiler to move them into the read-only section and the
kernel to protect them from stray writes. That helps against exploits,
especially for a function table which userspace pretty much directly
calls. So that's why making stuff const is important in the kernel.

Now I didn't feel like splitting this up per-driver because it's a bit
too much trivial change, plus it' would take weeks to get all the acks
for every piece. But if you promise you'll go and ack them all I can
inflate this up to 11 and dump a 60+ patch set on dri-devel :-)

Cheers, Daniel

>
> Best regards
> Thomas
>
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..8928550072df 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +const static struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 5/5] drm/<drivers>: Constify struct drm_driver
@ 2020-10-26  9:14         ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-26  9:14 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Leo Li, Nouveau Dev, Intel Graphics Development, DRI Development,
	open list:VIRTIO CORE, NET...,
	Gerd Hoffmann, Dave Airlie, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs

On Mon, Oct 26, 2020 at 9:43 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> > Only the following drivers aren't converted:
> > - amdgpu, because of the driver_feature mangling due to virt support
> > - nouveau, because DRIVER_ATOMIC uapi is still not the default on the
> >   platforms where it's supported (i.e. again driver_feature mangling)
> > - vc4, again because of driver_feature mangling
> > - qxl, because the ioctl table is somewhere else and moving that is
> >   maybe a bit too much, hence the num_ioctls assignment prevents a
> >   const driver structure.
> >
> > Note that for armada I also went ahead and made the ioctl array const.
> >
> > Only cc'ing the driver people who've not been converted (everyone else
> > is way too much).
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Dave Airlie <airlied@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: virtualization@lists.linux-foundation.org
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > Cc: Leo Li <sunpeng.li@amd.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Eric Anholt <eric@anholt.net>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Ben Skeggs <bskeggs@redhat.com>
> > Cc: nouveau@lists.freedesktop.org
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > ---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 2 +-
> >  drivers/gpu/drm/arm/hdlcd_drv.c                  | 2 +-
> >  drivers/gpu/drm/arm/malidp_drv.c                 | 2 +-
> >  drivers/gpu/drm/armada/armada_drv.c              | 7 +++----
> >  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.c                    | 2 +-
> >  drivers/gpu/drm/ast/ast_drv.h                    | 2 +-
> >  drivers/gpu/drm/ast/ast_main.c                   | 2 +-
> >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 2 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c                | 2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 2 +-
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 +-
> >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 5 ++---
> >  drivers/gpu/drm/gma500/psb_drv.c                 | 4 ++--
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 2 +-
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h  | 2 +-
> >  drivers/gpu/drm/i915/i915_drv.c                  | 4 ++--
> >  drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 +-
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 2 +-
> >  drivers/gpu/drm/imx/imx-drm-core.c               | 2 +-
> >  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 2 +-
> >  drivers/gpu/drm/lima/lima_drv.c                  | 2 +-
> >  drivers/gpu/drm/mcde/mcde_drv.c                  | 2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 +-
> >  drivers/gpu/drm/meson/meson_drv.c                | 2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c            | 2 +-
> >  drivers/gpu/drm/msm/msm_drv.c                    | 4 ++--
> >  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 2 +-
> >  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c          | 2 +-
> >  drivers/gpu/drm/pl111/pl111_drv.c                | 2 +-
> >  drivers/gpu/drm/radeon/radeon_drv.c              | 4 ++--
> >  drivers/gpu/drm/rcar-du/rcar_du_drv.c            | 2 +-
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 4 ++--
> >  drivers/gpu/drm/shmobile/shmob_drm_drv.c         | 2 +-
> >  drivers/gpu/drm/sti/sti_drv.c                    | 2 +-
> >  drivers/gpu/drm/stm/drv.c                        | 2 +-
> >  drivers/gpu/drm/sun4i/sun4i_drv.c                | 2 +-
> >  drivers/gpu/drm/tegra/drm.c                      | 5 ++---
> >  drivers/gpu/drm/tidss/tidss_drv.c                | 2 +-
> >  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 4 ++--
> >  drivers/gpu/drm/tiny/cirrus.c                    | 2 +-
> >  drivers/gpu/drm/tiny/gm12u320.c                  | 2 +-
> >  drivers/gpu/drm/tiny/hx8357d.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9225.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9341.c                   | 2 +-
> >  drivers/gpu/drm/tiny/ili9486.c                   | 2 +-
> >  drivers/gpu/drm/tiny/mi0283qt.c                  | 2 +-
> >  drivers/gpu/drm/tiny/repaper.c                   | 2 +-
> >  drivers/gpu/drm/tiny/st7586.c                    | 2 +-
> >  drivers/gpu/drm/tiny/st7735r.c                   | 2 +-
> >  drivers/gpu/drm/tve200/tve200_drv.c              | 2 +-
> >  drivers/gpu/drm/udl/udl_drv.c                    | 2 +-
> >  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 4 ++--
> >  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 +-
> >  drivers/gpu/drm/virtio/virtgpu_drv.c             | 4 ++--
> >  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 +-
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 2 +-
> >  drivers/gpu/drm/xen/xen_drm_front.c              | 2 +-
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c              | 2 +-
> >  drivers/gpu/drm/zte/zx_drm_drv.c                 | 2 +-
> >  63 files changed, 75 insertions(+), 78 deletions(-)
>
> Oh please no. That's a huge patch for no apparent reason. Can you break
> this up?

Function pointer tables are high value targets, making them const
allows the compiler to move them into the read-only section and the
kernel to protect them from stray writes. That helps against exploits,
especially for a function table which userspace pretty much directly
calls. So that's why making stuff const is important in the kernel.

Now I didn't feel like splitting this up per-driver because it's a bit
too much trivial change, plus it' would take weeks to get all the acks
for every piece. But if you promise you'll go and ack them all I can
inflate this up to 11 and dump a 60+ patch set on dri-devel :-)

Cheers, Daniel

>
> Best regards
> Thomas
>
> >
> > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > index cc5b5915bc5e..d04008f3e31a 100644
> > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> > @@ -58,7 +58,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
> >       return status;
> >  }
> >
> > -static struct drm_driver komeda_kms_driver = {
> > +static const struct drm_driver komeda_kms_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .lastclose                      = drm_fb_helper_lastclose,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > index faa8a5a752da..81ae92390736 100644
> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > @@ -234,7 +234,7 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver hdlcd_driver = {
> > +static const struct drm_driver hdlcd_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = hdlcd_irq,
> >       .irq_preinstall = hdlcd_irq_preinstall,
> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > index 26e60401a8e1..d83c7366b348 100644
> > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > @@ -564,7 +564,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
> >
> >  #endif //CONFIG_DEBUG_FS
> >
> > -static struct drm_driver malidp_driver = {
> > +static const struct drm_driver malidp_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
> >  #ifdef CONFIG_DEBUG_FS
> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > index 22247cfce80b..44fe9f994fc5 100644
> > --- a/drivers/gpu/drm/armada/armada_drv.c
> > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > @@ -27,7 +27,7 @@
> >  #include <drm/armada_drm.h>
> >  #include "armada_ioctlP.h"
> >
> > -static struct drm_ioctl_desc armada_ioctls[] = {
> > +static const struct drm_ioctl_desc armada_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
> >       DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
> > @@ -35,7 +35,7 @@ static struct drm_ioctl_desc armada_ioctls[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(armada_drm_fops);
> >
> > -static struct drm_driver armada_drm_driver = {
> > +static const struct drm_driver armada_drm_driver = {
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
> >       .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
> > @@ -48,6 +48,7 @@ static struct drm_driver armada_drm_driver = {
> >       .date                   = "20120730",
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .ioctls                 = armada_ioctls,
> > +     .num_ioctls = ARRAY_SIZE(armada_ioctls),
> >       .fops                   = &armada_drm_fops,
> >  };
> >
> > @@ -275,8 +276,6 @@ static int __init armada_drm_init(void)
> >  {
> >       int ret;
> >
> > -     armada_drm_driver.num_ioctls = ARRAY_SIZE(armada_ioctls);
> > -
> >       ret = platform_driver_register(&armada_lcd_platform_driver);
> >       if (ret)
> >               return ret;
> > diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > index 771ad71cd340..457ec04950f7 100644
> > --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> > @@ -191,7 +191,7 @@ static void aspeed_gfx_unload(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver aspeed_gfx_driver = {
> > +static const struct drm_driver aspeed_gfx_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &fops,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > index f0b4af1c390a..667b450606ef 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.c
> > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > @@ -49,7 +49,7 @@ module_param_named(modeset, ast_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(ast_fops);
> >
> > -static struct drm_driver ast_driver = {
> > +static const struct drm_driver ast_driver = {
> >       .driver_features = DRIVER_ATOMIC |
> >                          DRIVER_GEM |
> >                          DRIVER_MODESET,
> > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> > index 467049ca8430..33e596a4f042 100644
> > --- a/drivers/gpu/drm/ast/ast_drv.h
> > +++ b/drivers/gpu/drm/ast/ast_drv.h
> > @@ -159,7 +159,7 @@ static inline struct ast_private *to_ast_private(struct drm_device *dev)
> >       return container_of(dev, struct ast_private, base);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags);
> >
> > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> > index 77066bca8793..45dd8185a488 100644
> > --- a/drivers/gpu/drm/ast/ast_main.c
> > +++ b/drivers/gpu/drm/ast/ast_main.c
> > @@ -392,7 +392,7 @@ static void ast_device_release(void *data)
> >       ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
> >  }
> >
> > -struct ast_private *ast_device_create(struct drm_driver *drv,
> > +struct ast_private *ast_device_create(const struct drm_driver *drv,
> >                                     struct pci_dev *pdev,
> >                                     unsigned long flags)
> >  {
> > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > index 03984932d174..65af56e47129 100644
> > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> > @@ -712,7 +712,7 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver atmel_hlcdc_dc_driver = {
> > +static const struct drm_driver atmel_hlcdc_dc_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler = atmel_hlcdc_dc_irq_handler,
> >       .irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
> > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > index e18c51de1196..fd454225fd19 100644
> > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > @@ -57,7 +57,7 @@ static int bochs_load(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_FOPS(bochs_fops);
> >
> > -static struct drm_driver bochs_driver = {
> > +static const struct drm_driver bochs_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &bochs_fops,
> >       .name                   = "bochs-drm",
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index aa270b79e585..7604e3c07973 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -480,7 +480,7 @@ static const struct file_operations fops = {
> >       .mmap               = etnaviv_gem_mmap,
> >  };
> >
> > -static struct drm_driver etnaviv_drm_driver = {
> > +static const struct drm_driver etnaviv_drm_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_RENDER,
> >       .open               = etnaviv_open,
> >       .postclose           = etnaviv_postclose,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > index fe46680ca208..e60257f1f24b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > @@ -113,7 +113,7 @@ static const struct file_operations exynos_drm_driver_fops = {
> >       .release        = drm_release,
> >  };
> >
> > -static struct drm_driver exynos_drm_driver = {
> > +static const struct drm_driver exynos_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM
> >                                 | DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open                   = exynos_drm_open,
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > index ae584f62aa19..75b58d55a940 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -124,7 +124,7 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
> >
> > -static struct drm_driver fsl_dcu_drm_driver = {
> > +static const struct drm_driver fsl_dcu_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .load                   = fsl_dcu_load,
> >       .unload                 = fsl_dcu_unload,
> > @@ -224,7 +224,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >       struct device *dev = &pdev->dev;
> >       struct resource *res;
> >       void __iomem *base;
> > -     struct drm_driver *driver = &fsl_dcu_drm_driver;
> >       struct clk *pix_clk_in;
> >       char pix_clk_name[32];
> >       const char *pix_clk_in_name;
> > @@ -294,7 +293,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> >
> >       fsl_dev->tcon = fsl_tcon_init(dev);
> >
> > -     drm = drm_dev_alloc(driver, dev);
> > +     drm = drm_dev_alloc(&fsl_dcu_drm_driver, dev);
> >       if (IS_ERR(drm)) {
> >               ret = PTR_ERR(drm);
> >               goto unregister_pix_clk;
> > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> > index b13376a6fb91..6e7197d89463 100644
> > --- a/drivers/gpu/drm/gma500/psb_drv.c
> > +++ b/drivers/gpu/drm/gma500/psb_drv.c
> > @@ -34,7 +34,7 @@
> >  #include "psb_intel_reg.h"
> >  #include "psb_reg.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >  static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
> >
> >  /*
> > @@ -491,7 +491,7 @@ static const struct file_operations psb_gem_fops = {
> >       .read = drm_read,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM,
> >       .lastclose = drm_fb_helper_lastclose,
> >
> > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > index a684814927cd..27205aa907f4 100644
> > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > @@ -43,7 +43,7 @@ static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> >       return IRQ_HANDLED;
> >  }
> >
> > -static struct drm_driver hibmc_driver = {
> > +static const struct drm_driver hibmc_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hibmc_fops,
> >       .name                   = "hibmc",
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > index cfe8ff596d55..8928550072df 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > @@ -918,7 +918,7 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
> >
> > -static struct drm_driver ade_driver = {
> > +const static struct drm_driver ade_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops = &ade_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > index dee8ec2f7f2e..386d137f29e5 100644
> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
> > @@ -40,7 +40,7 @@ struct kirin_drm_data {
> >       u32 num_planes;
> >       u32 prim_plane;
> >
> > -     struct drm_driver *driver;
> > +     const struct drm_driver *driver;
> >       const struct drm_crtc_helper_funcs *crtc_helper_funcs;
> >       const struct drm_crtc_funcs *crtc_funcs;
> >       const struct drm_plane_helper_funcs *plane_helper_funcs;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index d3237b0d821d..27249b5e2729 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -87,7 +87,7 @@
> >  #include "intel_sideband.h"
> >  #include "vlv_suspend.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1758,7 +1758,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(I915_GEM_VM_DESTROY, i915_gem_vm_destroy_ioctl, DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       /* Don't use MTRRs here; the Xserver or userspace app should
> >        * deal with them for Intel hardware.
> >        */
> > diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > index 9220c9d1a4b7..e946bd2087d8 100644
> > --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> > @@ -81,7 +81,7 @@ static void mock_device_release(struct drm_device *dev)
> >       i915_params_free(&i915->params);
> >  }
> >
> > -static struct drm_driver mock_driver = {
> > +static const struct drm_driver mock_driver = {
> >       .name = "mock",
> >       .driver_features = DRIVER_GEM,
> >       .release = mock_device_release,
> > diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > index b72e5cef7e40..b549ce5e7607 100644
> > --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> > @@ -26,7 +26,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
> >       .atomic_commit = drm_atomic_helper_commit,
> >  };
> >
> > -static struct drm_driver dcss_kms_driver = {
> > +static const struct drm_driver dcss_kms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops                   = &dcss_cma_fops,
> > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > index 183f2e91881d..7090b82e7ea2 100644
> > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > @@ -143,7 +143,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
> >       /* none so far */
> >  };
> >
> > -static struct drm_driver imx_drm_driver = {
> > +static const struct drm_driver imx_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .ioctls                 = imx_drm_ioctls,
> > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > index 2329754af116..082cb9e45908 100644
> > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> > @@ -710,7 +710,7 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
> >
> > -static struct drm_driver ingenic_drm_driver_data = {
> > +static const struct drm_driver ingenic_drm_driver_data = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name                   = "ingenic-drm",
> >       .desc                   = "DRM module for Ingenic SoCs",
> > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
> > index ab460121fd52..d497af91d850 100644
> > --- a/drivers/gpu/drm/lima/lima_drv.c
> > +++ b/drivers/gpu/drm/lima/lima_drv.c
> > @@ -261,7 +261,7 @@ DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops);
> >   * - 1.1.0 - add heap buffer support
> >   */
> >
> > -static struct drm_driver lima_drm_driver = {
> > +static const struct drm_driver lima_drm_driver = {
> >       .driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open               = lima_drm_driver_open,
> >       .postclose          = lima_drm_driver_postclose,
> > diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
> > index f9b5f450a9cb..870626e04ec0 100644
> > --- a/drivers/gpu/drm/mcde/mcde_drv.c
> > +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> > @@ -178,7 +178,7 @@ static int mcde_modeset_init(struct drm_device *drm)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver mcde_drm_driver = {
> > +static const struct drm_driver mcde_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose = drm_fb_helper_lastclose,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 7f3398a7c2b0..2e8065b1e2bb 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -321,7 +321,7 @@ struct drm_gem_object *mtk_drm_gem_prime_import(struct drm_device *dev,
> >       return drm_gem_prime_import_dev(dev, dma_buf, private->dma_dev);
> >  }
> >
> > -static struct drm_driver mtk_drm_driver = {
> > +static const struct drm_driver mtk_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .dumb_create = mtk_drm_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > index 8b9c8dd788c4..dc8509ceb787 100644
> > --- a/drivers/gpu/drm/meson/meson_drv.c
> > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > @@ -90,7 +90,7 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver meson_driver = {
> > +static const struct drm_driver meson_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* IRQ */
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 771b26aeee19..0f07f259503d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -28,7 +28,7 @@ module_param_named(modeset, mgag200_modeset, int, 0400);
> >
> >  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
> >
> > -static struct drm_driver mgag200_driver = {
> > +static const struct drm_driver mgag200_driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >       .fops = &mgag200_driver_fops,
> >       .name = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index aa4509766d64..f8fd31e709bb 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -393,7 +393,7 @@ static int msm_init_vram(struct drm_device *dev)
> >       return ret;
> >  }
> >
> > -static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> > +static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
> >  {
> >       struct platform_device *pdev = to_platform_device(dev);
> >       struct drm_device *ddev;
> > @@ -984,7 +984,7 @@ static const struct file_operations fops = {
> >       .mmap               = msm_gem_mmap,
> >  };
> >
> > -static struct drm_driver msm_driver = {
> > +static const struct drm_driver msm_driver = {
> >       .driver_features    = DRIVER_GEM |
> >                               DRIVER_RENDER |
> >                               DRIVER_ATOMIC |
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > index 35122aef037b..6faf17b6408d 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > @@ -289,7 +289,7 @@ static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver mxsfb_driver = {
> > +static const struct drm_driver mxsfb_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler            = mxsfb_irq_handler,
> >       .irq_preinstall         = mxsfb_irq_disable,
> > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > index 2b82a708eca6..21a6cd3f5473 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > @@ -534,7 +534,7 @@ static const struct file_operations omapdriver_fops = {
> >       .llseek = noop_llseek,
> >  };
> >
> > -static struct drm_driver omap_drm_driver = {
> > +static const struct drm_driver omap_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM  |
> >               DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = dev_open,
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 37d4cb7a5491..ed116bd3d6d6 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -548,7 +548,7 @@ DEFINE_DRM_GEM_FOPS(panfrost_drm_driver_fops);
> >   * - 1.0 - initial interface
> >   * - 1.1 - adds HEAP and NOEXEC flags for CREATE_BO
> >   */
> > -static struct drm_driver panfrost_drm_driver = {
> > +static const struct drm_driver panfrost_drm_driver = {
> >       .driver_features        = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,
> >       .open                   = panfrost_open,
> >       .postclose              = panfrost_postclose,
> > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > index 3899c28f428d..10d9a12be672 100644
> > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > @@ -213,7 +213,7 @@ pl111_gem_import_sg_table(struct drm_device *dev,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver pl111_drm_driver = {
> > +static const struct drm_driver pl111_drm_driver = {
> >       .driver_features =
> >               DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > index 9c11e36ad33a..bfadb799d6a3 100644
> > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > @@ -297,7 +297,7 @@ static struct pci_device_id pciidlist[] = {
> >
> >  MODULE_DEVICE_TABLE(pci, pciidlist);
> >
> > -static struct drm_driver kms_driver;
> > +static const struct drm_driver kms_driver;
> >
> >  bool radeon_device_is_virtual(void);
> >
> > @@ -629,7 +629,7 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> >       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> >  };
> >
> > -static struct drm_driver kms_driver = {
> > +static const struct drm_driver kms_driver = {
> >       .driver_features =
> >           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
> >       .load = radeon_driver_load_kms,
> > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > index 447be991fa25..600056dff374 100644
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > @@ -507,7 +507,7 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
> >
> > -static struct drm_driver rcar_du_driver = {
> > +static const struct drm_driver rcar_du_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create),
> >       .fops                   = &rcar_du_fops,
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index b7654f5e4225..212bd87c0c4a 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -35,7 +35,7 @@
> >  #define DRIVER_MINOR 0
> >
> >  static bool is_support_iommu = true;
> > -static struct drm_driver rockchip_drm_driver;
> > +static const struct drm_driver rockchip_drm_driver;
> >
> >  /*
> >   * Attach a (component) device to the shared drm dma mapping from master drm
> > @@ -209,7 +209,7 @@ static const struct file_operations rockchip_drm_driver_fops = {
> >       .release = drm_release,
> >  };
> >
> > -static struct drm_driver rockchip_drm_driver = {
> > +static const struct drm_driver rockchip_drm_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .lastclose              = drm_fb_helper_lastclose,
> >       .dumb_create            = rockchip_gem_dumb_create,
> > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > index 26a15c214bd3..0a02b7092c04 100644
> > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > @@ -128,7 +128,7 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
> >
> > -static struct drm_driver shmob_drm_driver = {
> > +static const struct drm_driver shmob_drm_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET,
> >       .irq_handler            = shmob_drm_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > index 3f54efa36098..c7efb43b83ee 100644
> > --- a/drivers/gpu/drm/sti/sti_drv.c
> > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > @@ -130,7 +130,7 @@ static void sti_mode_config_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
> >
> > -static struct drm_driver sti_driver = {
> > +static const struct drm_driver sti_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .fops = &sti_driver_fops,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > index 411103f013e2..222869b232ae 100644
> > --- a/drivers/gpu/drm/stm/drv.c
> > +++ b/drivers/gpu/drm/stm/drv.c
> > @@ -53,7 +53,7 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
> >
> > -static struct drm_driver drv_driver = {
> > +static const struct drm_driver drv_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .name = "stm",
> >       .desc = "STMicroelectronics SoC DRM",
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > index 29861fc81b35..91502937f26d 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > @@ -40,7 +40,7 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
> >
> > -static struct drm_driver sun4i_drv_driver = {
> > +static const struct drm_driver sun4i_drv_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >
> >       /* Generic Operations */
> > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> > index 24f353c1cee8..ae13a3ff8a87 100644
> > --- a/drivers/gpu/drm/tegra/drm.c
> > +++ b/drivers/gpu/drm/tegra/drm.c
> > @@ -850,7 +850,7 @@ static void tegra_debugfs_init(struct drm_minor *minor)
> >  }
> >  #endif
> >
> > -static struct drm_driver tegra_drm_driver = {
> > +static const struct drm_driver tegra_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM |
> >                          DRIVER_ATOMIC | DRIVER_RENDER,
> >       .open = tegra_drm_open,
> > @@ -1084,12 +1084,11 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
> >
> >  static int host1x_drm_probe(struct host1x_device *dev)
> >  {
> > -     struct drm_driver *driver = &tegra_drm_driver;
> >       struct tegra_drm *tegra;
> >       struct drm_device *drm;
> >       int err;
> >
> > -     drm = drm_dev_alloc(driver, &dev->dev);
> > +     drm = drm_dev_alloc(&tegra_drm_driver, &dev->dev);
> >       if (IS_ERR(drm))
> >               return PTR_ERR(drm);
> >
> > diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
> > index 9179ea18f625..66e3c86eb5c7 100644
> > --- a/drivers/gpu/drm/tidss/tidss_drv.c
> > +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> > @@ -108,7 +108,7 @@ static void tidss_release(struct drm_device *ddev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
> >
> > -static struct drm_driver tidss_driver = {
> > +static const struct drm_driver tidss_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &tidss_fops,
> >       .release                = tidss_release,
> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > index c5f82e693f1a..137f74f613ab 100644
> > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > @@ -166,7 +166,7 @@ static void tilcdc_fini(struct drm_device *dev)
> >       drm_dev_put(dev);
> >  }
> >
> > -static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
> > +static int tilcdc_init(const struct drm_driver *ddrv, struct device *dev)
> >  {
> >       struct drm_device *ddev;
> >       struct platform_device *pdev = to_platform_device(dev);
> > @@ -452,7 +452,7 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(fops);
> >
> > -static struct drm_driver tilcdc_driver = {
> > +static const struct drm_driver tilcdc_driver = {
> >       .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .irq_handler        = tilcdc_irq,
> >       DRM_GEM_CMA_DRIVER_OPS,
> > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
> > index 759a5a66dd0b..e5641969c181 100644
> > --- a/drivers/gpu/drm/tiny/cirrus.c
> > +++ b/drivers/gpu/drm/tiny/cirrus.c
> > @@ -536,7 +536,7 @@ static int cirrus_mode_config_init(struct cirrus_device *cirrus)
> >
> >  DEFINE_DRM_GEM_FOPS(cirrus_fops);
> >
> > -static struct drm_driver cirrus_driver = {
> > +static const struct drm_driver cirrus_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> > index cc397671f689..5a953c4ce265 100644
> > --- a/drivers/gpu/drm/tiny/gm12u320.c
> > +++ b/drivers/gpu/drm/tiny/gm12u320.c
> > @@ -600,7 +600,7 @@ static const uint64_t gm12u320_pipe_modifiers[] = {
> >
> >  DEFINE_DRM_GEM_FOPS(gm12u320_fops);
> >
> > -static struct drm_driver gm12u320_drm_driver = {
> > +static const struct drm_driver gm12u320_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> >       .name            = DRIVER_NAME,
> > diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
> > index 0998309b0d95..c6525cd02bc2 100644
> > --- a/drivers/gpu/drm/tiny/hx8357d.c
> > +++ b/drivers/gpu/drm/tiny/hx8357d.c
> > @@ -193,7 +193,7 @@ static const struct drm_display_mode yx350hv15_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
> >
> > -static struct drm_driver hx8357d_driver = {
> > +static const struct drm_driver hx8357d_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &hx8357d_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
> > index 97a77262d791..8e98962db5a2 100644
> > --- a/drivers/gpu/drm/tiny/ili9225.c
> > +++ b/drivers/gpu/drm/tiny/ili9225.c
> > @@ -337,7 +337,7 @@ static const struct drm_display_mode ili9225_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
> >
> > -static struct drm_driver ili9225_driver = {
> > +static const struct drm_driver ili9225_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9225_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
> > index d39c39df56ad..6ce97f0698eb 100644
> > --- a/drivers/gpu/drm/tiny/ili9341.c
> > +++ b/drivers/gpu/drm/tiny/ili9341.c
> > @@ -149,7 +149,7 @@ static const struct drm_display_mode yx240qv29_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
> >
> > -static struct drm_driver ili9341_driver = {
> > +static const struct drm_driver ili9341_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9341_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
> > index 403af68fa440..d7ce40eb166a 100644
> > --- a/drivers/gpu/drm/tiny/ili9486.c
> > +++ b/drivers/gpu/drm/tiny/ili9486.c
> > @@ -162,7 +162,7 @@ static const struct drm_display_mode waveshare_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
> >
> > -static struct drm_driver ili9486_driver = {
> > +static const struct drm_driver ili9486_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &ili9486_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
> > index 2131b4268c00..ff77f983f803 100644
> > --- a/drivers/gpu/drm/tiny/mi0283qt.c
> > +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> > @@ -153,7 +153,7 @@ static const struct drm_display_mode mi0283qt_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
> >
> > -static struct drm_driver mi0283qt_driver = {
> > +static const struct drm_driver mi0283qt_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &mi0283qt_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> > index 2e01cf0a9876..11c602fc9897 100644
> > --- a/drivers/gpu/drm/tiny/repaper.c
> > +++ b/drivers/gpu/drm/tiny/repaper.c
> > @@ -936,7 +936,7 @@ static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
> >
> > -static struct drm_driver repaper_driver = {
> > +static const struct drm_driver repaper_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &repaper_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
> > index d05de03891f8..ff5cf60f4bd7 100644
> > --- a/drivers/gpu/drm/tiny/st7586.c
> > +++ b/drivers/gpu/drm/tiny/st7586.c
> > @@ -277,7 +277,7 @@ static const struct drm_display_mode st7586_mode = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
> >
> > -static struct drm_driver st7586_driver = {
> > +static const struct drm_driver st7586_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7586_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
> > index a0f688f0d050..2c77d9ab7e8d 100644
> > --- a/drivers/gpu/drm/tiny/st7735r.c
> > +++ b/drivers/gpu/drm/tiny/st7735r.c
> > @@ -154,7 +154,7 @@ static const struct st7735r_cfg rh128128t_cfg = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
> >
> > -static struct drm_driver st7735r_driver = {
> > +static const struct drm_driver st7735r_driver = {
> >       .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .fops                   = &st7735r_fops,
> >       DRM_GEM_CMA_DRIVER_OPS_VMAP,
> > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > index b5259cb1383f..07140e0b90a3 100644
> > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > @@ -137,7 +137,7 @@ static int tve200_modeset_init(struct drm_device *dev)
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
> >
> > -static struct drm_driver tve200_drm_driver = {
> > +static const struct drm_driver tve200_drm_driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >       .ioctls = NULL,
> >       .fops = &drm_fops,
> > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > index 96d4317a2c1b..46df4d07bd7b 100644
> > --- a/drivers/gpu/drm/udl/udl_drv.c
> > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > @@ -34,7 +34,7 @@ static int udl_usb_resume(struct usb_interface *interface)
> >
> >  DEFINE_DRM_GEM_FOPS(udl_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
> >
> >       /* GEM hooks */
> > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
> > index 9f7c26193831..2da0c1180bc6 100644
> > --- a/drivers/gpu/drm/v3d/v3d_drv.c
> > +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> > @@ -194,7 +194,7 @@ static const struct drm_ioctl_desc v3d_drm_ioctls[] = {
> >       DRM_IOCTL_DEF_DRV(V3D_SUBMIT_CSD, v3d_submit_csd_ioctl, DRM_RENDER_ALLOW | DRM_AUTH),
> >  };
> >
> > -static struct drm_driver v3d_drm_driver = {
> > +static const struct drm_driver v3d_drm_driver = {
> >       .driver_features = (DRIVER_GEM |
> >                           DRIVER_RENDER |
> >                           DRIVER_SYNCOBJ),
> > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > index cf2e3e6a2388..f3eac72cb46e 100644
> > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> > @@ -26,7 +26,7 @@ static int vbox_modeset = -1;
> >  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
> >  module_param_named(modeset, vbox_modeset, int, 0400);
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static const struct pci_device_id pciidlist[] = {
> >       { PCI_DEVICE(0x80ee, 0xbeef) },
> > @@ -175,7 +175,7 @@ static struct pci_driver vbox_pci_driver = {
> >
> >  DEFINE_DRM_GEM_FOPS(vbox_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >           DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> > index fa54a6d1403d..3e9b7a4c30ce 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -415,7 +415,7 @@ static const struct drm_gem_object_funcs vgem_gem_object_funcs = {
> >       .vm_ops = &vgem_gem_vm_ops,
> >  };
> >
> > -static struct drm_driver vgem_driver = {
> > +static const struct drm_driver vgem_driver = {
> >       .driver_features                = DRIVER_GEM | DRIVER_RENDER,
> >       .open                           = vgem_open,
> >       .postclose                      = vgem_postclose,
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > index 86330f1ade72..27f13bd29c13 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> > @@ -37,7 +37,7 @@
> >
> >  #include "virtgpu_drv.h"
> >
> > -static struct drm_driver driver;
> > +static const struct drm_driver driver;
> >
> >  static int virtio_gpu_modeset = -1;
> >
> > @@ -190,7 +190,7 @@ MODULE_AUTHOR("Alon Levy");
> >
> >  DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .open = virtio_gpu_driver_open,
> >       .postclose = virtio_gpu_driver_postclose,
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > index 98ba844ae77d..8056b3d1ff6a 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -78,7 +78,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
> >       drm_atomic_helper_cleanup_planes(dev, old_state);
> >  }
> >
> > -static struct drm_driver vkms_driver = {
> > +static const struct drm_driver vkms_driver = {
> >       .driver_features        = DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_GEM,
> >       .release                = vkms_release,
> >       .fops                   = &vkms_driver_fops,
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 68206d0a1237..e66b252e3923 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1465,7 +1465,7 @@ static const struct file_operations vmwgfx_driver_fops = {
> >       .get_unmapped_area = vmw_get_unmapped_area,
> >  };
> >
> > -static struct drm_driver driver = {
> > +static const struct drm_driver driver = {
> >       .driver_features =
> >       DRIVER_MODESET | DRIVER_RENDER | DRIVER_ATOMIC,
> >       .ioctls = vmw_ioctls,
> > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > index 98b6d2ba088a..30d9adf31c84 100644
> > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > @@ -483,7 +483,7 @@ static const struct file_operations xen_drm_dev_fops = {
> >       .mmap           = xen_drm_front_gem_mmap,
> >  };
> >
> > -static struct drm_driver xen_drm_driver = {
> > +static const struct drm_driver xen_drm_driver = {
> >       .driver_features           = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       .release                   = xen_drm_drv_release,
> >       .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
> > diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > index f3ffc3703a0e..0c1c50271a88 100644
> > --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> > @@ -76,7 +76,7 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
> >
> > -static struct drm_driver zynqmp_dpsub_drm_driver = {
> > +static const struct drm_driver zynqmp_dpsub_drm_driver = {
> >       .driver_features                = DRIVER_MODESET | DRIVER_GEM |
> >                                         DRIVER_ATOMIC,
> >
> > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > index 31014a451f8b..5506336594e2 100644
> > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > @@ -34,7 +34,7 @@ static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
> >
> >  DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
> >
> > -static struct drm_driver zx_drm_driver = {
> > +static const struct drm_driver zx_drm_driver = {
> >       .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
> >       DRM_GEM_CMA_DRIVER_OPS,
> >       .fops = &zx_drm_fops,
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
  2020-10-26  8:37     ` [Intel-gfx] " Thomas Zimmermann
@ 2020-10-26  9:17       ` Daniel Vetter
  -1 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-26  9:17 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development, DRI Development

On Mon, Oct 26, 2020 at 9:37 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> > This means some very few #ifdef in code, but it allows us to
> > enlist the compiler to make sure this stuff isn't used anymore.
> >
> > More important, only legacy drivers change drm_device (for the
> > legacy_dev_list shadow attach management), therefore this is
> > prep to allow modern drivers to have a const driver struct. Which
> > is nice, because there's a ton of function pointers in there.
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Thomas Zimmermann <tzimmermann@suse.de>
> > Cc: David Airlie <airlied@linux.ie>
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> Review-by: Thomas Zimmermann <tzimmermann@suse.de>
>
> Sort of related: the implementation for KMS and UMS devices is more and
> more distinct from each other. Did you ever consider going for separate
> legacy helpers instead of mixing-in all these ifdefs?

I think we could split out drm_pci_legacy.c. Everything else is
already split out into separate files and made optional at the
Makefile level, it's really only in oddball places around the shared
drm_device where there's any #ifdef at all.
-Daniel

>
> Best regards
> Thomas
>
> > ---
> >  drivers/gpu/drm/drm_file.c   |  2 ++
> >  drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
> >  include/drm/drm_drv.h        |  2 ++
> >  3 files changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> > index 0ac4566ae3f4..b50380fa80ce 100644
> > --- a/drivers/gpu/drm/drm_file.c
> > +++ b/drivers/gpu/drm/drm_file.c
> > @@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
> >                 (long)old_encode_dev(file->minor->kdev->devt),
> >                 atomic_read(&dev->open_count));
> >
> > +#ifdef CONFIG_DRM_LEGACY
> >       if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
> >           dev->driver->preclose)
> >               dev->driver->preclose(dev, file);
> > +#endif
> >
> >       if (drm_core_check_feature(dev, DRIVER_LEGACY))
> >               drm_legacy_lock_release(dev, file->filp);
> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > index ba7e741764aa..15e5ea436434 100644
> > --- a/drivers/gpu/drm/drm_vblank.c
> > +++ b/drivers/gpu/drm/drm_vblank.c
> > @@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
> >
> >               if (crtc->funcs->get_vblank_counter)
> >                       return crtc->funcs->get_vblank_counter(crtc);
> > -     } else if (dev->driver->get_vblank_counter) {
> > +     }
> > +#ifdef CONFIG_DRM_LEGACY
> > +     else if (dev->driver->get_vblank_counter) {
> >               return dev->driver->get_vblank_counter(dev, pipe);
> >       }
> > +#endif
> >
> >       return drm_vblank_no_hw_counter(dev, pipe);
> >  }
> > @@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
> >
> >               if (crtc->funcs->disable_vblank)
> >                       crtc->funcs->disable_vblank(crtc);
> > -     } else {
> > +     }
> > +#ifdef CONFIG_DRM_LEGACY
> > +     else {
> >               dev->driver->disable_vblank(dev, pipe);
> >       }
> > +#endif
> >  }
> >
> >  /*
> > @@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
> >
> >               if (crtc->funcs->enable_vblank)
> >                       return crtc->funcs->enable_vblank(crtc);
> > -     } else if (dev->driver->enable_vblank) {
> > +     }
> > +#ifdef CONFIG_DRM_LEGACY
> > +     else if (dev->driver->enable_vblank) {
> >               return dev->driver->enable_vblank(dev, pipe);
> >       }
> > +#endif
> >
> >       return -EINVAL;
> >  }
> > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> > index c6d17550efc9..7af220226a25 100644
> > --- a/include/drm/drm_drv.h
> > +++ b/include/drm/drm_drv.h
> > @@ -498,6 +498,7 @@ struct drm_driver {
> >        */
> >       const struct file_operations *fops;
> >
> > +#ifdef CONFIG_DRM_LEGACY
> >       /* Everything below here is for legacy driver, never use! */
> >       /* private: */
> >
> > @@ -512,6 +513,7 @@ struct drm_driver {
> >       int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
> >       void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
> >       int dev_priv_size;
> > +#endif
> >  };
> >
> >  void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [Intel-gfx] [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device
@ 2020-10-26  9:17       ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-26  9:17 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: David Airlie, Daniel Vetter, Intel Graphics Development, DRI Development

On Mon, Oct 26, 2020 at 9:37 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 23.10.20 um 14:28 schrieb Daniel Vetter:
> > This means some very few #ifdef in code, but it allows us to
> > enlist the compiler to make sure this stuff isn't used anymore.
> >
> > More important, only legacy drivers change drm_device (for the
> > legacy_dev_list shadow attach management), therefore this is
> > prep to allow modern drivers to have a const driver struct. Which
> > is nice, because there's a ton of function pointers in there.
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Thomas Zimmermann <tzimmermann@suse.de>
> > Cc: David Airlie <airlied@linux.ie>
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> Review-by: Thomas Zimmermann <tzimmermann@suse.de>
>
> Sort of related: the implementation for KMS and UMS devices is more and
> more distinct from each other. Did you ever consider going for separate
> legacy helpers instead of mixing-in all these ifdefs?

I think we could split out drm_pci_legacy.c. Everything else is
already split out into separate files and made optional at the
Makefile level, it's really only in oddball places around the shared
drm_device where there's any #ifdef at all.
-Daniel

>
> Best regards
> Thomas
>
> > ---
> >  drivers/gpu/drm/drm_file.c   |  2 ++
> >  drivers/gpu/drm/drm_vblank.c | 15 ++++++++++++---
> >  include/drm/drm_drv.h        |  2 ++
> >  3 files changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> > index 0ac4566ae3f4..b50380fa80ce 100644
> > --- a/drivers/gpu/drm/drm_file.c
> > +++ b/drivers/gpu/drm/drm_file.c
> > @@ -258,9 +258,11 @@ void drm_file_free(struct drm_file *file)
> >                 (long)old_encode_dev(file->minor->kdev->devt),
> >                 atomic_read(&dev->open_count));
> >
> > +#ifdef CONFIG_DRM_LEGACY
> >       if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
> >           dev->driver->preclose)
> >               dev->driver->preclose(dev, file);
> > +#endif
> >
> >       if (drm_core_check_feature(dev, DRIVER_LEGACY))
> >               drm_legacy_lock_release(dev, file->filp);
> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > index ba7e741764aa..15e5ea436434 100644
> > --- a/drivers/gpu/drm/drm_vblank.c
> > +++ b/drivers/gpu/drm/drm_vblank.c
> > @@ -210,9 +210,12 @@ static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
> >
> >               if (crtc->funcs->get_vblank_counter)
> >                       return crtc->funcs->get_vblank_counter(crtc);
> > -     } else if (dev->driver->get_vblank_counter) {
> > +     }
> > +#ifdef CONFIG_DRM_LEGACY
> > +     else if (dev->driver->get_vblank_counter) {
> >               return dev->driver->get_vblank_counter(dev, pipe);
> >       }
> > +#endif
> >
> >       return drm_vblank_no_hw_counter(dev, pipe);
> >  }
> > @@ -430,9 +433,12 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe)
> >
> >               if (crtc->funcs->disable_vblank)
> >                       crtc->funcs->disable_vblank(crtc);
> > -     } else {
> > +     }
> > +#ifdef CONFIG_DRM_LEGACY
> > +     else {
> >               dev->driver->disable_vblank(dev, pipe);
> >       }
> > +#endif
> >  }
> >
> >  /*
> > @@ -1097,9 +1103,12 @@ static int __enable_vblank(struct drm_device *dev, unsigned int pipe)
> >
> >               if (crtc->funcs->enable_vblank)
> >                       return crtc->funcs->enable_vblank(crtc);
> > -     } else if (dev->driver->enable_vblank) {
> > +     }
> > +#ifdef CONFIG_DRM_LEGACY
> > +     else if (dev->driver->enable_vblank) {
> >               return dev->driver->enable_vblank(dev, pipe);
> >       }
> > +#endif
> >
> >       return -EINVAL;
> >  }
> > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> > index c6d17550efc9..7af220226a25 100644
> > --- a/include/drm/drm_drv.h
> > +++ b/include/drm/drm_drv.h
> > @@ -498,6 +498,7 @@ struct drm_driver {
> >        */
> >       const struct file_operations *fops;
> >
> > +#ifdef CONFIG_DRM_LEGACY
> >       /* Everything below here is for legacy driver, never use! */
> >       /* private: */
> >
> > @@ -512,6 +513,7 @@ struct drm_driver {
> >       int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
> >       void (*disable_vblank)(struct drm_device *dev, unsigned int pipe);
> >       int dev_priv_size;
> > +#endif
> >  };
> >
> >  void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
  2020-10-30 10:11 ` Daniel Vetter
@ 2020-10-30 18:21   ` Alex Deucher
  -1 siblings, 0 replies; 67+ messages in thread
From: Alex Deucher @ 2020-10-30 18:21 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Intel Graphics Development, amd-gfx list, DRI Development,
	Alex Deucher, Daniel Vetter, Christian König

On Fri, Oct 30, 2020 at 6:11 AM Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
>
> With only the kms driver left, we can fold this in. This means
> we need to move the ioctl table, which means one additional ioctl
> must be defined in headers.
>
> Also there's a conflict between the radeon_init macro and the module
> init function, so rename the module functions to avoid that.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: amd-gfx@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/radeon/radeon.h     |  1 +
>  drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
>  drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
>  3 files changed, 62 insertions(+), 73 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
> index 5d54bccebd4d..f475785d6491 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
>                                 struct drm_file *filp);
>  int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
>                                 struct drm_file *filp);
> +int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
>
>  /* VRAM scratch page for HDP bug, default vram page */
>  struct r600_vram_scratch {
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 65061c949aee..9c11e36ad33a 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -51,6 +51,7 @@
>  #include <drm/radeon_drm.h>
>
>  #include "radeon_drv.h"
> +#include "radeon.h"
>
>  /*
>   * KMS wrapper.
> @@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
>                                       ktime_t *stime, ktime_t *etime,
>                                       const struct drm_display_mode *mode);
>  extern bool radeon_is_px(struct drm_device *dev);
> -extern const struct drm_ioctl_desc radeon_ioctls_kms[];
> -extern int radeon_max_kms_ioctl;
>  int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
>  int radeon_mode_dumb_mmap(struct drm_file *filp,
>                           struct drm_device *dev,
> @@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
>  #endif
>  };
>
> +static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
> +       /* KMS */
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +};
> +
>  static struct drm_driver kms_driver = {
>         .driver_features =
> -           DRIVER_GEM | DRIVER_RENDER,
> +           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>         .load = radeon_driver_load_kms,
>         .open = radeon_driver_open_kms,
>         .postclose = radeon_driver_postclose_kms,
> @@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
>         .irq_uninstall = radeon_driver_irq_uninstall_kms,
>         .irq_handler = radeon_driver_irq_handler_kms,
>         .ioctls = radeon_ioctls_kms,
> +       .num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
>         .dumb_create = radeon_mode_dumb_create,
>         .dumb_map_offset = radeon_mode_dumb_mmap,
>         .fops = &radeon_driver_kms_fops,
> @@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
>         .patchlevel = KMS_DRIVER_PATCHLEVEL,
>  };
>
> -static struct drm_driver *driver;
> -static struct pci_driver *pdriver;
> -
>  static struct pci_driver radeon_kms_pci_driver = {
>         .name = DRIVER_NAME,
>         .id_table = pciidlist,
> @@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
>         .driver.pm = &radeon_pm_ops,
>  };
>
> -static int __init radeon_init(void)
> +static int __init radeon_module_init(void)
>  {
>         if (vgacon_text_force() && radeon_modeset == -1) {
>                 DRM_INFO("VGACON disable radeon kernel modesetting.\n");
>                 radeon_modeset = 0;
>         }
> -       /* set to modesetting by default if not nomodeset */
> -       if (radeon_modeset == -1)
> -               radeon_modeset = 1;
> -
> -       if (radeon_modeset == 1) {
> -               DRM_INFO("radeon kernel modesetting enabled.\n");
> -               driver = &kms_driver;
> -               pdriver = &radeon_kms_pci_driver;
> -               driver->driver_features |= DRIVER_MODESET;
> -               driver->num_ioctls = radeon_max_kms_ioctl;
> -               radeon_register_atpx_handler();
> -
> -       } else {
> +
> +       if (radeon_modeset == 0) {
>                 DRM_ERROR("No UMS support in radeon module!\n");
>                 return -EINVAL;
>         }
>
> -       return pci_register_driver(pdriver);
> +       DRM_INFO("radeon kernel modesetting enabled.\n");
> +       radeon_register_atpx_handler();
> +
> +       return pci_register_driver(&radeon_kms_pci_driver);
>  }
>
> -static void __exit radeon_exit(void)
> +static void __exit radeon_module_exit(void)
>  {
> -       pci_unregister_driver(pdriver);
> +       pci_unregister_driver(&radeon_kms_pci_driver);
>         radeon_unregister_atpx_handler();
>         mmu_notifier_synchronize();
>  }
>
> -module_init(radeon_init);
> -module_exit(radeon_exit);
> +module_init(radeon_module_init);
> +module_exit(radeon_module_exit);
>
>  MODULE_AUTHOR(DRIVER_AUTHOR);
>  MODULE_DESCRIPTION(DRIVER_DESC);
> diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
> index 99ee60f8b604..abb3bdd9ca25 100644
> --- a/drivers/gpu/drm/radeon/radeon_kms.c
> +++ b/drivers/gpu/drm/radeon/radeon_kms.c
> @@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
>   * etc. (all asics).
>   * Returns 0 on success, -EINVAL on failure.
>   */
> -static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
> +int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
>  {
>         struct radeon_device *rdev = dev->dev_private;
>         struct drm_radeon_info *info = data;
> @@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
>         radeon_irq_set(rdev);
>         spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
>  }
> -
> -const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
> -       /* KMS */
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -};
> -int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
> --
> 2.28.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 67+ messages in thread

* Re: [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
@ 2020-10-30 18:21   ` Alex Deucher
  0 siblings, 0 replies; 67+ messages in thread
From: Alex Deucher @ 2020-10-30 18:21 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Intel Graphics Development, amd-gfx list, DRI Development,
	Alex Deucher, Daniel Vetter, Christian König

On Fri, Oct 30, 2020 at 6:11 AM Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
>
> With only the kms driver left, we can fold this in. This means
> we need to move the ioctl table, which means one additional ioctl
> must be defined in headers.
>
> Also there's a conflict between the radeon_init macro and the module
> init function, so rename the module functions to avoid that.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: amd-gfx@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/radeon/radeon.h     |  1 +
>  drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
>  drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
>  3 files changed, 62 insertions(+), 73 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
> index 5d54bccebd4d..f475785d6491 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
>                                 struct drm_file *filp);
>  int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
>                                 struct drm_file *filp);
> +int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
>
>  /* VRAM scratch page for HDP bug, default vram page */
>  struct r600_vram_scratch {
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 65061c949aee..9c11e36ad33a 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -51,6 +51,7 @@
>  #include <drm/radeon_drm.h>
>
>  #include "radeon_drv.h"
> +#include "radeon.h"
>
>  /*
>   * KMS wrapper.
> @@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
>                                       ktime_t *stime, ktime_t *etime,
>                                       const struct drm_display_mode *mode);
>  extern bool radeon_is_px(struct drm_device *dev);
> -extern const struct drm_ioctl_desc radeon_ioctls_kms[];
> -extern int radeon_max_kms_ioctl;
>  int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
>  int radeon_mode_dumb_mmap(struct drm_file *filp,
>                           struct drm_device *dev,
> @@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
>  #endif
>  };
>
> +static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> +       DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
> +       /* KMS */
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> +};
> +
>  static struct drm_driver kms_driver = {
>         .driver_features =
> -           DRIVER_GEM | DRIVER_RENDER,
> +           DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
>         .load = radeon_driver_load_kms,
>         .open = radeon_driver_open_kms,
>         .postclose = radeon_driver_postclose_kms,
> @@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
>         .irq_uninstall = radeon_driver_irq_uninstall_kms,
>         .irq_handler = radeon_driver_irq_handler_kms,
>         .ioctls = radeon_ioctls_kms,
> +       .num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
>         .dumb_create = radeon_mode_dumb_create,
>         .dumb_map_offset = radeon_mode_dumb_mmap,
>         .fops = &radeon_driver_kms_fops,
> @@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
>         .patchlevel = KMS_DRIVER_PATCHLEVEL,
>  };
>
> -static struct drm_driver *driver;
> -static struct pci_driver *pdriver;
> -
>  static struct pci_driver radeon_kms_pci_driver = {
>         .name = DRIVER_NAME,
>         .id_table = pciidlist,
> @@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
>         .driver.pm = &radeon_pm_ops,
>  };
>
> -static int __init radeon_init(void)
> +static int __init radeon_module_init(void)
>  {
>         if (vgacon_text_force() && radeon_modeset == -1) {
>                 DRM_INFO("VGACON disable radeon kernel modesetting.\n");
>                 radeon_modeset = 0;
>         }
> -       /* set to modesetting by default if not nomodeset */
> -       if (radeon_modeset == -1)
> -               radeon_modeset = 1;
> -
> -       if (radeon_modeset == 1) {
> -               DRM_INFO("radeon kernel modesetting enabled.\n");
> -               driver = &kms_driver;
> -               pdriver = &radeon_kms_pci_driver;
> -               driver->driver_features |= DRIVER_MODESET;
> -               driver->num_ioctls = radeon_max_kms_ioctl;
> -               radeon_register_atpx_handler();
> -
> -       } else {
> +
> +       if (radeon_modeset == 0) {
>                 DRM_ERROR("No UMS support in radeon module!\n");
>                 return -EINVAL;
>         }
>
> -       return pci_register_driver(pdriver);
> +       DRM_INFO("radeon kernel modesetting enabled.\n");
> +       radeon_register_atpx_handler();
> +
> +       return pci_register_driver(&radeon_kms_pci_driver);
>  }
>
> -static void __exit radeon_exit(void)
> +static void __exit radeon_module_exit(void)
>  {
> -       pci_unregister_driver(pdriver);
> +       pci_unregister_driver(&radeon_kms_pci_driver);
>         radeon_unregister_atpx_handler();
>         mmu_notifier_synchronize();
>  }
>
> -module_init(radeon_init);
> -module_exit(radeon_exit);
> +module_init(radeon_module_init);
> +module_exit(radeon_module_exit);
>
>  MODULE_AUTHOR(DRIVER_AUTHOR);
>  MODULE_DESCRIPTION(DRIVER_DESC);
> diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
> index 99ee60f8b604..abb3bdd9ca25 100644
> --- a/drivers/gpu/drm/radeon/radeon_kms.c
> +++ b/drivers/gpu/drm/radeon/radeon_kms.c
> @@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
>   * etc. (all asics).
>   * Returns 0 on success, -EINVAL on failure.
>   */
> -static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
> +int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
>  {
>         struct radeon_device *rdev = dev->dev_private;
>         struct drm_radeon_info *info = data;
> @@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
>         radeon_irq_set(rdev);
>         spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
>  }
> -
> -const struct drm_ioctl_desc radeon_ioctls_kms[] = {
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
> -       /* KMS */
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -       DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
> -};
> -int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
> --
> 2.28.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
@ 2020-10-30 10:11 ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-30 10:11 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Intel Graphics Development, amd-gfx, Alex Deucher,
	Daniel Vetter, Christian König

With only the kms driver left, we can fold this in. This means
we need to move the ioctl table, which means one additional ioctl
must be defined in headers.

Also there's a conflict between the radeon_init macro and the module
init function, so rename the module functions to avoid that.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/radeon/radeon.h     |  1 +
 drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
 drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
 3 files changed, 62 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 5d54bccebd4d..f475785d6491 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
 int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
 
 /* VRAM scratch page for HDP bug, default vram page */
 struct r600_vram_scratch {
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 65061c949aee..9c11e36ad33a 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -51,6 +51,7 @@
 #include <drm/radeon_drm.h>
 
 #include "radeon_drv.h"
+#include "radeon.h"
 
 /*
  * KMS wrapper.
@@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
 				      ktime_t *stime, ktime_t *etime,
 				      const struct drm_display_mode *mode);
 extern bool radeon_is_px(struct drm_device *dev);
-extern const struct drm_ioctl_desc radeon_ioctls_kms[];
-extern int radeon_max_kms_ioctl;
 int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
 int radeon_mode_dumb_mmap(struct drm_file *filp,
 			  struct drm_device *dev,
@@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
 #endif
 };
 
+static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
+	/* KMS */
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+};
+
 static struct drm_driver kms_driver = {
 	.driver_features =
-	    DRIVER_GEM | DRIVER_RENDER,
+	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
 	.open = radeon_driver_open_kms,
 	.postclose = radeon_driver_postclose_kms,
@@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
 	.irq_uninstall = radeon_driver_irq_uninstall_kms,
 	.irq_handler = radeon_driver_irq_handler_kms,
 	.ioctls = radeon_ioctls_kms,
+	.num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
 	.dumb_create = radeon_mode_dumb_create,
 	.dumb_map_offset = radeon_mode_dumb_mmap,
 	.fops = &radeon_driver_kms_fops,
@@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
 };
 
-static struct drm_driver *driver;
-static struct pci_driver *pdriver;
-
 static struct pci_driver radeon_kms_pci_driver = {
 	.name = DRIVER_NAME,
 	.id_table = pciidlist,
@@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
 	.driver.pm = &radeon_pm_ops,
 };
 
-static int __init radeon_init(void)
+static int __init radeon_module_init(void)
 {
 	if (vgacon_text_force() && radeon_modeset == -1) {
 		DRM_INFO("VGACON disable radeon kernel modesetting.\n");
 		radeon_modeset = 0;
 	}
-	/* set to modesetting by default if not nomodeset */
-	if (radeon_modeset == -1)
-		radeon_modeset = 1;
-
-	if (radeon_modeset == 1) {
-		DRM_INFO("radeon kernel modesetting enabled.\n");
-		driver = &kms_driver;
-		pdriver = &radeon_kms_pci_driver;
-		driver->driver_features |= DRIVER_MODESET;
-		driver->num_ioctls = radeon_max_kms_ioctl;
-		radeon_register_atpx_handler();
-
-	} else {
+
+	if (radeon_modeset == 0) {
 		DRM_ERROR("No UMS support in radeon module!\n");
 		return -EINVAL;
 	}
 
-	return pci_register_driver(pdriver);
+	DRM_INFO("radeon kernel modesetting enabled.\n");
+	radeon_register_atpx_handler();
+
+	return pci_register_driver(&radeon_kms_pci_driver);
 }
 
-static void __exit radeon_exit(void)
+static void __exit radeon_module_exit(void)
 {
-	pci_unregister_driver(pdriver);
+	pci_unregister_driver(&radeon_kms_pci_driver);
 	radeon_unregister_atpx_handler();
 	mmu_notifier_synchronize();
 }
 
-module_init(radeon_init);
-module_exit(radeon_exit);
+module_init(radeon_module_init);
+module_exit(radeon_module_exit);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 99ee60f8b604..abb3bdd9ca25 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
  * etc. (all asics).
  * Returns 0 on success, -EINVAL on failure.
  */
-static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
 	struct radeon_device *rdev = dev->dev_private;
 	struct drm_radeon_info *info = data;
@@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
 	radeon_irq_set(rdev);
 	spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
 }
-
-const struct drm_ioctl_desc radeon_ioctls_kms[] = {
-	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
-	/* KMS */
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-};
-int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct
@ 2020-10-30 10:11 ` Daniel Vetter
  0 siblings, 0 replies; 67+ messages in thread
From: Daniel Vetter @ 2020-10-30 10:11 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Intel Graphics Development, amd-gfx, Alex Deucher,
	Daniel Vetter, Christian König

With only the kms driver left, we can fold this in. This means
we need to move the ioctl table, which means one additional ioctl
must be defined in headers.

Also there's a conflict between the radeon_init macro and the module
init function, so rename the module functions to avoid that.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/radeon/radeon.h     |  1 +
 drivers/gpu/drm/radeon/radeon_drv.c | 85 ++++++++++++++++++++---------
 drivers/gpu/drm/radeon/radeon_kms.c | 49 +----------------
 3 files changed, 62 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 5d54bccebd4d..f475785d6491 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -2244,6 +2244,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
 int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp);
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
 
 /* VRAM scratch page for HDP bug, default vram page */
 struct r600_vram_scratch {
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 65061c949aee..9c11e36ad33a 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -51,6 +51,7 @@
 #include <drm/radeon_drm.h>
 
 #include "radeon_drv.h"
+#include "radeon.h"
 
 /*
  * KMS wrapper.
@@ -129,8 +130,6 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
 				      ktime_t *stime, ktime_t *etime,
 				      const struct drm_display_mode *mode);
 extern bool radeon_is_px(struct drm_device *dev);
-extern const struct drm_ioctl_desc radeon_ioctls_kms[];
-extern int radeon_max_kms_ioctl;
 int radeon_mmap(struct file *filp, struct vm_area_struct *vma);
 int radeon_mode_dumb_mmap(struct drm_file *filp,
 			  struct drm_device *dev,
@@ -584,9 +583,55 @@ static const struct file_operations radeon_driver_kms_fops = {
 #endif
 };
 
+static const struct drm_ioctl_desc radeon_ioctls_kms[] = {
+	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
+	/* KMS */
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+};
+
 static struct drm_driver kms_driver = {
 	.driver_features =
-	    DRIVER_GEM | DRIVER_RENDER,
+	    DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET,
 	.load = radeon_driver_load_kms,
 	.open = radeon_driver_open_kms,
 	.postclose = radeon_driver_postclose_kms,
@@ -597,6 +642,7 @@ static struct drm_driver kms_driver = {
 	.irq_uninstall = radeon_driver_irq_uninstall_kms,
 	.irq_handler = radeon_driver_irq_handler_kms,
 	.ioctls = radeon_ioctls_kms,
+	.num_ioctls = ARRAY_SIZE(radeon_ioctls_kms),
 	.dumb_create = radeon_mode_dumb_create,
 	.dumb_map_offset = radeon_mode_dumb_mmap,
 	.fops = &radeon_driver_kms_fops,
@@ -613,9 +659,6 @@ static struct drm_driver kms_driver = {
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
 };
 
-static struct drm_driver *driver;
-static struct pci_driver *pdriver;
-
 static struct pci_driver radeon_kms_pci_driver = {
 	.name = DRIVER_NAME,
 	.id_table = pciidlist,
@@ -625,41 +668,33 @@ static struct pci_driver radeon_kms_pci_driver = {
 	.driver.pm = &radeon_pm_ops,
 };
 
-static int __init radeon_init(void)
+static int __init radeon_module_init(void)
 {
 	if (vgacon_text_force() && radeon_modeset == -1) {
 		DRM_INFO("VGACON disable radeon kernel modesetting.\n");
 		radeon_modeset = 0;
 	}
-	/* set to modesetting by default if not nomodeset */
-	if (radeon_modeset == -1)
-		radeon_modeset = 1;
-
-	if (radeon_modeset == 1) {
-		DRM_INFO("radeon kernel modesetting enabled.\n");
-		driver = &kms_driver;
-		pdriver = &radeon_kms_pci_driver;
-		driver->driver_features |= DRIVER_MODESET;
-		driver->num_ioctls = radeon_max_kms_ioctl;
-		radeon_register_atpx_handler();
-
-	} else {
+
+	if (radeon_modeset == 0) {
 		DRM_ERROR("No UMS support in radeon module!\n");
 		return -EINVAL;
 	}
 
-	return pci_register_driver(pdriver);
+	DRM_INFO("radeon kernel modesetting enabled.\n");
+	radeon_register_atpx_handler();
+
+	return pci_register_driver(&radeon_kms_pci_driver);
 }
 
-static void __exit radeon_exit(void)
+static void __exit radeon_module_exit(void)
 {
-	pci_unregister_driver(pdriver);
+	pci_unregister_driver(&radeon_kms_pci_driver);
 	radeon_unregister_atpx_handler();
 	mmu_notifier_synchronize();
 }
 
-module_init(radeon_init);
-module_exit(radeon_exit);
+module_init(radeon_module_init);
+module_exit(radeon_module_exit);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 99ee60f8b604..abb3bdd9ca25 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -221,7 +221,7 @@ static void radeon_set_filp_rights(struct drm_device *dev,
  * etc. (all asics).
  * Returns 0 on success, -EINVAL on failure.
  */
-static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
 	struct radeon_device *rdev = dev->dev_private;
 	struct drm_radeon_info *info = data;
@@ -866,50 +866,3 @@ void radeon_disable_vblank_kms(struct drm_crtc *crtc)
 	radeon_irq_set(rdev);
 	spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
 }
-
-const struct drm_ioctl_desc radeon_ioctls_kms[] = {
-	DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_START, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_RESET, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SWAP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CLEAR, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDICES, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FLIP, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_FREE, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, drm_invalid_op, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, drm_invalid_op, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, drm_invalid_op, DRM_AUTH),
-	/* KMS */
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-	DRM_IOCTL_DEF_DRV(RADEON_GEM_USERPTR, radeon_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
-};
-int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms);
-- 
2.28.0

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

^ permalink raw reply related	[flat|nested] 67+ messages in thread

end of thread, other threads:[~2020-10-30 18:21 UTC | newest]

Thread overview: 67+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-23 12:28 [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct Daniel Vetter
2020-10-23 12:28 ` Daniel Vetter
2020-10-23 12:28 ` [Intel-gfx] " Daniel Vetter
2020-10-23 12:28 ` [PATCH 2/5] drm: Compile out legacy chunks from struct drm_device Daniel Vetter
2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
2020-10-23 15:10   ` Maxime Ripard
2020-10-23 15:10     ` [Intel-gfx] " Maxime Ripard
2020-10-25 22:08   ` Sam Ravnborg
2020-10-25 22:08     ` [Intel-gfx] " Sam Ravnborg
2020-10-26  8:37   ` Thomas Zimmermann
2020-10-26  8:37     ` [Intel-gfx] " Thomas Zimmermann
2020-10-26  9:17     ` Daniel Vetter
2020-10-26  9:17       ` [Intel-gfx] " Daniel Vetter
2020-10-23 12:28 ` [PATCH 3/5] drm/amdgpu: Paper over the drm_driver mangling for virt Daniel Vetter
2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
2020-10-23 12:28 ` [PATCH 4/5] drm: Allow const struct drm_driver Daniel Vetter
2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
2020-10-23 15:11   ` Maxime Ripard
2020-10-23 15:11     ` [Intel-gfx] " Maxime Ripard
2020-10-25 21:44   ` Sam Ravnborg
2020-10-25 21:44     ` [Intel-gfx] " Sam Ravnborg
2020-10-26  8:40   ` Thomas Zimmermann
2020-10-26  8:40     ` [Intel-gfx] " Thomas Zimmermann
2020-10-23 12:28 ` [PATCH 5/5] drm/<drivers>: Constify " Daniel Vetter
2020-10-23 12:28   ` [Intel-gfx] " Daniel Vetter
2020-10-23 12:28   ` Daniel Vetter
2020-10-23 12:28   ` Daniel Vetter
2020-10-23 15:13   ` Maxime Ripard
2020-10-23 15:13     ` [Intel-gfx] " Maxime Ripard
2020-10-23 15:13     ` Maxime Ripard
2020-10-23 15:22   ` kernel test robot
2020-10-23 15:22     ` [Intel-gfx] " kernel test robot
2020-10-23 15:22     ` kernel test robot
2020-10-23 15:22     ` kernel test robot
2020-10-23 15:22     ` kernel test robot
     [not found]   ` <20201023122811.2374118-5-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2020-10-23 16:04     ` [PATCH] " Daniel Vetter
2020-10-23 16:04       ` [Intel-gfx] " Daniel Vetter
2020-10-23 16:04       ` Daniel Vetter
2020-10-23 16:04       ` Daniel Vetter
     [not found]       ` <20201023160444.2465340-1-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2020-10-25 22:23         ` Sam Ravnborg
2020-10-25 22:23           ` [Intel-gfx] " Sam Ravnborg
2020-10-25 22:23           ` Sam Ravnborg
2020-10-25 22:23           ` Sam Ravnborg
     [not found]           ` <20201025222303.GC13779-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-10-25 23:04             ` Daniel Vetter
2020-10-25 23:04               ` [Intel-gfx] " Daniel Vetter
2020-10-25 23:04               ` Daniel Vetter
2020-10-25 23:04               ` Daniel Vetter
2020-10-26  8:43     ` [PATCH 5/5] " Thomas Zimmermann
2020-10-26  8:43       ` [Intel-gfx] " Thomas Zimmermann
2020-10-26  8:43       ` Thomas Zimmermann
2020-10-26  8:43       ` Thomas Zimmermann
2020-10-26  9:14       ` Daniel Vetter
2020-10-26  9:14         ` [Intel-gfx] " Daniel Vetter
2020-10-26  9:14         ` Daniel Vetter
2020-10-26  9:14         ` Daniel Vetter
2020-10-23 13:39 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct Patchwork
2020-10-23 13:42 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2020-10-23 14:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-10-23 16:32 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2) Patchwork
2020-10-23 16:34 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2020-10-23 16:57 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-10-23 17:11 ` [Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct Patchwork
2020-10-23 20:37 ` [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/5] drm/radeon: Stop changing the drm_driver struct (rev2) Patchwork
2020-10-30 10:11 [PATCH 1/5] drm/radeon: Stop changing the drm_driver struct Daniel Vetter
2020-10-30 10:11 ` Daniel Vetter
2020-10-30 18:21 ` Alex Deucher
2020-10-30 18:21   ` Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.