• Chris Wilson's avatar
    drm/i915: Adjust hangcheck EIO semantics · 30dbf0c0
    Chris Wilson authored
    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: default avatarOwain G. Ainsworth <zerooa@googlemail.com>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    30dbf0c0
i915_irq.c 45.1 KB