drm/i915: Ensure i915_vma tests do not get -ENOSPC with the locking changes.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Thu, 16 Dec 2021 14:27:39 +0000 (15:27 +0100)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 20 Dec 2021 15:34:20 +0000 (16:34 +0100)
Now that we require locking to evict, multiple vmas from the same object
might not be evicted. This is expected and required, because execbuf will
move to short-term pinning by using the lock only. This will cause these
tests to fail, because they create a ton of vma's for the same object.

Unbind manually to prevent spurious -ENOSPC in those mock tests.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211216142749.1966107-8-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/i915/selftests/i915_vma.c

index 1f10fe3..5c5809d 100644 (file)
@@ -691,7 +691,11 @@ static int igt_vma_rotate_remap(void *arg)
                                        }
 
                                        i915_vma_unpin(vma);
-
+                                       err = i915_vma_unbind(vma);
+                                       if (err) {
+                                               pr_err("Unbinding returned %i\n", err);
+                                               goto out_object;
+                                       }
                                        cond_resched();
                                }
                        }
@@ -848,6 +852,11 @@ static int igt_vma_partial(void *arg)
 
                                i915_vma_unpin(vma);
                                nvma++;
+                               err = i915_vma_unbind(vma);
+                               if (err) {
+                                       pr_err("Unbinding returned %i\n", err);
+                                       goto out_object;
+                               }
 
                                cond_resched();
                        }
@@ -882,6 +891,12 @@ static int igt_vma_partial(void *arg)
 
                i915_vma_unpin(vma);
 
+               err = i915_vma_unbind(vma);
+               if (err) {
+                       pr_err("Unbinding returned %i\n", err);
+                       goto out_object;
+               }
+
                count = 0;
                list_for_each_entry(vma, &obj->vma.list, obj_link)
                        count++;