aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c5
-rw-r--r--drivers/gpu/drm/ast/ast_drv.h2
-rw-r--r--drivers/gpu/drm/ast/ast_main.c3
-rw-r--r--drivers/gpu/drm/bochs/bochs_drv.c3
-rw-r--r--drivers/gpu/drm/cirrus/cirrus_drv.h2
-rw-r--r--drivers/gpu/drm/cirrus/cirrus_main.c5
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.c4
-rw-r--r--drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c4
-rw-r--r--drivers/gpu/drm/gma500/psb_drv.c3
-rw-r--r--drivers/gpu/drm/mga/mga_dma.c4
-rw-r--r--drivers/gpu/drm/mga/mga_drv.h2
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_drv.h2
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_main.c5
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drm.c3
-rw-r--r--drivers/gpu/drm/omapdrm/omap_drv.c4
-rw-r--r--drivers/gpu/drm/qxl/qxl_drv.h2
-rw-r--r--drivers/gpu/drm/qxl/qxl_kms.c5
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon_kms.c5
-rw-r--r--drivers/gpu/drm/savage/savage_bci.c4
-rw-r--r--drivers/gpu/drm/savage/savage_drv.h2
-rw-r--r--drivers/gpu/drm/shmobile/shmob_drm_drv.c4
-rw-r--r--drivers/gpu/drm/sis/sis_drv.c4
-rw-r--r--drivers/gpu/drm/tegra/drm.c6
-rw-r--r--drivers/gpu/drm/udl/udl_drv.h2
-rw-r--r--drivers/gpu/drm/udl/udl_main.c3
-rw-r--r--drivers/gpu/drm/via/via_drv.h2
-rw-r--r--drivers/gpu/drm/via/via_map.c4
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_drv.h2
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_kms.c3
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_drv.c4
-rw-r--r--include/drm/drm_drv.h5
33 files changed, 39 insertions, 73 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 54ac8a845e9f..7077ed65d403 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -1711,7 +1711,7 @@ extern const struct drm_ioctl_desc amdgpu_ioctls_kms[];
1711extern const int amdgpu_max_kms_ioctl; 1711extern const int amdgpu_max_kms_ioctl;
1712 1712
1713int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags); 1713int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags);
1714int amdgpu_driver_unload_kms(struct drm_device *dev); 1714void amdgpu_driver_unload_kms(struct drm_device *dev);
1715void amdgpu_driver_lastclose_kms(struct drm_device *dev); 1715void amdgpu_driver_lastclose_kms(struct drm_device *dev);
1716int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv); 1716int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv);
1717void amdgpu_driver_postclose_kms(struct drm_device *dev, 1717void amdgpu_driver_postclose_kms(struct drm_device *dev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 9af87eaf8ee3..8aef25828888 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -50,12 +50,12 @@ static inline bool amdgpu_has_atpx(void) { return false; }
50 * This is the main unload function for KMS (all asics). 50 * This is the main unload function for KMS (all asics).
51 * Returns 0 on success. 51 * Returns 0 on success.
52 */ 52 */
53int amdgpu_driver_unload_kms(struct drm_device *dev) 53void amdgpu_driver_unload_kms(struct drm_device *dev)
54{ 54{
55 struct amdgpu_device *adev = dev->dev_private; 55 struct amdgpu_device *adev = dev->dev_private;
56 56
57 if (adev == NULL) 57 if (adev == NULL)
58 return 0; 58 return;
59 59
60 if (adev->rmmio == NULL) 60 if (adev->rmmio == NULL)
61 goto done_free; 61 goto done_free;
@@ -74,7 +74,6 @@ int amdgpu_driver_unload_kms(struct drm_device *dev)
74done_free: 74done_free:
75 kfree(adev); 75 kfree(adev);
76 dev->dev_private = NULL; 76 dev->dev_private = NULL;
77 return 0;
78} 77}
79 78
80/** 79/**
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 6f3b6f50cf52..1051181d8c0d 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -122,7 +122,7 @@ struct ast_private {
122}; 122};
123 123
124int ast_driver_load(struct drm_device *dev, unsigned long flags); 124int ast_driver_load(struct drm_device *dev, unsigned long flags);
125int ast_driver_unload(struct drm_device *dev); 125void ast_driver_unload(struct drm_device *dev);
126 126
127struct ast_gem_object; 127struct ast_gem_object;
128 128
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index d85af0ff2653..5b59888426cf 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -476,7 +476,7 @@ out_free:
476 return ret; 476 return ret;
477} 477}
478 478
479int ast_driver_unload(struct drm_device *dev) 479void ast_driver_unload(struct drm_device *dev)
480{ 480{
481 struct ast_private *ast = dev->dev_private; 481 struct ast_private *ast = dev->dev_private;
482 482
@@ -489,7 +489,6 @@ int ast_driver_unload(struct drm_device *dev)
489 pci_iounmap(dev->pdev, ast->ioregs); 489 pci_iounmap(dev->pdev, ast->ioregs);
490 pci_iounmap(dev->pdev, ast->regs); 490 pci_iounmap(dev->pdev, ast->regs);
491 kfree(ast); 491 kfree(ast);
492 return 0;
493} 492}
494 493
495int ast_gem_create(struct drm_device *dev, 494int ast_gem_create(struct drm_device *dev,
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index 15a293e65b31..8a12b3f6fc66 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -19,7 +19,7 @@ MODULE_PARM_DESC(fbdev, "register fbdev device");
19/* ---------------------------------------------------------------------- */ 19/* ---------------------------------------------------------------------- */
20/* drm interface */ 20/* drm interface */
21 21
22static int bochs_unload(struct drm_device *dev) 22static void bochs_unload(struct drm_device *dev)
23{ 23{
24 struct bochs_device *bochs = dev->dev_private; 24 struct bochs_device *bochs = dev->dev_private;
25 25
@@ -29,7 +29,6 @@ static int bochs_unload(struct drm_device *dev)
29 bochs_hw_fini(dev); 29 bochs_hw_fini(dev);
30 kfree(bochs); 30 kfree(bochs);
31 dev->dev_private = NULL; 31 dev->dev_private = NULL;
32 return 0;
33} 32}
34 33
35static int bochs_load(struct drm_device *dev, unsigned long flags) 34static int bochs_load(struct drm_device *dev, unsigned long flags)
diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.h b/drivers/gpu/drm/cirrus/cirrus_drv.h
index b59aeef4635a..8690352d96f7 100644
--- a/drivers/gpu/drm/cirrus/cirrus_drv.h
+++ b/drivers/gpu/drm/cirrus/cirrus_drv.h
@@ -231,7 +231,7 @@ irqreturn_t cirrus_driver_irq_handler(int irq, void *arg);
231 231
232 /* cirrus_kms.c */ 232 /* cirrus_kms.c */
233int cirrus_driver_load(struct drm_device *dev, unsigned long flags); 233int cirrus_driver_load(struct drm_device *dev, unsigned long flags);
234int cirrus_driver_unload(struct drm_device *dev); 234void cirrus_driver_unload(struct drm_device *dev);
235extern struct drm_ioctl_desc cirrus_ioctls[]; 235extern struct drm_ioctl_desc cirrus_ioctls[];
236extern int cirrus_max_ioctl; 236extern int cirrus_max_ioctl;
237 237
diff --git a/drivers/gpu/drm/cirrus/cirrus_main.c b/drivers/gpu/drm/cirrus/cirrus_main.c
index 52d901fa8687..e7fc95f63dca 100644
--- a/drivers/gpu/drm/cirrus/cirrus_main.c
+++ b/drivers/gpu/drm/cirrus/cirrus_main.c
@@ -208,18 +208,17 @@ out:
208 return r; 208 return r;
209} 209}
210 210
211int cirrus_driver_unload(struct drm_device *dev) 211void cirrus_driver_unload(struct drm_device *dev)
212{ 212{
213 struct cirrus_device *cdev = dev->dev_private; 213 struct cirrus_device *cdev = dev->dev_private;
214 214
215 if (cdev == NULL) 215 if (cdev == NULL)
216 return 0; 216 return;
217 cirrus_modeset_fini(cdev); 217 cirrus_modeset_fini(cdev);
218 cirrus_mm_fini(cdev); 218 cirrus_mm_fini(cdev);
219 cirrus_device_fini(cdev); 219 cirrus_device_fini(cdev);
220 kfree(cdev); 220 kfree(cdev);
221 dev->dev_private = NULL; 221 dev->dev_private = NULL;
222 return 0;
223} 222}
224 223
225int cirrus_gem_create(struct drm_device *dev, 224int cirrus_gem_create(struct drm_device *dev,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 739180ac3da5..3ec053542e93 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -186,7 +186,7 @@ err_free_private:
186 return ret; 186 return ret;
187} 187}
188 188
189static int exynos_drm_unload(struct drm_device *dev) 189static void exynos_drm_unload(struct drm_device *dev)
190{ 190{
191 exynos_drm_device_subdrv_remove(dev); 191 exynos_drm_device_subdrv_remove(dev);
192 192
@@ -200,8 +200,6 @@ static int exynos_drm_unload(struct drm_device *dev)
200 200
201 kfree(dev->dev_private); 201 kfree(dev->dev_private);
202 dev->dev_private = NULL; 202 dev->dev_private = NULL;
203
204 return 0;
205} 203}
206 204
207static int commit_is_pending(struct exynos_drm_private *priv, u32 crtcs) 205static int commit_is_pending(struct exynos_drm_private *priv, u32 crtcs)
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 9a31711d5158..48705248f894 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -116,7 +116,7 @@ done:
116 return ret; 116 return ret;
117} 117}
118 118
119static int fsl_dcu_unload(struct drm_device *dev) 119static void fsl_dcu_unload(struct drm_device *dev)
120{ 120{
121 struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; 121 struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
122 122
@@ -131,8 +131,6 @@ static int fsl_dcu_unload(struct drm_device *dev)
131 drm_irq_uninstall(dev); 131 drm_irq_uninstall(dev);
132 132
133 dev->dev_private = NULL; 133 dev->dev_private = NULL;
134
135 return 0;
136} 134}
137 135
138static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg) 136static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index ff37ea585664..0dc7ba2fdc22 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -159,7 +159,7 @@ static int psb_do_init(struct drm_device *dev)
159 return 0; 159 return 0;
160} 160}
161 161
162static int psb_driver_unload(struct drm_device *dev) 162static void psb_driver_unload(struct drm_device *dev)
163{ 163{
164 struct drm_psb_private *dev_priv = dev->dev_private; 164 struct drm_psb_private *dev_priv = dev->dev_private;
165 165
@@ -220,7 +220,6 @@ static int psb_driver_unload(struct drm_device *dev)
220 dev->dev_private = NULL; 220 dev->dev_private = NULL;
221 } 221 }
222 gma_power_uninit(dev); 222 gma_power_uninit(dev);
223 return 0;
224} 223}
225 224
226static int psb_driver_load(struct drm_device *dev, unsigned long flags) 225static int psb_driver_load(struct drm_device *dev, unsigned long flags)
diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c
index 1f2f9ca25901..a1d8dd15b131 100644
--- a/drivers/gpu/drm/mga/mga_dma.c
+++ b/drivers/gpu/drm/mga/mga_dma.c
@@ -1127,12 +1127,10 @@ int mga_dma_buffers(struct drm_device *dev, void *data,
1127/** 1127/**
1128 * Called just before the module is unloaded. 1128 * Called just before the module is unloaded.
1129 */ 1129 */
1130int mga_driver_unload(struct drm_device *dev) 1130void mga_driver_unload(struct drm_device *dev)
1131{ 1131{
1132 kfree(dev->dev_private); 1132 kfree(dev->dev_private);
1133 dev->dev_private = NULL; 1133 dev->dev_private = NULL;
1134
1135 return 0;
1136} 1134}
1137 1135
1138/** 1136/**
diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
index bb312339e0b0..d5ce829b3199 100644
--- a/drivers/gpu/drm/mga/mga_drv.h
+++ b/drivers/gpu/drm/mga/mga_drv.h
@@ -166,7 +166,7 @@ extern int mga_dma_reset(struct drm_device *dev, void *data,
166extern int mga_dma_buffers(struct drm_device *dev, void *data, 166extern int mga_dma_buffers(struct drm_device *dev, void *data,
167 struct drm_file *file_priv); 167 struct drm_file *file_priv);
168extern int mga_driver_load(struct drm_device *dev, unsigned long flags); 168extern int mga_driver_load(struct drm_device *dev, unsigned long flags);
169extern int mga_driver_unload(struct drm_device *dev); 169extern void mga_driver_unload(struct drm_device *dev);
170extern void mga_driver_lastclose(struct drm_device *dev); 170extern void mga_driver_lastclose(struct drm_device *dev);
171extern int mga_driver_dma_quiescent(struct drm_device *dev); 171extern int mga_driver_dma_quiescent(struct drm_device *dev);
172 172
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 87e0934773de..0d6e998d63e6 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -258,7 +258,7 @@ int mgag200_framebuffer_init(struct drm_device *dev,
258 258
259 259
260int mgag200_driver_load(struct drm_device *dev, unsigned long flags); 260int mgag200_driver_load(struct drm_device *dev, unsigned long flags);
261int mgag200_driver_unload(struct drm_device *dev); 261void mgag200_driver_unload(struct drm_device *dev);
262int mgag200_gem_create(struct drm_device *dev, 262int mgag200_gem_create(struct drm_device *dev,
263 u32 size, bool iskernel, 263 u32 size, bool iskernel,
264 struct drm_gem_object **obj); 264 struct drm_gem_object **obj);
diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c
index da8ba6c154e3..dce8a3eb5a10 100644
--- a/drivers/gpu/drm/mgag200/mgag200_main.c
+++ b/drivers/gpu/drm/mgag200/mgag200_main.c
@@ -264,18 +264,17 @@ err_mm:
264 return r; 264 return r;
265} 265}
266 266
267int mgag200_driver_unload(struct drm_device *dev) 267void mgag200_driver_unload(struct drm_device *dev)
268{ 268{
269 struct mga_device *mdev = dev->dev_private; 269 struct mga_device *mdev = dev->dev_private;
270 270
271 if (mdev == NULL) 271 if (mdev == NULL)
272 return 0; 272 return;
273 mgag200_modeset_fini(mdev); 273 mgag200_modeset_fini(mdev);
274 mgag200_fbdev_fini(mdev); 274 mgag200_fbdev_fini(mdev);
275 drm_mode_config_cleanup(dev); 275 drm_mode_config_cleanup(dev);
276 mgag200_mm_fini(mdev); 276 mgag200_mm_fini(mdev);
277 dev->dev_private = NULL; 277 dev->dev_private = NULL;
278 return 0;
279} 278}
280 279
281int mgag200_gem_create(struct drm_device *dev, 280int mgag200_gem_create(struct drm_device *dev,
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 59348fc41c77..dd7b52ab505a 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -502,7 +502,7 @@ fail_device:
502 return ret; 502 return ret;
503} 503}
504 504
505static int 505static void
506nouveau_drm_unload(struct drm_device *dev) 506nouveau_drm_unload(struct drm_device *dev)
507{ 507{
508 struct nouveau_drm *drm = nouveau_drm(dev); 508 struct nouveau_drm *drm = nouveau_drm(dev);
@@ -531,7 +531,6 @@ nouveau_drm_unload(struct drm_device *dev)
531 if (drm->hdmi_device) 531 if (drm->hdmi_device)
532 pci_dev_put(drm->hdmi_device); 532 pci_dev_put(drm->hdmi_device);
533 nouveau_cli_destroy(&drm->client); 533 nouveau_cli_destroy(&drm->client);
534 return 0;
535} 534}
536 535
537void 536void
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index fdc83cbcde61..4fd2e1799a88 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -694,7 +694,7 @@ static int dev_load(struct drm_device *dev, unsigned long flags)
694 return 0; 694 return 0;
695} 695}
696 696
697static int dev_unload(struct drm_device *dev) 697static void dev_unload(struct drm_device *dev)
698{ 698{
699 struct omap_drm_private *priv = dev->dev_private; 699 struct omap_drm_private *priv = dev->dev_private;
700 700
@@ -717,8 +717,6 @@ static int dev_unload(struct drm_device *dev)
717 dev->dev_private = NULL; 717 dev->dev_private = NULL;
718 718
719 dev_set_drvdata(dev->dev, NULL); 719 dev_set_drvdata(dev->dev, NULL);
720
721 return 0;
722} 720}
723 721
724static int dev_open(struct drm_device *dev, struct drm_file *file) 722static int dev_open(struct drm_device *dev, struct drm_file *file)
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index f15ddd0eb85b..883d8639c04e 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -337,7 +337,7 @@ extern const struct drm_ioctl_desc qxl_ioctls[];
337extern int qxl_max_ioctl; 337extern int qxl_max_ioctl;
338 338
339int qxl_driver_load(struct drm_device *dev, unsigned long flags); 339int qxl_driver_load(struct drm_device *dev, unsigned long flags);
340int qxl_driver_unload(struct drm_device *dev); 340void qxl_driver_unload(struct drm_device *dev);
341 341
342int qxl_modeset_init(struct qxl_device *qdev); 342int qxl_modeset_init(struct qxl_device *qdev);
343void qxl_modeset_fini(struct qxl_device *qdev); 343void qxl_modeset_fini(struct qxl_device *qdev);
diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
index af685f1d91f8..b2491407b616 100644
--- a/drivers/gpu/drm/qxl/qxl_kms.c
+++ b/drivers/gpu/drm/qxl/qxl_kms.c
@@ -285,12 +285,12 @@ static void qxl_device_fini(struct qxl_device *qdev)
285 qxl_debugfs_remove_files(qdev); 285 qxl_debugfs_remove_files(qdev);
286} 286}
287 287
288int qxl_driver_unload(struct drm_device *dev) 288void qxl_driver_unload(struct drm_device *dev)
289{ 289{
290 struct qxl_device *qdev = dev->dev_private; 290 struct qxl_device *qdev = dev->dev_private;
291 291
292 if (qdev == NULL) 292 if (qdev == NULL)
293 return 0; 293 return;
294 294
295 drm_vblank_cleanup(dev); 295 drm_vblank_cleanup(dev);
296 296
@@ -299,7 +299,6 @@ int qxl_driver_unload(struct drm_device *dev)
299 299
300 kfree(qdev); 300 kfree(qdev);
301 dev->dev_private = NULL; 301 dev->dev_private = NULL;
302 return 0;
303} 302}
304 303
305int qxl_driver_load(struct drm_device *dev, unsigned long flags) 304int qxl_driver_load(struct drm_device *dev, unsigned long flags)
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 00ea0002b539..af3bbe82fd48 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -102,7 +102,7 @@
102#define KMS_DRIVER_MINOR 48 102#define KMS_DRIVER_MINOR 48
103#define KMS_DRIVER_PATCHLEVEL 0 103#define KMS_DRIVER_PATCHLEVEL 0
104int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); 104int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
105int radeon_driver_unload_kms(struct drm_device *dev); 105void radeon_driver_unload_kms(struct drm_device *dev);
106void radeon_driver_lastclose_kms(struct drm_device *dev); 106void radeon_driver_lastclose_kms(struct drm_device *dev);
107int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv); 107int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv);
108void radeon_driver_postclose_kms(struct drm_device *dev, 108void radeon_driver_postclose_kms(struct drm_device *dev,
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 4388ddeec8d2..116cf0d23595 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -53,12 +53,12 @@ static inline bool radeon_has_atpx(void) { return false; }
53 * the rest of the device (CP, writeback, etc.). 53 * the rest of the device (CP, writeback, etc.).
54 * Returns 0 on success. 54 * Returns 0 on success.
55 */ 55 */
56int radeon_driver_unload_kms(struct drm_device *dev) 56void radeon_driver_unload_kms(struct drm_device *dev)
57{ 57{
58 struct radeon_device *rdev = dev->dev_private; 58 struct radeon_device *rdev = dev->dev_private;
59 59
60 if (rdev == NULL) 60 if (rdev == NULL)
61 return 0; 61 return;
62 62
63 if (rdev->rmmio == NULL) 63 if (rdev->rmmio == NULL)
64 goto done_free; 64 goto done_free;
@@ -78,7 +78,6 @@ int radeon_driver_unload_kms(struct drm_device *dev)
78done_free: 78done_free:
79 kfree(rdev); 79 kfree(rdev);
80 dev->dev_private = NULL; 80 dev->dev_private = NULL;
81 return 0;
82} 81}
83 82
84/** 83/**
diff --git a/drivers/gpu/drm/savage/savage_bci.c b/drivers/gpu/drm/savage/savage_bci.c
index d47dff95fe52..2a5b8466d806 100644
--- a/drivers/gpu/drm/savage/savage_bci.c
+++ b/drivers/gpu/drm/savage/savage_bci.c
@@ -655,13 +655,11 @@ void savage_driver_lastclose(struct drm_device *dev)
655 } 655 }
656} 656}
657 657
658int savage_driver_unload(struct drm_device *dev) 658void savage_driver_unload(struct drm_device *dev)
659{ 659{
660 drm_savage_private_t *dev_priv = dev->dev_private; 660 drm_savage_private_t *dev_priv = dev->dev_private;
661 661
662 kfree(dev_priv); 662 kfree(dev_priv);
663
664 return 0;
665} 663}
666 664
667static int savage_do_init_bci(struct drm_device * dev, drm_savage_init_t * init) 665static int savage_do_init_bci(struct drm_device * dev, drm_savage_init_t * init)
diff --git a/drivers/gpu/drm/savage/savage_drv.h b/drivers/gpu/drm/savage/savage_drv.h
index 37b699571ad0..44a1009b6ecb 100644
--- a/drivers/gpu/drm/savage/savage_drv.h
+++ b/drivers/gpu/drm/savage/savage_drv.h
@@ -210,7 +210,7 @@ extern uint32_t *savage_dma_alloc(drm_savage_private_t * dev_priv,
210extern int savage_driver_load(struct drm_device *dev, unsigned long chipset); 210extern int savage_driver_load(struct drm_device *dev, unsigned long chipset);
211extern int savage_driver_firstopen(struct drm_device *dev); 211extern int savage_driver_firstopen(struct drm_device *dev);
212extern void savage_driver_lastclose(struct drm_device *dev); 212extern void savage_driver_lastclose(struct drm_device *dev);
213extern int savage_driver_unload(struct drm_device *dev); 213extern void savage_driver_unload(struct drm_device *dev);
214extern void savage_reclaim_buffers(struct drm_device *dev, 214extern void savage_reclaim_buffers(struct drm_device *dev,
215 struct drm_file *file_priv); 215 struct drm_file *file_priv);
216 216
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
index 38dd55f4af81..33cec3d42389 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
@@ -104,7 +104,7 @@ static int shmob_drm_setup_clocks(struct shmob_drm_device *sdev,
104 * DRM operations 104 * DRM operations
105 */ 105 */
106 106
107static int shmob_drm_unload(struct drm_device *dev) 107static void shmob_drm_unload(struct drm_device *dev)
108{ 108{
109 drm_kms_helper_poll_fini(dev); 109 drm_kms_helper_poll_fini(dev);
110 drm_mode_config_cleanup(dev); 110 drm_mode_config_cleanup(dev);
@@ -112,8 +112,6 @@ static int shmob_drm_unload(struct drm_device *dev)
112 drm_irq_uninstall(dev); 112 drm_irq_uninstall(dev);
113 113
114 dev->dev_private = NULL; 114 dev->dev_private = NULL;
115
116 return 0;
117} 115}
118 116
119static int shmob_drm_load(struct drm_device *dev, unsigned long flags) 117static int shmob_drm_load(struct drm_device *dev, unsigned long flags)
diff --git a/drivers/gpu/drm/sis/sis_drv.c b/drivers/gpu/drm/sis/sis_drv.c
index a836451920f0..7f05da13ea5e 100644
--- a/drivers/gpu/drm/sis/sis_drv.c
+++ b/drivers/gpu/drm/sis/sis_drv.c
@@ -54,15 +54,13 @@ static int sis_driver_load(struct drm_device *dev, unsigned long chipset)
54 return 0; 54 return 0;
55} 55}
56 56
57static int sis_driver_unload(struct drm_device *dev) 57static void sis_driver_unload(struct drm_device *dev)
58{ 58{
59 drm_sis_private_t *dev_priv = dev->dev_private; 59 drm_sis_private_t *dev_priv = dev->dev_private;
60 60
61 idr_destroy(&dev_priv->object_idr); 61 idr_destroy(&dev_priv->object_idr);
62 62
63 kfree(dev_priv); 63 kfree(dev_priv);
64
65 return 0;
66} 64}
67 65
68static const struct file_operations sis_driver_fops = { 66static const struct file_operations sis_driver_fops = {
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 2817f43f3344..0f4eacb0af4f 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -214,7 +214,7 @@ free:
214 return err; 214 return err;
215} 215}
216 216
217static int tegra_drm_unload(struct drm_device *drm) 217static void tegra_drm_unload(struct drm_device *drm)
218{ 218{
219 struct host1x_device *device = to_host1x_device(drm->dev); 219 struct host1x_device *device = to_host1x_device(drm->dev);
220 struct tegra_drm *tegra = drm->dev_private; 220 struct tegra_drm *tegra = drm->dev_private;
@@ -227,7 +227,7 @@ static int tegra_drm_unload(struct drm_device *drm)
227 227
228 err = host1x_device_exit(device); 228 err = host1x_device_exit(device);
229 if (err < 0) 229 if (err < 0)
230 return err; 230 return;
231 231
232 if (tegra->domain) { 232 if (tegra->domain) {
233 iommu_domain_free(tegra->domain); 233 iommu_domain_free(tegra->domain);
@@ -235,8 +235,6 @@ static int tegra_drm_unload(struct drm_device *drm)
235 } 235 }
236 236
237 kfree(tegra); 237 kfree(tegra);
238
239 return 0;
240} 238}
241 239
242static int tegra_drm_open(struct drm_device *drm, struct drm_file *filp) 240static int tegra_drm_open(struct drm_device *drm, struct drm_file *filp)
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index f338a576efc8..6c4286e57362 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -100,7 +100,7 @@ int udl_submit_urb(struct drm_device *dev, struct urb *urb, size_t len);
100void udl_urb_completion(struct urb *urb); 100void udl_urb_completion(struct urb *urb);
101 101
102int udl_driver_load(struct drm_device *dev, unsigned long flags); 102int udl_driver_load(struct drm_device *dev, unsigned long flags);
103int udl_driver_unload(struct drm_device *dev); 103void udl_driver_unload(struct drm_device *dev);
104 104
105int udl_fbdev_init(struct drm_device *dev); 105int udl_fbdev_init(struct drm_device *dev);
106void udl_fbdev_cleanup(struct drm_device *dev); 106void udl_fbdev_cleanup(struct drm_device *dev);
diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index 873f010d9616..a9d93b871a15 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -367,7 +367,7 @@ int udl_drop_usb(struct drm_device *dev)
367 return 0; 367 return 0;
368} 368}
369 369
370int udl_driver_unload(struct drm_device *dev) 370void udl_driver_unload(struct drm_device *dev)
371{ 371{
372 struct udl_device *udl = dev->dev_private; 372 struct udl_device *udl = dev->dev_private;
373 373
@@ -379,5 +379,4 @@ int udl_driver_unload(struct drm_device *dev)
379 udl_fbdev_cleanup(dev); 379 udl_fbdev_cleanup(dev);
380 udl_modeset_cleanup(dev); 380 udl_modeset_cleanup(dev);
381 kfree(udl); 381 kfree(udl);
382 return 0;
383} 382}
diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h
index 286a785fab4f..9873942ca8f4 100644
--- a/drivers/gpu/drm/via/via_drv.h
+++ b/drivers/gpu/drm/via/via_drv.h
@@ -134,7 +134,7 @@ extern int via_dma_blit_sync(struct drm_device *dev, void *data, struct drm_file
134extern int via_dma_blit(struct drm_device *dev, void *data, struct drm_file *file_priv); 134extern int via_dma_blit(struct drm_device *dev, void *data, struct drm_file *file_priv);
135 135
136extern int via_driver_load(struct drm_device *dev, unsigned long chipset); 136extern int via_driver_load(struct drm_device *dev, unsigned long chipset);
137extern int via_driver_unload(struct drm_device *dev); 137extern void via_driver_unload(struct drm_device *dev);
138 138
139extern int via_init_context(struct drm_device *dev, int context); 139extern int via_init_context(struct drm_device *dev, int context);
140extern int via_final_context(struct drm_device *dev, int context); 140extern int via_final_context(struct drm_device *dev, int context);
diff --git a/drivers/gpu/drm/via/via_map.c b/drivers/gpu/drm/via/via_map.c
index 0b3522dba6e8..2ad865870372 100644
--- a/drivers/gpu/drm/via/via_map.c
+++ b/drivers/gpu/drm/via/via_map.c
@@ -116,13 +116,11 @@ int via_driver_load(struct drm_device *dev, unsigned long chipset)
116 return 0; 116 return 0;
117} 117}
118 118
119int via_driver_unload(struct drm_device *dev) 119void via_driver_unload(struct drm_device *dev)
120{ 120{
121 drm_via_private_t *dev_priv = dev->dev_private; 121 drm_via_private_t *dev_priv = dev->dev_private;
122 122
123 idr_destroy(&dev_priv->object_idr); 123 idr_destroy(&dev_priv->object_idr);
124 124
125 kfree(dev_priv); 125 kfree(dev_priv);
126
127 return 0;
128} 126}
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index 025f2e3d483f..2f766735c16d 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -215,7 +215,7 @@ extern struct drm_ioctl_desc virtio_gpu_ioctls[DRM_VIRTIO_NUM_IOCTLS];
215 215
216/* virtio_kms.c */ 216/* virtio_kms.c */
217int virtio_gpu_driver_load(struct drm_device *dev, unsigned long flags); 217int virtio_gpu_driver_load(struct drm_device *dev, unsigned long flags);
218int virtio_gpu_driver_unload(struct drm_device *dev); 218void virtio_gpu_driver_unload(struct drm_device *dev);
219int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file); 219int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file);
220void virtio_gpu_driver_postclose(struct drm_device *dev, struct drm_file *file); 220void virtio_gpu_driver_postclose(struct drm_device *dev, struct drm_file *file);
221 221
diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
index 1235519853f4..fae75394b5d0 100644
--- a/drivers/gpu/drm/virtio/virtgpu_kms.c
+++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
@@ -246,7 +246,7 @@ static void virtio_gpu_cleanup_cap_cache(struct virtio_gpu_device *vgdev)
246 } 246 }
247} 247}
248 248
249int virtio_gpu_driver_unload(struct drm_device *dev) 249void virtio_gpu_driver_unload(struct drm_device *dev)
250{ 250{
251 struct virtio_gpu_device *vgdev = dev->dev_private; 251 struct virtio_gpu_device *vgdev = dev->dev_private;
252 252
@@ -262,7 +262,6 @@ int virtio_gpu_driver_unload(struct drm_device *dev)
262 virtio_gpu_cleanup_cap_cache(vgdev); 262 virtio_gpu_cleanup_cap_cache(vgdev);
263 kfree(vgdev->capsets); 263 kfree(vgdev->capsets);
264 kfree(vgdev); 264 kfree(vgdev);
265 return 0;
266} 265}
267 266
268int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file) 267int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 18061a4bc2f2..be35385bb26c 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -951,7 +951,7 @@ out_err0:
951 return ret; 951 return ret;
952} 952}
953 953
954static int vmw_driver_unload(struct drm_device *dev) 954static void vmw_driver_unload(struct drm_device *dev)
955{ 955{
956 struct vmw_private *dev_priv = vmw_priv(dev); 956 struct vmw_private *dev_priv = vmw_priv(dev);
957 enum vmw_res_type i; 957 enum vmw_res_type i;
@@ -998,8 +998,6 @@ static int vmw_driver_unload(struct drm_device *dev)
998 idr_destroy(&dev_priv->res_idr[i]); 998 idr_destroy(&dev_priv->res_idr[i]);
999 999
1000 kfree(dev_priv); 1000 kfree(dev_priv);
1001
1002 return 0;
1003} 1001}
1004 1002
1005static void vmw_postclose(struct drm_device *dev, 1003static void vmw_postclose(struct drm_device *dev,
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 9c2d9f0bb043..34ece393c639 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -101,11 +101,8 @@ struct drm_driver {
101 * The unload() hook is called right after unregistering 101 * The unload() hook is called right after unregistering
102 * the device. 102 * the device.
103 * 103 *
104 * Returns:
105 *
106 * The return value is ignored.
107 */ 104 */
108 int (*unload) (struct drm_device *); 105 void (*unload) (struct drm_device *);
109 int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file *file_priv); 106 int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file *file_priv);
110 int (*dma_quiescent) (struct drm_device *); 107 int (*dma_quiescent) (struct drm_device *);
111 int (*context_dtor) (struct drm_device *dev, int context); 108 int (*context_dtor) (struct drm_device *dev, int context);