[Intel-gfx] [PATCH] drm/i915/gtt: Relax pd_used assertion

Chris Wilson chris at chris-wilson.co.uk
Tue Aug 20 14:28:41 UTC 2019


Quoting Mika Kuoppala (2019-08-20 15:25:50)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> 
> > The current assertion tries to make sure that we do not over count the
> > number of used PDE inside a page directory -- that is with an array of
> > 512 pde, we do not expect more than 512 elements used! However, our
> > assertion has to take into account that as we pin an element into the
> > page directory, the caller first pins the page directory so the usage
> > count is one higher. However, this should be one extra pin per thread,
> > and the upper bound is that we may have one thread for each entry.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_gem_gtt.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> > index e48df11a19fb..9435d184ddf2 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> > @@ -771,7 +771,8 @@ __set_pd_entry(struct i915_page_directory * const pd,
> >              struct i915_page_dma * const to,
> >              u64 (*encode)(const dma_addr_t, const enum i915_cache_level))
> >  {
> > -     GEM_BUG_ON(atomic_read(px_used(pd)) > ARRAY_SIZE(pd->entry));
> > +     /* Each thread pre-pins the pd, and we may have a thread per each pde */
> > +     GEM_BUG_ON(atomic_read(px_used(pd)) > 2 * ARRAY_SIZE(pd->entry));
> 
> When I saw +1 wrt array_size that should have rang some bells between
> my ears. I did increase it to +1 for the upper pinning but
> the parallelism escaped me and no more bells were rung.

It completely escaped me and I had the reason to make sure this worked
with multiple threads!

Thanks for the review,
-Chris


More information about the Intel-gfx mailing list