]> git.ipfire.org Git - thirdparty/linux.git/commit - drivers/gpu/drm/i915/i915_gem.c
drm/i915: Adjust hangcheck EIO semantics
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 25 Sep 2010 09:19:17 +0000 (10:19 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 25 Sep 2010 11:23:12 +0000 (12:23 +0100)
commit30dbf0c07ff4e3e21b827e2a9d6ff7eb34458819
tree273083a7e570ce8ac43a327451afd4172645af7b
parentf787a5f59e1b0e320a6b0a37e9a2e306551d1e40
drm/i915: Adjust hangcheck EIO semantics

Owain Ainsworth reported an issue between the interaction of the
hangcheck and userspace immediately (and permanently) falling back to
s/w rasterisation. In order to break the mutex and begin resetting the
GPU, we must abort the current operation (usually within the wait) and
climb sufficiently far back up the call chain to drop the mutex. In his
implementation, Owain has a loop within the ioctl handler to detect the
hang and then sleep until the error handler has run. I've chosen to
return to userspace and report an EAGAIN which should trigger the
userspace ioctl handler to repeat the call (simply because it felt less
invasive...). Before hitting a wedged GPU, we then wait upon completion
of the error handler.

Reported-by: Owain G. Ainsworth <zerooa@googlemail.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_tiling.c
drivers/gpu/drm/i915/i915_irq.c