• Ben Widawsky's avatar
    drm/i915: relative_constants_mode race fix · e2971bda
    Ben Widawsky authored
    dev_priv keeps track of the current addressing mode that gets set at
    execbuffer time. Unfortunately the existing code was doing this before
    acquiring struct_mutex which leaves a race with another thread also
    doing an execbuffer. If that wasn't bad enough, relocate_slow drops
    struct_mutex which opens a much more likely error where another thread
    comes in and modifies the state while relocate_slow is being slow.
    
    The solution here is to just defer setting this state until we
    absolutely need it, and we know we'll have struct_mutex for the
    remainder of our code path.
    
    v2: Keith noticed a bug in the original patch.
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
    e2971bda
i915_gem_execbuffer.c 35.8 KB