• Mika Kuoppala's avatar
    drm/i915: find guilty batch buffer on ring resets · aa60c664
    Mika Kuoppala authored
    After hang check timer has declared gpu to be hung,
    rings are reset. In ring reset, when clearing
    request list, do post mortem analysis to find out
    the guilty batch buffer.
    
    Select requests for further analysis by inspecting
    the completed sequence number which has been updated
    into the HWS page. If request was completed, it can't
    be related to the hang.
    
    For noncompleted requests mark the batch as guilty
    if the ring was not waiting and the ring head was
    stuck inside the buffer object or in the flush region
    right after the batch. For everything else, mark
    them as innocents.
    
    v2: Fixed a typo in commit message (Ville Syrjälä)
    
    v3: - more descriptive function parameters (Chris Wilson)
        - use masked head address when inspecting if request is in ring
        - s/hangcheck.last_action/hangcheck.action
        - added comment about unmasked head hitting batch_obj range
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
    Acked-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    aa60c664
i915_gem.c 115 KB