• Mika Kuoppala's avatar
    drm/i915: Reset request handling for gen8+ · 7fd2d269
    Mika Kuoppala authored
    In order for gen8+ hardware to guarantee that no context switch
    takes place during engine reset and that current context is properly
    saved, the driver needs to notify and query hw before commencing
    with reset.
    
    There are gpu hangs where the engine gets so stuck that it never will
    report to be ready for reset. We could proceed with reset anyway, but
    with some hangs with skl, the forced gpu reset will result in a system
    hang. By inspecting the unreadiness for reset seems to correlate with
    the probable system hang.
    
    We will only proceed with reset if all engines report that they
    are ready for reset. If root cause for system hang is found and
    can be worked around with another means, we can reconsider if
    we can reinstate full reset for unreadiness case.
    
    v2: -EIO, Recovery, gen8 (Chris, Tomas, Daniel)
    v3: updated commit msg
    v4: timeout_ms, simpler error path (Chris)
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=89959
    References: https://bugs.freedesktop.org/show_bug.cgi?id=90854
    Testcase: igt/gem_concurrent_blit/prw-blt-overwrite-source-read-rcs-forked
    Testcase: igt/gem_concurrent_blit/gtt-blt-overwrite-source-read-rcs-forked
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Tomas Elf <tomas.elf@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    7fd2d269
i915_reg.h 295 KB