drm/virtio: use drmm_mode_config_init
authorGerd Hoffmann <kraxel@redhat.com>
Tue, 8 Sep 2020 07:07:21 +0000 (09:07 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 15 Sep 2020 07:42:28 +0000 (09:42 +0200)
Use managed init call to simplify cleanup.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20200908070723.6394-2-kraxel@redhat.com
drivers/gpu/drm/virtio/virtgpu_display.c
drivers/gpu/drm/virtio/virtgpu_drv.h
drivers/gpu/drm/virtio/virtgpu_kms.c

index effea07..f84b7e6 100644 (file)
@@ -325,11 +325,14 @@ static const struct drm_mode_config_funcs virtio_gpu_mode_funcs = {
        .atomic_commit = drm_atomic_helper_commit,
 };
 
-void virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev)
+int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev)
 {
-       int i;
+       int i, ret;
+
+       ret = drmm_mode_config_init(vgdev->ddev);
+       if (ret)
+               return ret;
 
-       drm_mode_config_init(vgdev->ddev);
        vgdev->ddev->mode_config.quirk_addfb_prefer_host_byte_order = true;
        vgdev->ddev->mode_config.funcs = &virtio_gpu_mode_funcs;
 
@@ -343,6 +346,7 @@ void virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev)
                vgdev_output_init(vgdev, i);
 
        drm_mode_config_reset(vgdev->ddev);
+       return 0;
 }
 
 void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev)
@@ -351,5 +355,4 @@ void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev)
 
        for (i = 0 ; i < vgdev->num_scanouts; ++i)
                kfree(vgdev->outputs[i].edid);
-       drm_mode_config_cleanup(vgdev->ddev);
 }
index a52b7a3..55c34b4 100644 (file)
@@ -352,7 +352,7 @@ virtio_gpu_cmd_resource_assign_uuid(struct virtio_gpu_device *vgdev,
                                    struct virtio_gpu_object_array *objs);
 
 /* virtgpu_display.c */
-void virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev);
+int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev);
 void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev);
 
 /* virtgpu_plane.c */
index 06af537..eed57a9 100644 (file)
@@ -186,7 +186,11 @@ int virtio_gpu_init(struct drm_device *dev)
                        num_capsets, &num_capsets);
        DRM_INFO("number of cap sets: %d\n", num_capsets);
 
-       virtio_gpu_modeset_init(vgdev);
+       ret = virtio_gpu_modeset_init(vgdev);
+       if (ret) {
+               DRM_ERROR("modeset init failed\n");
+               goto err_scanouts;
+       }
 
        virtio_device_ready(vgdev->vdev);