[Intel-gfx] [PATCH] drm/i915/selftests: Drop struct_mutex around lowlevel pggtt allocation

Chris Wilson chris at chris-wilson.co.uk
Tue Jul 3 11:00:22 UTC 2018


Quoting Tvrtko Ursulin (2018-07-03 11:55:28)
> 
> On 03/07/2018 11:07, Chris Wilson wrote:
> > For a ppgtt that we are constructing, there is no struct_mutex
> > dependence so skip it. In the process, also ping the scheduler
> > frequently to try and avoid the NMI watchdog.
> > 
> > Suggested-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=107094
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> > ---
> >   drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 13 ++++++-------
> >   1 file changed, 6 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
> > index a28ee0cc6a63..fff26bd05f71 100644
> > --- a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
> > +++ b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
> > @@ -142,12 +142,9 @@ static int igt_ppgtt_alloc(void *arg)
> >       if (!USES_PPGTT(dev_priv))
> >               return 0;
> >   
> > -     mutex_lock(&dev_priv->drm.struct_mutex);
> >       ppgtt = __hw_ppgtt_create(dev_priv);
> > -     if (IS_ERR(ppgtt)) {
> > -             err = PTR_ERR(ppgtt);
> > -             goto err_unlock;
> > -     }
> > +     if (IS_ERR(ppgtt))
> > +             return PTR_ERR(ppgtt);
> >   
> >       if (!ppgtt->vm.allocate_va_range)
> >               goto err_ppgtt_cleanup;
> > @@ -166,6 +163,8 @@ static int igt_ppgtt_alloc(void *arg)
> >                       goto err_ppgtt_cleanup;
> >               }
> >   
> > +             cond_resched();
> > +
> 
> This test is also long running? Seeing how it allocates in growing 
> chunks I expected it would finish quick, but it would not?

I'm not sure if the might_sleep/sleep for allocations is credited to us.
The easiest way to be sure is to reschedule explicitly. Anyway, it's the
allocations here that take time, but there's also some time spent
converting pages to WC and filling them with scratch. Again not sure
how much that is credited to us against NMI, but the main one is the
struct_mutex blocking other tasks.
-Chris


More information about the Intel-gfx mailing list