Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/pci: Deprecate drm_pci_init/exit completely

The magic switching between proper pci driver and shadow-attach isn't
useful anymore since there's no ums+kms drivers left. Let's split this
up properly, calling pci_register_driver for kms drivers and renaming
the shadow-attach init to drm_legacy_pci_init/exit.

Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170524145212.27837-6-daniel.vetter@ffwll.ch

+56 -64
+2 -2
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
··· 816 816 driver->num_ioctls = amdgpu_max_kms_ioctl; 817 817 amdgpu_register_atpx_handler(); 818 818 /* let modprobe override vga console setting */ 819 - return drm_pci_init(driver, pdriver); 819 + return pci_register_driver(pdriver); 820 820 821 821 error_sched: 822 822 amdgpu_fence_slab_fini(); ··· 831 831 static void __exit amdgpu_exit(void) 832 832 { 833 833 amdgpu_amdkfd_fini(); 834 - drm_pci_exit(driver, pdriver); 834 + pci_unregister_driver(pdriver); 835 835 amdgpu_unregister_atpx_handler(); 836 836 amdgpu_sync_fini(); 837 837 amd_sched_fence_slab_fini();
+2 -2
drivers/gpu/drm/ast/ast_drv.c
··· 220 220 221 221 if (ast_modeset == 0) 222 222 return -EINVAL; 223 - return drm_pci_init(&driver, &ast_pci_driver); 223 + return pci_register_driver(&ast_pci_driver); 224 224 } 225 225 static void __exit ast_exit(void) 226 226 { 227 - drm_pci_exit(&driver, &ast_pci_driver); 227 + pci_unregister_driver(&ast_pci_driver); 228 228 } 229 229 230 230 module_init(ast_init);
+2 -2
drivers/gpu/drm/bochs/bochs_drv.c
··· 223 223 if (bochs_modeset == 0) 224 224 return -EINVAL; 225 225 226 - return drm_pci_init(&bochs_driver, &bochs_pci_driver); 226 + return pci_register_driver(&bochs_pci_driver); 227 227 } 228 228 229 229 static void __exit bochs_exit(void) 230 230 { 231 - drm_pci_exit(&bochs_driver, &bochs_pci_driver); 231 + pci_unregister_driver(&bochs_pci_driver); 232 232 } 233 233 234 234 module_init(bochs_init);
+2 -2
drivers/gpu/drm/cirrus/cirrus_drv.c
··· 165 165 166 166 if (cirrus_modeset == 0) 167 167 return -EINVAL; 168 - return drm_pci_init(&driver, &cirrus_pci_driver); 168 + return pci_register_driver(&cirrus_pci_driver); 169 169 } 170 170 171 171 static void __exit cirrus_exit(void) 172 172 { 173 - drm_pci_exit(&driver, &cirrus_pci_driver); 173 + pci_unregister_driver(&cirrus_pci_driver); 174 174 } 175 175 176 176 module_init(cirrus_init);
+12 -27
drivers/gpu/drm/drm_pci.c
··· 280 280 EXPORT_SYMBOL(drm_get_pci_dev); 281 281 282 282 /** 283 - * drm_pci_init - Register matching PCI devices with the DRM subsystem 283 + * drm_legacy_pci_init - shadow-attach a legacy DRM PCI driver 284 284 * @driver: DRM device driver 285 285 * @pdriver: PCI device driver 286 286 * 287 - * Initializes a drm_device structures, registering the stubs and initializing 288 - * the AGP device. 289 - * 290 - * NOTE: This function is deprecated. Modern modesetting drm drivers should use 291 - * pci_register_driver() directly, this function only provides shadow-binding 292 - * support for old legacy drivers on top of that core pci function. 287 + * This is only used by legacy dri1 drivers and deprecated. 293 288 * 294 289 * Return: 0 on success or a negative error code on failure. 295 290 */ 296 - int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) 291 + int drm_legacy_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) 297 292 { 298 293 struct pci_dev *pdev = NULL; 299 294 const struct pci_device_id *pid; ··· 296 301 297 302 DRM_DEBUG("\n"); 298 303 299 - if (!(driver->driver_features & DRIVER_LEGACY)) 300 - return pci_register_driver(pdriver); 304 + if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY))) 305 + return -EINVAL; 301 306 302 307 /* If not using KMS, fall back to stealth mode manual scanning. */ 303 308 INIT_LIST_HEAD(&driver->legacy_dev_list); ··· 324 329 } 325 330 return 0; 326 331 } 332 + EXPORT_SYMBOL(drm_legacy_pci_init); 327 333 328 334 int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask) 329 335 { ··· 386 390 387 391 #else 388 392 389 - int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) 390 - { 391 - return -1; 392 - } 393 - 394 393 void drm_pci_agp_destroy(struct drm_device *dev) {} 395 394 396 395 int drm_irq_by_busid(struct drm_device *dev, void *data, ··· 395 404 } 396 405 #endif 397 406 398 - EXPORT_SYMBOL(drm_pci_init); 399 - 400 407 /** 401 - * drm_pci_exit - Unregister matching PCI devices from the DRM subsystem 408 + * drm_legacy_pci_exit - unregister shadow-attach legacy DRM driver 402 409 * @driver: DRM device driver 403 410 * @pdriver: PCI device driver 404 411 * 405 - * Unregisters one or more devices matched by a PCI driver from the DRM 406 - * subsystem. 407 - * 408 - * NOTE: This function is deprecated. Modern modesetting drm drivers should use 409 - * pci_unregister_driver() directly, this function only provides shadow-binding 410 - * support for old legacy drivers on top of that core pci function. 412 + * Unregister a DRM driver shadow-attached through drm_legacy_pci_init(). This 413 + * is deprecated and only used by dri1 drivers. 411 414 */ 412 - void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) 415 + void drm_legacy_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) 413 416 { 414 417 struct drm_device *dev, *tmp; 415 418 DRM_DEBUG("\n"); 416 419 417 420 if (!(driver->driver_features & DRIVER_LEGACY)) { 418 - pci_unregister_driver(pdriver); 421 + WARN_ON(1); 419 422 } else { 420 423 list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list, 421 424 legacy_dev_list) { ··· 419 434 } 420 435 DRM_INFO("Module unloaded\n"); 421 436 } 422 - EXPORT_SYMBOL(drm_pci_exit); 437 + EXPORT_SYMBOL(drm_legacy_pci_exit);
+2 -2
drivers/gpu/drm/gma500/psb_drv.c
··· 516 516 517 517 static int __init psb_init(void) 518 518 { 519 - return drm_pci_init(&driver, &psb_pci_driver); 519 + return pci_register_driver(&psb_pci_driver); 520 520 } 521 521 522 522 static void __exit psb_exit(void) 523 523 { 524 - drm_pci_exit(&driver, &psb_pci_driver); 524 + pci_unregister_driver(&psb_pci_driver); 525 525 } 526 526 527 527 late_initcall(psb_init);
+2 -2
drivers/gpu/drm/i810/i810_drv.c
··· 82 82 return -EINVAL; 83 83 } 84 84 driver.num_ioctls = i810_max_ioctl; 85 - return drm_pci_init(&driver, &i810_pci_driver); 85 + return drm_legacy_pci_init(&driver, &i810_pci_driver); 86 86 } 87 87 88 88 static void __exit i810_exit(void) 89 89 { 90 - drm_pci_exit(&driver, &i810_pci_driver); 90 + drm_legacy_pci_exit(&driver, &i810_pci_driver); 91 91 } 92 92 93 93 module_init(i810_init);
+2 -2
drivers/gpu/drm/mga/mga_drv.c
··· 89 89 static int __init mga_init(void) 90 90 { 91 91 driver.num_ioctls = mga_max_ioctl; 92 - return drm_pci_init(&driver, &mga_pci_driver); 92 + return drm_legacy_pci_init(&driver, &mga_pci_driver); 93 93 } 94 94 95 95 static void __exit mga_exit(void) 96 96 { 97 - drm_pci_exit(&driver, &mga_pci_driver); 97 + drm_legacy_pci_exit(&driver, &mga_pci_driver); 98 98 } 99 99 100 100 module_init(mga_init);
+3 -2
drivers/gpu/drm/mgag200/mgag200_drv.c
··· 119 119 120 120 if (mgag200_modeset == 0) 121 121 return -EINVAL; 122 - return drm_pci_init(&driver, &mgag200_pci_driver); 122 + 123 + return pci_register_driver(&mgag200_pci_driver); 123 124 } 124 125 125 126 static void __exit mgag200_exit(void) 126 127 { 127 - drm_pci_exit(&driver, &mgag200_pci_driver); 128 + pci_unregister_driver(&mgag200_pci_driver); 128 129 } 129 130 130 131 module_init(mgag200_init);
+9 -2
drivers/gpu/drm/nouveau/nouveau_drm.c
··· 1120 1120 1121 1121 nouveau_register_dsm_handler(); 1122 1122 nouveau_backlight_ctor(); 1123 - return drm_pci_init(&driver_pci, &nouveau_drm_pci_driver); 1123 + 1124 + #ifdef CONFIG_PCI 1125 + return pci_register_driver(&nouveau_drm_pci_driver); 1126 + #else 1127 + return 0; 1128 + #endif 1124 1129 } 1125 1130 1126 1131 static void __exit ··· 1134 1129 if (!nouveau_modeset) 1135 1130 return; 1136 1131 1137 - drm_pci_exit(&driver_pci, &nouveau_drm_pci_driver); 1132 + #ifdef CONFIG_PCI 1133 + pci_unregister_driver(&nouveau_drm_pci_driver); 1134 + #endif 1138 1135 nouveau_backlight_dtor(); 1139 1136 nouveau_unregister_dsm_handler(); 1140 1137
+2 -2
drivers/gpu/drm/qxl/qxl_drv.c
··· 301 301 if (qxl_modeset == 0) 302 302 return -EINVAL; 303 303 qxl_driver.num_ioctls = qxl_max_ioctls; 304 - return drm_pci_init(&qxl_driver, &qxl_pci_driver); 304 + return pci_register_driver(&qxl_pci_driver); 305 305 } 306 306 307 307 static void __exit qxl_exit(void) 308 308 { 309 - drm_pci_exit(&qxl_driver, &qxl_pci_driver); 309 + pci_unregister_driver(&qxl_pci_driver); 310 310 } 311 311 312 312 module_init(qxl_init);
+2 -2
drivers/gpu/drm/r128/r128_drv.c
··· 95 95 { 96 96 driver.num_ioctls = r128_max_ioctl; 97 97 98 - return drm_pci_init(&driver, &r128_pci_driver); 98 + return drm_legacy_pci_init(&driver, &r128_pci_driver); 99 99 } 100 100 101 101 static void __exit r128_exit(void) 102 102 { 103 - drm_pci_exit(&driver, &r128_pci_driver); 103 + drm_legacy_pci_exit(&driver, &r128_pci_driver); 104 104 } 105 105 106 106 module_init(r128_init);
+2 -3
drivers/gpu/drm/radeon/radeon_drv.c
··· 619 619 return -EINVAL; 620 620 } 621 621 622 - /* let modprobe override vga console setting */ 623 - return drm_pci_init(driver, pdriver); 622 + return pci_register_driver(pdriver); 624 623 } 625 624 626 625 static void __exit radeon_exit(void) 627 626 { 628 627 radeon_kfd_fini(); 629 - drm_pci_exit(driver, pdriver); 628 + pci_unregister_driver(pdriver); 630 629 radeon_unregister_atpx_handler(); 631 630 } 632 631
+2 -2
drivers/gpu/drm/savage/savage_drv.c
··· 74 74 static int __init savage_init(void) 75 75 { 76 76 driver.num_ioctls = savage_max_ioctl; 77 - return drm_pci_init(&driver, &savage_pci_driver); 77 + return drm_legacy_pci_init(&driver, &savage_pci_driver); 78 78 } 79 79 80 80 static void __exit savage_exit(void) 81 81 { 82 - drm_pci_exit(&driver, &savage_pci_driver); 82 + drm_legacy_pci_exit(&driver, &savage_pci_driver); 83 83 } 84 84 85 85 module_init(savage_init);
+2 -2
drivers/gpu/drm/sis/sis_drv.c
··· 124 124 static int __init sis_init(void) 125 125 { 126 126 driver.num_ioctls = sis_max_ioctl; 127 - return drm_pci_init(&driver, &sis_pci_driver); 127 + return drm_legacy_pci_init(&driver, &sis_pci_driver); 128 128 } 129 129 130 130 static void __exit sis_exit(void) 131 131 { 132 - drm_pci_exit(&driver, &sis_pci_driver); 132 + drm_legacy_pci_exit(&driver, &sis_pci_driver); 133 133 } 134 134 135 135 module_init(sis_init);
+2 -2
drivers/gpu/drm/tdfx/tdfx_drv.c
··· 71 71 72 72 static int __init tdfx_init(void) 73 73 { 74 - return drm_pci_init(&driver, &tdfx_pci_driver); 74 + return drm_legacy_pci_init(&driver, &tdfx_pci_driver); 75 75 } 76 76 77 77 static void __exit tdfx_exit(void) 78 78 { 79 - drm_pci_exit(&driver, &tdfx_pci_driver); 79 + drm_legacy_pci_exit(&driver, &tdfx_pci_driver); 80 80 } 81 81 82 82 module_init(tdfx_init);
+2 -2
drivers/gpu/drm/via/via_drv.c
··· 106 106 { 107 107 driver.num_ioctls = via_max_ioctl; 108 108 via_init_command_verifier(); 109 - return drm_pci_init(&driver, &via_pci_driver); 109 + return drm_legacy_pci_init(&driver, &via_pci_driver); 110 110 } 111 111 112 112 static void __exit via_exit(void) 113 113 { 114 - drm_pci_exit(&driver, &via_pci_driver); 114 + drm_legacy_pci_exit(&driver, &via_pci_driver); 115 115 } 116 116 117 117 module_init(via_init);
+2 -2
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
··· 1570 1570 if (vgacon_text_force()) 1571 1571 return -EINVAL; 1572 1572 1573 - ret = drm_pci_init(&driver, &vmw_pci_driver); 1573 + ret = pci_register_driver(&vmw_pci_driver); 1574 1574 if (ret) 1575 1575 DRM_ERROR("Failed initializing DRM.\n"); 1576 1576 return ret; ··· 1578 1578 1579 1579 static void __exit vmwgfx_exit(void) 1580 1580 { 1581 - drm_pci_exit(&driver, &vmw_pci_driver); 1581 + pci_unregister_driver(&vmw_pci_driver); 1582 1582 } 1583 1583 1584 1584 module_init(vmwgfx_init);
+2 -2
include/drm/drm_pci.h
··· 43 43 size_t align); 44 44 void drm_pci_free(struct drm_device *dev, struct drm_dma_handle * dmah); 45 45 46 - int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver); 47 - void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver); 46 + int drm_legacy_pci_init(struct drm_driver *driver, struct pci_driver *pdriver); 47 + void drm_legacy_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver); 48 48 #ifdef CONFIG_PCI 49 49 int drm_get_pci_dev(struct pci_dev *pdev, 50 50 const struct pci_device_id *ent,