On Mon, 29 Nov 2021 at 13:58, Maarten Lankhorst
<[email protected]> 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 <[email protected]>
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
>