[Intel-gfx] [PATCH] drm/i915: Double check vma placement upon gaining the vm lock

Chris Wilson chris at chris-wilson.co.uk
Tue Nov 26 17:25:04 UTC 2019


Quoting Chris Wilson (2019-11-26 17:22:23)
> Quoting Tvrtko Ursulin (2019-11-26 17:04:43)
> > 
> > On 26/11/2019 15:26, Chris Wilson wrote:
> > > diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> > > index e5512f26e20a..f6e661428b02 100644
> > > --- a/drivers/gpu/drm/i915/i915_vma.c
> > > +++ b/drivers/gpu/drm/i915/i915_vma.c
> > > @@ -905,6 +905,12 @@ int i915_vma_pin(struct i915_vma *vma, u64 size, u64 alignment, u64 flags)
> > >                       __i915_vma_set_map_and_fenceable(vma);
> > >       }
> > >   
> > > +     /* Somebody else managed to gazump our placement? */
> > > +     if (i915_vma_misplaced(vma, size, alignment, flags)) {
> > > +             err = -EAGAIN;
> > > +             goto err_active;
> > > +     }
> > > +
> > 
> > What about other callers? They will not be expecting this.
> 
> The other paths should be quite happy with -EAGAIN from vma_pin, it's
> already part of their retry procedure. If not, there's always more duct
> tape. Hopefully the replacement is much simpler (stop laughing back
> there).

The alternative here is to pull in __i915_vma_unbind(), which might be
plausible.
-Chris


More information about the Intel-gfx mailing list