]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/qxl: add drm_driver.release callback.
authorGerd Hoffmann <kraxel@redhat.com>
Mon, 10 Feb 2020 11:37:52 +0000 (12:37 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 11 Feb 2020 10:45:51 +0000 (11:45 +0100)
Move final cleanups to qxl_drm_release() callback.
Add drm_atomic_helper_shutdown() call to qxl_pci_remove().

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20200210113753.5614-3-kraxel@redhat.com
drivers/gpu/drm/qxl/qxl_drv.c

index 1d601f57a6ba79654242401c4d8cd20117f2e084..4fda3f9b29f464eb926ee97e2865df12e7affa19 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/pci.h>
 
 #include <drm/drm.h>
+#include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
 #include <drm/drm_modeset_helper.h>
@@ -132,21 +133,30 @@ free_dev:
        return ret;
 }
 
+static void qxl_drm_release(struct drm_device *dev)
+{
+       struct qxl_device *qdev = dev->dev_private;
+
+       /*
+        * TODO: qxl_device_fini() call should be in qxl_pci_remove(),
+        * reodering qxl_modeset_fini() + qxl_device_fini() calls is
+        * non-trivial though.
+        */
+       qxl_modeset_fini(qdev);
+       qxl_device_fini(qdev);
+       dev->dev_private = NULL;
+       kfree(qdev);
+}
+
 static void
 qxl_pci_remove(struct pci_dev *pdev)
 {
        struct drm_device *dev = pci_get_drvdata(pdev);
-       struct qxl_device *qdev = dev->dev_private;
 
        drm_dev_unregister(dev);
-
-       qxl_modeset_fini(qdev);
-       qxl_device_fini(qdev);
+       drm_atomic_helper_shutdown(dev);
        if (is_vga(pdev))
                vga_put(pdev, VGA_RSRC_LEGACY_IO);
-
-       dev->dev_private = NULL;
-       kfree(qdev);
        drm_dev_put(dev);
 }
 
@@ -279,6 +289,8 @@ static struct drm_driver qxl_driver = {
        .major = 0,
        .minor = 1,
        .patchlevel = 0,
+
+       .release = qxl_drm_release,
 };
 
 static int __init qxl_init(void)