diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2018-07-23 17:53:35 +0300 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2018-07-25 10:06:33 +0300 |
commit | 3970c65c2b47c450f917bc8a29c5849563a95dfe (patch) | |
tree | 923cbf62f0b0802ff29746d7efffed620db3bd1d /drivers/gpu/drm/i915/i915_gem.c | |
parent | 07685c827b2a020c88c25a6961c435050bbbe7b3 (diff) | |
download | linux-3970c65c2b47c450f917bc8a29c5849563a95dfe.tar.xz |
drm/i915: Skip repeated calls to i915_gem_set_wedged()
If we already wedged, i915_gem_set_wedged() becomes a complicated no-op.
References: https://bugs.freedesktop.org/show_bug.cgi?id=107343
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180723145335.24579-1-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 8b52cb768a67..a4031fab57b0 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3312,8 +3312,8 @@ void i915_gem_set_wedged(struct drm_i915_private *i915) intel_engine_dump(engine, &p, "%s\n", engine->name); } - set_bit(I915_WEDGED, &i915->gpu_error.flags); - smp_mb__after_atomic(); + if (test_and_set_bit(I915_WEDGED, &i915->gpu_error.flags)) + goto out; /* * First, stop submission to hw, but do not yet complete requests by @@ -3372,6 +3372,7 @@ void i915_gem_set_wedged(struct drm_i915_private *i915) i915_gem_reset_finish_engine(engine); } +out: GEM_TRACE("end\n"); wake_up_all(&i915->gpu_error.reset_queue); |