• Ben Widawsky's avatar
    drm/i915: Capture current context on error · 8c123e54
    Ben Widawsky authored
    On error, this represents the state of the currently running context at
    the time it was loaded.
    
    Unfortunately, since we're hung and can't switch out the context this
    may not tell us too much about the most current state of the context,
    but does give clues about what has happened since loading.
    
    Thanks to recent doc updates, we have a little more confidence regarding
    what is actually in this memory, and perhaps it will help us gain more
    insight into certain bugs. AFAICT, the most interesting info is in the
    first page. To save space, we only capture the first page. In the
    future, we might want to dump more.
    
    Sample of the relevant part of error state:
    render ring --- HW Context = 0x01b20000
    [0000] 00000000 1100105f 00002028 ffff0880
    [0010] 0000209c feff4040 000020c0 efdf0080
    [0020] 00002178 00000001 0000217c 00145855
    [0030] 00002310 00000000 00002314 00000000
    
    v2: Move error collection to the ring error code
    Change format of dump to not confuse intel_error_decode (Chris)
    Put the context error object with the others (Chris)
    Don't search bound_list instead of active_list (chris)
    
    v3: extract and flatten context recording (daniel)
    checkpatch related fixes for the copypasta in debugfs
    
    v4: bug in v3 (Daniel)
    -       if ((ring->id == RCS) && error->ccid)
    +       if ((ring->id != RCS) || !error->ccid)
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=55845
    Reviewed-by (v2): Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    [danvet: Bikeshed away the redudant parenthese around ring->id != RCS]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    8c123e54
i915_drv.h 58.6 KB