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.lankho...@linux.intel.com>
---
 drivers/gpu/drm/i915/selftests/i915_vma.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/selftests/i915_vma.c 
b/drivers/gpu/drm/i915/selftests/i915_vma.c
index 1f10fe36619b..5c5809dfe9b2 100644
--- a/drivers/gpu/drm/i915/selftests/i915_vma.c
+++ b/drivers/gpu/drm/i915/selftests/i915_vma.c
@@ -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++;
-- 
2.34.0

Reply via email to