Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > At a few points in our uABI, we check to see if the driver is wedged and > report -EIO back to the user in that case. However, as we perform the > check and reset asynchronously, we may instead see the temporary wedging > used to cancel inflight rendering to avoid a deadlock during reset. If This could mention that it is the wedge on timeout which will flash the -EIO to userspace. > we suspect this is the case, that is we see a wedged driver and reset in > progress, then wait until the reset is resolved before reporting upon > the wedged status. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109580 > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_debugfs.c | 16 ++++++++--- > drivers/gpu/drm/i915/i915_drv.h | 7 ++++- > drivers/gpu/drm/i915/i915_gem.c | 22 +++++++-------- > drivers/gpu/drm/i915/i915_request.c | 5 ++-- > drivers/gpu/drm/i915/i915_reset.c | 27 +++++++++++++++++-- > drivers/gpu/drm/i915/i915_reset.h | 2 ++ > drivers/gpu/drm/i915/intel_engine_cs.c | 8 +++--- > drivers/gpu/drm/i915/intel_hangcheck.c | 2 +- > drivers/gpu/drm/i915/selftests/huge_pages.c | 2 +- > drivers/gpu/drm/i915/selftests/i915_active.c | 2 +- > .../drm/i915/selftests/i915_gem_coherency.c | 4 +-- > .../gpu/drm/i915/selftests/i915_gem_context.c | 2 +- > .../gpu/drm/i915/selftests/i915_gem_evict.c | 2 +- > .../gpu/drm/i915/selftests/i915_gem_object.c | 2 +- > drivers/gpu/drm/i915/selftests/i915_request.c | 2 +- > .../gpu/drm/i915/selftests/igt_flush_test.c | 2 +- > .../gpu/drm/i915/selftests/intel_hangcheck.c | 24 ++++++++--------- > drivers/gpu/drm/i915/selftests/intel_lrc.c | 2 +- > .../drm/i915/selftests/intel_workarounds.c | 4 +-- > 19 files changed, 87 insertions(+), 50 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 2aeea977283f..54928d693c85 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -3833,11 +3833,19 @@ static const struct file_operations i915_cur_wm_latency_fops = { > static int > i915_wedged_get(void *data, u64 *val) > { > - struct drm_i915_private *dev_priv = data; > + int ret = i915_terminally_wedged(data); > > - *val = i915_terminally_wedged(&dev_priv->gpu_error); > + switch (ret) { > + case -EIO: > + *val = 1; > + ret = 0; > + break; > + case 0: > + *val = 0; > + break; > + } Hmm, joke is still there but it is better. > > - return 0; > + return ret; > } > > static int > @@ -3918,7 +3926,7 @@ i915_drop_caches_set(void *data, u64 val) > mutex_unlock(&i915->drm.struct_mutex); > } > > - if (val & DROP_RESET_ACTIVE && i915_terminally_wedged(&i915->gpu_error)) > + if (val & DROP_RESET_ACTIVE && i915_terminally_wedged(i915)) > i915_handle_error(i915, ALL_ENGINES, 0, NULL); > > fs_reclaim_acquire(GFP_KERNEL); > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 5c8d0489a1cd..14c6f5e65b8d 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -3020,11 +3020,16 @@ int __must_check i915_gem_set_global_seqno(struct drm_device *dev, u32 seqno); > struct i915_request * > i915_gem_find_active_request(struct intel_engine_cs *engine); > > -static inline bool i915_terminally_wedged(struct i915_gpu_error *error) > +static inline bool __i915_wedged(struct i915_gpu_error *error) > { > return unlikely(test_bit(I915_WEDGED, &error->flags)); > } > > +static inline bool i915_reset_failed(struct drm_i915_private *i915) > +{ > + return __i915_wedged(&i915->gpu_error); > +} > + > static inline u32 i915_reset_count(struct i915_gpu_error *error) > { > return READ_ONCE(error->reset_count); > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index b421bc7a2e26..b3d918d90c1f 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1928,7 +1928,7 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf) > * fail). But any other -EIO isn't ours (e.g. swap in failure) > * and so needs to be reported. > */ > - if (!i915_terminally_wedged(&dev_priv->gpu_error)) > + if (!i915_terminally_wedged(dev_priv)) > return VM_FAULT_SIGBUS; > /* else: fall through */ > case -EAGAIN: > @@ -2958,7 +2958,7 @@ static void assert_kernel_context_is_current(struct drm_i915_private *i915) > struct intel_engine_cs *engine; > enum intel_engine_id id; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > return; > > GEM_BUG_ON(i915->gt.active_requests); > @@ -3806,8 +3806,9 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) > long ret; > > /* ABI: return -EIO if already wedged */ > - if (i915_terminally_wedged(&dev_priv->gpu_error)) > - return -EIO; > + ret = i915_terminally_wedged(dev_priv); > + if (ret) > + return ret; > > spin_lock(&file_priv->mm.lock); > list_for_each_entry(request, &file_priv->mm.request_list, client_link) { > @@ -4460,7 +4461,7 @@ void i915_gem_sanitize(struct drm_i915_private *i915) > * back to defaults, recovering from whatever wedged state we left it > * in and so worth trying to use the device once more. > */ > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > i915_gem_unset_wedged(i915); > > /* > @@ -4504,7 +4505,7 @@ int i915_gem_suspend(struct drm_i915_private *i915) > * state. Fortunately, the kernel_context is disposable and we do > * not rely on its state. > */ > - if (!i915_terminally_wedged(&i915->gpu_error)) { > + if (!i915_reset_failed(i915)) { > ret = i915_gem_switch_to_kernel_context(i915); > if (ret) > goto err_unlock; > @@ -4625,7 +4626,7 @@ void i915_gem_resume(struct drm_i915_private *i915) > return; > > err_wedged: > - if (!i915_terminally_wedged(&i915->gpu_error)) { > + if (!i915_terminally_wedged(i915)) { > DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n"); > i915_gem_set_wedged(i915); > } > @@ -4731,10 +4732,9 @@ int i915_gem_init_hw(struct drm_i915_private *dev_priv) > init_unused_rings(dev_priv); > > BUG_ON(!dev_priv->kernel_context); > - if (i915_terminally_wedged(&dev_priv->gpu_error)) { > - ret = -EIO; > + ret = i915_terminally_wedged(dev_priv); > + if (ret) > goto out; > - } > > ret = i915_ppgtt_init_hw(dev_priv); > if (ret) { > @@ -5107,7 +5107,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv) > * wedged. But we only want to do this where the GPU is angry, > * for all other failure, such as an allocation failure, bail. > */ > - if (!i915_terminally_wedged(&dev_priv->gpu_error)) { > + if (!i915_reset_failed(dev_priv)) { > i915_load_error(dev_priv, > "Failed to initialize GPU, declaring it wedged!\n"); > i915_gem_set_wedged(dev_priv); > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c > index a61e3a4fc9dc..124b3e279c88 100644 > --- a/drivers/gpu/drm/i915/i915_request.c > +++ b/drivers/gpu/drm/i915/i915_request.c > @@ -559,8 +559,9 @@ i915_request_alloc(struct intel_engine_cs *engine, struct i915_gem_context *ctx) > * ABI: Before userspace accesses the GPU (e.g. execbuffer), report > * EIO if the GPU is already wedged. > */ > - if (i915_terminally_wedged(&i915->gpu_error)) > - return ERR_PTR(-EIO); > + ret = i915_terminally_wedged(i915); > + if (ret) > + return ERR_PTR(ret); > > /* > * Pinning the contexts may generate requests in order to acquire > diff --git a/drivers/gpu/drm/i915/i915_reset.c b/drivers/gpu/drm/i915/i915_reset.c > index c234feb5fdf5..0853cdcdce99 100644 > --- a/drivers/gpu/drm/i915/i915_reset.c > +++ b/drivers/gpu/drm/i915/i915_reset.c > @@ -1032,7 +1032,7 @@ void i915_reset(struct drm_i915_private *i915, > > finish: > reset_finish(i915); > - if (!i915_terminally_wedged(error)) > + if (!__i915_wedged(error)) > reset_restart(i915); > return; > > @@ -1253,7 +1253,7 @@ void i915_handle_error(struct drm_i915_private *i915, > * Try engine reset when available. We fall back to full reset if > * single reset fails. > */ > - if (intel_has_reset_engine(i915) && !i915_terminally_wedged(error)) { > + if (intel_has_reset_engine(i915) && !__i915_wedged(error)) { > for_each_engine_masked(engine, i915, engine_mask, tmp) { > BUILD_BUG_ON(I915_RESET_MODESET >= I915_RESET_ENGINE); > if (test_and_set_bit(I915_RESET_ENGINE + engine->id, > @@ -1339,6 +1339,29 @@ __releases(&i915->gpu_error.reset_backoff_srcu) > srcu_read_unlock(&error->reset_backoff_srcu, tag); > } > > +int i915_terminally_wedged(struct drm_i915_private *i915) > +{ > + struct i915_gpu_error *error = &i915->gpu_error; > + might_sleep(); Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > + if (!__i915_wedged(error)) > + return 0; > + > + /* Reset still in progress? Maybe we will recover? */ > + if (!test_bit(I915_RESET_BACKOFF, &error->flags)) > + return -EIO; > + > + /* XXX intel_reset_finish() still takes struct_mutex!!! */ > + if (mutex_is_locked(&i915->drm.struct_mutex)) > + return -EAGAIN; > + > + if (wait_event_interruptible(error->reset_queue, > + !test_bit(I915_RESET_BACKOFF, > + &error->flags))) > + return -EINTR; > + > + return __i915_wedged(error) ? -EIO : 0; > +} > + > bool i915_reset_flush(struct drm_i915_private *i915) > { > int err; > diff --git a/drivers/gpu/drm/i915/i915_reset.h b/drivers/gpu/drm/i915/i915_reset.h > index 893c5d1c2eb8..16f2389f656f 100644 > --- a/drivers/gpu/drm/i915/i915_reset.h > +++ b/drivers/gpu/drm/i915/i915_reset.h > @@ -36,6 +36,8 @@ bool i915_reset_flush(struct drm_i915_private *i915); > int __must_check i915_reset_trylock(struct drm_i915_private *i915); > void i915_reset_unlock(struct drm_i915_private *i915, int tag); > > +int i915_terminally_wedged(struct drm_i915_private *i915); > + > bool intel_has_gpu_reset(struct drm_i915_private *i915); > bool intel_has_reset_engine(struct drm_i915_private *i915); > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 2547e2e51db8..81b80f8fd9ea 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -1007,10 +1007,8 @@ static bool ring_is_idle(struct intel_engine_cs *engine) > */ > bool intel_engine_is_idle(struct intel_engine_cs *engine) > { > - struct drm_i915_private *dev_priv = engine->i915; > - > /* More white lies, if wedged, hw state is inconsistent */ > - if (i915_terminally_wedged(&dev_priv->gpu_error)) > + if (i915_reset_failed(engine->i915)) > return true; > > /* Any inflight/incomplete requests? */ > @@ -1054,7 +1052,7 @@ bool intel_engines_are_idle(struct drm_i915_private *dev_priv) > * If the driver is wedged, HW state may be very inconsistent and > * report that it is still busy, even though we have stopped using it. > */ > - if (i915_terminally_wedged(&dev_priv->gpu_error)) > + if (i915_reset_failed(dev_priv)) > return true; > > for_each_engine(engine, dev_priv, id) { > @@ -1496,7 +1494,7 @@ void intel_engine_dump(struct intel_engine_cs *engine, > va_end(ap); > } > > - if (i915_terminally_wedged(&engine->i915->gpu_error)) > + if (i915_reset_failed(engine->i915)) > drm_printf(m, "*** WEDGED ***\n"); > > drm_printf(m, "\tcurrent seqno %x, last %x, hangcheck %x [%d ms]\n", > diff --git a/drivers/gpu/drm/i915/intel_hangcheck.c b/drivers/gpu/drm/i915/intel_hangcheck.c > index a219c796e56d..9be033b6f4d2 100644 > --- a/drivers/gpu/drm/i915/intel_hangcheck.c > +++ b/drivers/gpu/drm/i915/intel_hangcheck.c > @@ -263,7 +263,7 @@ static void i915_hangcheck_elapsed(struct work_struct *work) > if (!READ_ONCE(dev_priv->gt.awake)) > return; > > - if (i915_terminally_wedged(&dev_priv->gpu_error)) > + if (i915_terminally_wedged(dev_priv)) > return; > > /* As enabling the GPU requires fairly extensive mmio access, > diff --git a/drivers/gpu/drm/i915/selftests/huge_pages.c b/drivers/gpu/drm/i915/selftests/huge_pages.c > index a9a2fa35876f..40607ba7dda6 100644 > --- a/drivers/gpu/drm/i915/selftests/huge_pages.c > +++ b/drivers/gpu/drm/i915/selftests/huge_pages.c > @@ -1764,7 +1764,7 @@ int i915_gem_huge_page_live_selftests(struct drm_i915_private *dev_priv) > return 0; > } > > - if (i915_terminally_wedged(&dev_priv->gpu_error)) > + if (i915_terminally_wedged(dev_priv)) > return 0; > > file = mock_file(dev_priv); > diff --git a/drivers/gpu/drm/i915/selftests/i915_active.c b/drivers/gpu/drm/i915/selftests/i915_active.c > index 337b1f98b923..27d8f853111b 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_active.c > +++ b/drivers/gpu/drm/i915/selftests/i915_active.c > @@ -150,7 +150,7 @@ int i915_active_live_selftests(struct drm_i915_private *i915) > SUBTEST(live_active_retire), > }; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return 0; > > return i915_subtests(tests, i915); > diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c > index fd89a5a33c1a..9c16aff87028 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c > +++ b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c > @@ -248,12 +248,12 @@ static bool always_valid(struct drm_i915_private *i915) > > static bool needs_fence_registers(struct drm_i915_private *i915) > { > - return !i915_terminally_wedged(&i915->gpu_error); > + return !i915_terminally_wedged(i915); > } > > static bool needs_mi_store_dword(struct drm_i915_private *i915) > { > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return false; > > return intel_engine_can_store_dword(i915->engine[RCS]); > diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/selftests/i915_gem_context.c > index b7b97c57ad05..3a238b9628b3 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/selftests/i915_gem_context.c > @@ -1632,7 +1632,7 @@ int i915_gem_context_live_selftests(struct drm_i915_private *dev_priv) > SUBTEST(igt_vm_isolation), > }; > > - if (i915_terminally_wedged(&dev_priv->gpu_error)) > + if (i915_terminally_wedged(dev_priv)) > return 0; > > return i915_subtests(tests, dev_priv); > diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c > index 32dce7176f63..b270eab1cad1 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c > +++ b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c > @@ -547,7 +547,7 @@ int i915_gem_evict_live_selftests(struct drm_i915_private *i915) > SUBTEST(igt_evict_contexts), > }; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return 0; > > return i915_subtests(tests, i915); > diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_object.c b/drivers/gpu/drm/i915/selftests/i915_gem_object.c > index 395ae878e0f7..784982aed625 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_gem_object.c > +++ b/drivers/gpu/drm/i915/selftests/i915_gem_object.c > @@ -583,7 +583,7 @@ static int igt_mmap_offset_exhaustion(void *arg) > for (loop = 0; loop < 3; loop++) { > intel_wakeref_t wakeref; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > break; > > obj = i915_gem_object_create_internal(i915, PAGE_SIZE); > diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c b/drivers/gpu/drm/i915/selftests/i915_request.c > index 6733dc5b6b4c..03cc8ab6a620 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_request.c > +++ b/drivers/gpu/drm/i915/selftests/i915_request.c > @@ -1246,7 +1246,7 @@ int i915_request_live_selftests(struct drm_i915_private *i915) > SUBTEST(live_breadcrumbs_smoketest), > }; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return 0; > > return i915_subtests(tests, i915); > diff --git a/drivers/gpu/drm/i915/selftests/igt_flush_test.c b/drivers/gpu/drm/i915/selftests/igt_flush_test.c > index af66e3d4e23a..e0d3122fd35a 100644 > --- a/drivers/gpu/drm/i915/selftests/igt_flush_test.c > +++ b/drivers/gpu/drm/i915/selftests/igt_flush_test.c > @@ -29,5 +29,5 @@ int igt_flush_test(struct drm_i915_private *i915, unsigned int flags) > i915_gem_set_wedged(i915); > } > > - return i915_terminally_wedged(&i915->gpu_error) ? -EIO : 0; > + return i915_terminally_wedged(i915); > } > diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > index c32bc31192ae..a77e4bf1ab55 100644 > --- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > +++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > @@ -342,7 +342,7 @@ static int igt_hang_sanitycheck(void *arg) > timeout = i915_request_wait(rq, > I915_WAIT_LOCKED, > MAX_SCHEDULE_TIMEOUT); > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > timeout = -EIO; > > i915_request_put(rq); > @@ -383,7 +383,7 @@ static int igt_global_reset(void *arg) > > igt_global_reset_unlock(i915); > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > err = -EIO; > > return err; > @@ -401,13 +401,13 @@ static int igt_wedged_reset(void *arg) > > i915_gem_set_wedged(i915); > > - GEM_BUG_ON(!i915_terminally_wedged(&i915->gpu_error)); > + GEM_BUG_ON(!i915_reset_failed(i915)); > i915_reset(i915, ALL_ENGINES, NULL); > > intel_runtime_pm_put(i915, wakeref); > igt_global_reset_unlock(i915); > > - return i915_terminally_wedged(&i915->gpu_error) ? -EIO : 0; > + return i915_reset_failed(i915) ? -EIO : 0; > } > > static bool wait_for_idle(struct intel_engine_cs *engine) > @@ -529,7 +529,7 @@ static int __igt_reset_engine(struct drm_i915_private *i915, bool active) > break; > } > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > err = -EIO; > > if (active) { > @@ -843,7 +843,7 @@ static int __igt_reset_engines(struct drm_i915_private *i915, > break; > } > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > err = -EIO; > > if (flags & TEST_ACTIVE) { > @@ -969,7 +969,7 @@ static int igt_reset_wait(void *arg) > mutex_unlock(&i915->drm.struct_mutex); > igt_global_reset_unlock(i915); > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > return -EIO; > > return err; > @@ -1166,7 +1166,7 @@ static int __igt_reset_evict_vma(struct drm_i915_private *i915, > unlock: > mutex_unlock(&i915->drm.struct_mutex); > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > return -EIO; > > return err; > @@ -1372,7 +1372,7 @@ static int igt_reset_queue(void *arg) > mutex_unlock(&i915->drm.struct_mutex); > igt_global_reset_unlock(i915); > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > return -EIO; > > return err; > @@ -1552,7 +1552,7 @@ static int igt_atomic_reset_engine(struct intel_engine_cs *engine, > i915_request_wait(rq, > I915_WAIT_LOCKED, > MAX_SCHEDULE_TIMEOUT); > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > err = -EIO; > } > > @@ -1591,7 +1591,7 @@ static int igt_atomic_reset(void *arg) > > /* Flush any requests before we get started and check basics */ > force_reset(i915); > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_reset_failed(i915)) > goto unlock; > > if (intel_has_gpu_reset(i915)) { > @@ -1665,7 +1665,7 @@ int intel_hangcheck_live_selftests(struct drm_i915_private *i915) > if (!intel_has_gpu_reset(i915)) > return 0; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return -EIO; /* we're long past hope of a successful reset */ > > wakeref = intel_runtime_pm_get(i915); > diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c > index 58144e024751..0f7a5bf69646 100644 > --- a/drivers/gpu/drm/i915/selftests/intel_lrc.c > +++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c > @@ -895,7 +895,7 @@ int intel_execlists_live_selftests(struct drm_i915_private *i915) > if (!HAS_EXECLISTS(i915)) > return 0; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return 0; > > return i915_subtests(tests, i915); > diff --git a/drivers/gpu/drm/i915/selftests/intel_workarounds.c b/drivers/gpu/drm/i915/selftests/intel_workarounds.c > index fb479a2c04fb..e6ffc8ac22dc 100644 > --- a/drivers/gpu/drm/i915/selftests/intel_workarounds.c > +++ b/drivers/gpu/drm/i915/selftests/intel_workarounds.c > @@ -181,7 +181,7 @@ static int check_whitelist(struct i915_gem_context *ctx, > err = 0; > igt_wedge_on_timeout(&wedge, ctx->i915, HZ / 5) /* a safety net! */ > err = i915_gem_object_set_to_cpu_domain(results, false); > - if (i915_terminally_wedged(&ctx->i915->gpu_error)) > + if (i915_terminally_wedged(ctx->i915)) > err = -EIO; > if (err) > goto out_put; > @@ -510,7 +510,7 @@ int intel_workarounds_live_selftests(struct drm_i915_private *i915) > }; > int err; > > - if (i915_terminally_wedged(&i915->gpu_error)) > + if (i915_terminally_wedged(i915)) > return 0; > > mutex_lock(&i915->drm.struct_mutex); > -- > 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx