Merge tag 'amd-drm-next-5.13-2021-03-23' of https://gitlab.freedesktop.org/agd5f...
[linux-2.6-microblaze.git] / drivers / gpu / drm / drm_drv.c
index 7343038..c2f78de 100644 (file)
@@ -61,7 +61,7 @@ static struct idr drm_minors_idr;
  * prefer to embed struct drm_device into their own device
  * structure and call drm_dev_init() themselves.
  */
-static bool drm_core_init_complete = false;
+static bool drm_core_init_complete;
 
 static struct dentry *drm_debugfs_root;
 
@@ -469,6 +469,9 @@ void drm_dev_unplug(struct drm_device *dev)
        synchronize_srcu(&drm_unplug_srcu);
 
        drm_dev_unregister(dev);
+
+       /* Clear all CPU mappings pointing to this device */
+       unmap_mapping_range(dev->anon_inode->i_mapping, 0, 0, 1);
 }
 EXPORT_SYMBOL(drm_dev_unplug);
 
@@ -589,11 +592,7 @@ 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);
@@ -675,11 +674,8 @@ static int devm_drm_dev_init(struct device *parent,
        if (ret)
                return ret;
 
-       ret = devm_add_action(parent, devm_drm_dev_init_release, dev);
-       if (ret)
-               devm_drm_dev_init_release(dev);
-
-       return ret;
+       return devm_add_action_or_reset(parent,
+                                       devm_drm_dev_init_release, dev);
 }
 
 void *__devm_drm_dev_alloc(struct device *parent,
@@ -897,8 +893,6 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
        if (drm_core_check_feature(dev, DRIVER_MODESET))
                drm_modeset_register_all(dev);
 
-       ret = 0;
-
        DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n",
                 driver->name, driver->major, driver->minor,
                 driver->patchlevel, driver->date,