• Chris Wilson's avatar
    drm/i915: Wake-up wait_request() from elapsed hang-check (v2) · e78d73b1
    Chris Wilson authored
    If our watchdog fires and we see that the GPU is idle, but that we
    are still waiting on an interrupt, forcibly wake-up the waiter.
    
    i915_do_wait_request() should not be racy, yet there are persistent
    reports that 945GM hangs whilst the GPU is idle. This implies that the
    hardware is not quite as coherent as the documentation claims - a write
    followed by a flush is supposed to be coherent in main memory before the
    flush is retired and the irq is emitted. This seems to be a sensible and
    elegant guard to force the wait to timeout.
    
    v2: Daniel Vetter pointed out that a warning would be useful to explain
    why the machine appeared to stall.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarEric Anholt <eric@anholt.net>
    e78d73b1
i915_irq.c 42.9 KB