diff options
Diffstat (limited to 'drivers/gpu/drm/drm_drv.c')
| -rw-r--r-- | drivers/gpu/drm/drm_drv.c | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 7af748ed1c58..ea4941da9b27 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -34,6 +34,7 @@  #include <linux/slab.h>  #include <linux/srcu.h> +#include <drm/drm_client.h>  #include <drm/drm_drv.h>  #include <drm/drmP.h> @@ -53,13 +54,14 @@ MODULE_AUTHOR("Gareth Hughes, Leif Delgass, José Fonseca, Jon Smirl");  MODULE_DESCRIPTION("DRM shared core routines");  MODULE_LICENSE("GPL and additional rights");  MODULE_PARM_DESC(debug, "Enable debug output, where each bit enables a debug category.\n" -"\t\tBit 0 (0x01) will enable CORE messages (drm core code)\n" -"\t\tBit 1 (0x02) will enable DRIVER messages (drm controller code)\n" -"\t\tBit 2 (0x04) will enable KMS messages (modesetting code)\n" -"\t\tBit 3 (0x08) will enable PRIME messages (prime code)\n" -"\t\tBit 4 (0x10) will enable ATOMIC messages (atomic code)\n" -"\t\tBit 5 (0x20) will enable VBL messages (vblank code)\n" -"\t\tBit 7 (0x80) will enable LEASE messages (leasing code)"); +"\t\tBit 0 (0x01)  will enable CORE messages (drm core code)\n" +"\t\tBit 1 (0x02)  will enable DRIVER messages (drm controller code)\n" +"\t\tBit 2 (0x04)  will enable KMS messages (modesetting code)\n" +"\t\tBit 3 (0x08)  will enable PRIME messages (prime code)\n" +"\t\tBit 4 (0x10)  will enable ATOMIC messages (atomic code)\n" +"\t\tBit 5 (0x20)  will enable VBL messages (vblank code)\n" +"\t\tBit 7 (0x80)  will enable LEASE messages (leasing code)\n" +"\t\tBit 8 (0x100) will enable DP messages (displayport code)");  module_param_named(debug, drm_debug, int, 0600);  static DEFINE_SPINLOCK(drm_minor_lock); @@ -505,6 +507,8 @@ int drm_dev_init(struct drm_device *dev,  	dev->driver = driver;  	INIT_LIST_HEAD(&dev->filelist); +	INIT_LIST_HEAD(&dev->filelist_internal); +	INIT_LIST_HEAD(&dev->clientlist);  	INIT_LIST_HEAD(&dev->ctxlist);  	INIT_LIST_HEAD(&dev->vmalist);  	INIT_LIST_HEAD(&dev->maplist); @@ -514,6 +518,7 @@ int drm_dev_init(struct drm_device *dev,  	spin_lock_init(&dev->event_lock);  	mutex_init(&dev->struct_mutex);  	mutex_init(&dev->filelist_mutex); +	mutex_init(&dev->clientlist_mutex);  	mutex_init(&dev->ctxlist_mutex);  	mutex_init(&dev->master_mutex); @@ -569,6 +574,7 @@ err_minors:  err_free:  	mutex_destroy(&dev->master_mutex);  	mutex_destroy(&dev->ctxlist_mutex); +	mutex_destroy(&dev->clientlist_mutex);  	mutex_destroy(&dev->filelist_mutex);  	mutex_destroy(&dev->struct_mutex);  	return ret; @@ -603,6 +609,7 @@ void drm_dev_fini(struct drm_device *dev)  	mutex_destroy(&dev->master_mutex);  	mutex_destroy(&dev->ctxlist_mutex); +	mutex_destroy(&dev->clientlist_mutex);  	mutex_destroy(&dev->filelist_mutex);  	mutex_destroy(&dev->struct_mutex);  	kfree(dev->unique); @@ -858,6 +865,8 @@ void drm_dev_unregister(struct drm_device *dev)  	dev->registered = false; +	drm_client_dev_unregister(dev); +  	if (drm_core_check_feature(dev, DRIVER_MODESET))  		drm_modeset_unregister_all(dev);  |