On Mon, 29 Nov 2021 at 13:58, Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> wrote: > > 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@xxxxxxxxxxxxxxx> Hmm, do we need this? It looks like we should be able to handle such scenarios, with already locked objects sharing the same dma-resv? Or is something else going on here? > --- > 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 >