[Intel-gfx] [PATCH] drm/i915/selftests: Touch the NMI watchdog inside a GTT pass

Chris Wilson chris at chris-wilson.co.uk
Tue Jul 3 13:16:58 UTC 2018


Quoting Tvrtko Ursulin (2018-07-03 13:54:01)
> 
> On 03/07/2018 12:07, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2018-07-03 12:00:13)
> >>
> >> On 03/07/2018 11:25, Chris Wilson wrote:
> >>> We want to do a complete pass before checking the timeout, but just in
> >>> case the pass is quite slow, touch the NMI watchdog to prevent a
> >>> false positive.
> >>>
> >>> 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 | 8 ++++++++
> >>>    1 file changed, 8 insertions(+)
> >>>
> >>> diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
> >>> index eefcf7b84054..71c0654b4b4d 100644
> >>> --- a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
> >>> +++ b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
> >>> @@ -23,6 +23,7 @@
> >>>     */
> >>>    
> >>>    #include <linux/list_sort.h>
> >>> +#include <linux/nmi.h>
> >>>    #include <linux/prime_numbers.h>
> >>>    
> >>>    #include "../i915_selftest.h"
> >>> @@ -686,6 +687,13 @@ static int pot_hole(struct drm_i915_private *i915,
> >>>                        i915_vma_unpin(vma);
> >>>                        err = i915_vma_unbind(vma);
> >>>                        GEM_BUG_ON(err);
> >>> +
> >>> +                     /*
> >>> +                      * Do a complete pass before timing out, but just
> >>> +                      * in case we are running too slow, ping the NMI
> >>> +                      * watchdog.
> >>> +                      */
> >>> +                     touch_nmi_watchdog();
> >>>                }
> >>>    
> >>>                if (igt_timeout(end_time,
> >>>
> >>
> >> Why only in pot_hole, is this the slowest test?
> > 
> > It's the only test of this style where we don't have the igt_timeout
> > (cond_resched) inside the innermost loop.
> 
> So.. the obvious question.. :) Why not move igt_timeout to the innermost 
> loop and avoid low-level hackery?

In looking at it, I felt this case it was more interesting^W important to
test each boundary before checking the timeout. I was concerned about
declaring the pass a success too early.
-Chris


More information about the Intel-gfx mailing list