diff options
author | McAulay, Alistair | 2014-08-15 19:51:35 +0200 |
---|---|---|
committer | Daniel Vetter | 2014-09-03 10:54:09 +0200 |
commit | 6689c167ae14c312972e89be1121e933e4de0001 (patch) | |
tree | 7a05888b31f0412fe2e9b1186f606879515f051c /drivers/gpu/drm/i915/i915_gem.c | |
parent | drm/qxl: enables gem prime helpers for qxl using dummy driver callbacks (diff) | |
download | kernel-qcow2-linux-6689c167ae14c312972e89be1121e933e4de0001.tar.gz kernel-qcow2-linux-6689c167ae14c312972e89be1121e933e4de0001.tar.xz kernel-qcow2-linux-6689c167ae14c312972e89be1121e933e4de0001.zip |
drm/i915: Rework GPU reset sequence to match driver load & thaw
This patch is to address Daniels concerns over different code during reset:
http://lists.freedesktop.org/archives/intel-gfx/2014-June/047758.html
"The reason for aiming as hard as possible to use the exact same code for
driver load, gpu reset and runtime pm/system resume is that we've simply
seen too many bugs due to slight variations and unintended omissions."
Tested using igt drv_hangman.
V2: Cleaner way of preventing check_wedge returning -EAGAIN
V3: Clean the last_context during reset, to ensure do_switch() does the MI_SET_CONTEXT. As per review.
Signed-off-by: McAulay, Alistair <alistair.mcaulay@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
[danvet: Rebase over ctx->ppgtt rework and extend the comment in
check_wedge a bit.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index f1bb69377a35..fcd7dde6e444 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1085,7 +1085,13 @@ i915_gem_check_wedge(struct i915_gpu_error *error, if (i915_terminally_wedged(error)) return -EIO; - return -EAGAIN; + /* + * Check if GPU Reset is in progress - we need intel_ring_begin + * to work properly to reinit the hw state while the gpu is + * still marked as reset-in-progress. Handle this with a flag. + */ + if (!error->reload_in_reset) + return -EAGAIN; } return 0; |