• Ben Widawsky's avatar
    drm/i915: Better reset handling for contexts · acce9ffa
    Ben Widawsky authored
    This patch adds to changes for contexts on reset:
    Sets last context to default - this will prevent the context switch
    happening after a reset. That switch is not possible because the
    rings are hung during reset and context switch requires reset. This
    behavior will need to be reworked in the future, but this is what we
    want for now.
    
    In the future, we'll also want to reset the guilty context to
    uninitialized. We should wait for ARB_Robustness related code to land
    for that.
    
    This is somewhat for paranoia.  Because we really don't know what the
    GPU was doing when it hung, or the state it was in (mid context write,
    for example), later restoring the context is a bad idea. By setting the
    flag to not initialized, the next load of that context will not restore
    the state, and thus on the subsequent switch away from the context will
    overwrite the old data.
    
    NOTE: This code needs a fixup when we actually have multiple VMs. The
    issue that can occur is inactive objects in a VM will need to be
    destroyed before the last context unref. This can now happen via the
    fake switch introduced in this patch (and it other ways in the future)
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    acce9ffa
i915_gem_context.c 20 KB