drm/ttm: Don't override vm_ops callbacks, if set
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 25 May 2021 15:10:49 +0000 (17:10 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 26 May 2021 18:56:05 +0000 (20:56 +0200)
Drivers may want to set their own callbacks for a VM area. Only set
TTM's callbacks if the vm_ops field is clear.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210525151055.8174-2-tzimmermann@suse.de
drivers/gpu/drm/ttm/ttm_bo_vm.c

index 7ff9fd5..ff07dbc 100644 (file)
@@ -586,7 +586,12 @@ static struct ttm_buffer_object *ttm_bo_vm_lookup(struct ttm_device *bdev,
 
 static void ttm_bo_mmap_vma_setup(struct ttm_buffer_object *bo, struct vm_area_struct *vma)
 {
-       vma->vm_ops = &ttm_bo_vm_ops;
+       /*
+        * Drivers may want to override the vm_ops field. Otherwise we
+        * use TTM's default callbacks.
+        */
+       if (!vma->vm_ops)
+               vma->vm_ops = &ttm_bo_vm_ops;
 
        /*
         * Note: We're transferring the bo reference to