[Intel-gfx] [PATCH v2 09/16] drm/i915: Ensure i915_vma tests do not get -ENOSPC with the locking changes.
Matthew Auld
matthew.william.auld at gmail.com
Wed Dec 8 12:01:14 UTC 2021
On Wed, 8 Dec 2021 at 11:49, Matthew Auld
<matthew.william.auld at gmail.com> wrote:
>
> On Mon, 29 Nov 2021 at 13:58, Maarten Lankhorst
> <maarten.lankhorst at linux.intel.com> 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 at linux.intel.com>
>
> 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?
Oh, because trylock still "fails' in such cases? Do the later changes
to evict_vm, where it is able to handle already locked objects fix
this? Do we not need similar treatment for things like evict_for_node?
>
> > ---
> > 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
> >
More information about the Intel-gfx
mailing list