• Chris Wilson's avatar
    drm/i915: Do not add an interrupt for a context switch · c0321e2c
    Chris Wilson authored
    We use the request to ensure we hold a reference to the context for the
    duration that it remains in use by the ring. Each request only holds a
    reference to the current context, hence we emit a request after
    switching contexts with the final reference to the old context. However,
    the extra interrupt caused by that request is not useful (no timing
    critical function will wait for the context object), instead the overhead
    of servicing the IRQ shows up in some (lightweight) benchmarks. In order
    to keep the useful property of using the request to manage the context
    lifetime, we want to add a dummy request that is associated with the
    interrupt from the subsequent real request following the batch.
    
    The extra interrupt was added as a side-effect of using
    i915_add_request() in
    
    commit 112522f6
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Thu May 2 16:48:07 2013 +0300
    
        drm/i915: put context upon switching
    
    v2: Daniel convinced me that the request here was solely for context
    lifetime tracking and that we have the active ref to keep the object
    alive whilst the MI_SET_CONTEXT. So the only concern then is which
    context should get the blame for MI_SET_CONTEXT failing. The old scheme
    added a request for the old context so that any hang upto and including
    the switch away would mark the old context as guilty. Now any hang here
    implicates the new context. However since we have already gone through a
    complete flush with the last context in its last request, and all that
    lies in no-man's-land is an invalidate flush and the MI_SET_CONTEXT, we
    should be safe in not unduly placing blame on the new context.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Ben Widawsky <ben@bwidawsk.net>
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    c0321e2c
i915_gem.c 122 KB