• Chris Wilson's avatar
    drm/i915: Signal first fence from irq handler if complete · 56299fb7
    Chris Wilson authored
    As execlists and other non-semaphore multi-engine devices coordinate
    between engines using interrupts, we can shave off a few 10s of
    microsecond of scheduling latency by doing the fence signaling from the
    interrupt as opposed to a RT kthread. (Realistically the delay adds
    about 1% to an individual cross-engine workload.) We only signal the
    first fence in order to limit the amount of work we move into the
    interrupt handler. We also have to remember that our breadcrumbs may be
    unordered with respect to the interrupt and so we still require the
    waiter process to perform some heavyweight coherency fixups, as well as
    traversing the tree of waiters.
    
    v2: No need for early exit in irq handler - it breaks the flow between
    patches and prevents the tracepoint
    v3: Restore rcu hold across irq signaling of request
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170227205850.2828-2-chris@chris-wilson.co.uk
    56299fb7
intel_ringbuffer.h 22.3 KB