[Intel-gfx] [PATCH] drm/i915: Report all failed registers for ctx isolation

Chris Wilson chris at chris-wilson.co.uk
Tue Mar 31 12:03:19 UTC 2020


Quoting Mika Kuoppala (2020-03-31 12:56:49)
> We want to log all failed registers so don't stop
> on a first.
> 
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>

The s.e.p. field is failing.

> ---
>  drivers/gpu/drm/i915/gt/selftest_lrc.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> index d3e163c93e22..7d7b0ab52b63 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> @@ -5104,6 +5104,7 @@ static int compare_isolation(struct intel_engine_cs *engine,
>  {
>         u32 x, dw, *hw, *lrc;
>         u32 *A[2], *B[2];
> +       unsigned long failed;
>         int err = 0;
>  
>         A[0] = i915_gem_object_pin_map(ref[0]->obj, I915_MAP_WC);
> @@ -5136,6 +5137,7 @@ static int compare_isolation(struct intel_engine_cs *engine,
>         }
>         lrc += LRC_STATE_PN * PAGE_SIZE / sizeof(*hw);
>  
> +       failed = 0;
>         x = 0;
>         dw = 0;
>         hw = engine->pinned_default_state;
> @@ -5169,8 +5171,7 @@ static int compare_isolation(struct intel_engine_cs *engine,
>                                                hw[dw], hw[dw + 1],
>                                                A[0][x], B[0][x], B[1][x],
>                                                poison, lrc[dw + 1]);
> -                                       err = -EINVAL;
> -                                       break;
> +                                       failed++;
>                                 }
>                         }
>                         dw += 2;
> @@ -5179,6 +5180,9 @@ static int compare_isolation(struct intel_engine_cs *engine,
>         } while (dw < PAGE_SIZE / sizeof(u32) &&
>                  (hw[dw] & ~BIT(0)) != MI_BATCH_BUFFER_END);
>  
> +       if (failed)
> +               err = -EINVAL;
> +
>         i915_gem_object_unpin_map(ce->state->obj);
>  err_B1:
>         i915_gem_object_unpin_map(result[1]->obj);

You also want
@@ -5330,13 +5330,15 @@ static int live_lrc_isolation(void *arg)
                intel_engine_pm_get(engine);
                if (engine->pinned_default_state) {
                        for (i = 0; i < ARRAY_SIZE(poison); i++) {
-                               err = __lrc_isolation(engine, poison[i]);
-                               if (err)
-                                       break;
+                               int result;

-                               err = __lrc_isolation(engine, ~poison[i]);
-                               if (err)
-                                       break;
+                               result = __lrc_isolation(engine, poison[i]);
+                               if (result && !err)
+                                       err = result;
+
+                               result = __lrc_isolation(engine, ~poison[i]);
+                               if (result && !err)
+                                       err = result;
                        }
                }
                intel_engine_pm_put(engine);

for this mode.

With that or as a separate patch,
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris


More information about the Intel-gfx mailing list