• Ben Widawsky's avatar
    drm/i915: Get context early in execbuf · 41bde553
    Ben Widawsky authored
    We need to have the address space when reserving space for the objects.
    Since the address space and context are tied together, and reserve
    occurs before context switch (for good reason), we must lookup our
    context earlier in the process.
    
    This leaves some room for optimizations where we no longer need to use
    ctx_id in certain places. This will be addressed in a subsequent patch.
    
    Important tricky bit:
    Because slow relocations during execbuffer drop struct_mutex
    
    Perhaps it would be best to acquire the reference when we get the
    context, but I'll save that for another day (note I have written the
    patch before, and I found the changes required to be uglier than this).
    
    Note that since we currently access everything via context id, and not
    the data structure this is fine, though not desirable. The next change
    attempts to get the context only once via the context ID idr lookup, and
    as such, the following can happen:
    
    CTX-A is created, refcount = 1
    CTX-A execbuf, mutex dropped
    close IOCTL called on CTX-A, refcount = 0
    CTX-A resumes in execbuf.
    
    v2: Rebased on top of
    commit b6359918
    Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Date:   Wed Oct 30 15:44:16 2013 +0200
    
        drm/i915: add i915_get_reset_stats_ioctl
    
    v3: Rebased on top of
    commit 25b3dfc8
    Author: Mika Westerberg <mika.westerberg@linux.intel.com>
    Date:   Tue Nov 12 11:57:30 2013 +0200
    
    Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Date:   Tue Nov 26 16:14:33 2013 +0200
    
        drm/i915: check context reset stats before relocations
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    41bde553
i915_gem_context.c 22.4 KB