• C
    drm/i915/execlists: Kick start request processing after a reset · 523e7c92
    Chris Wilson 提交于
    During a reset, we may skip over completed requests and lost
    context-switch interrupts. Following the reset, we may then may end up
    with no active requests in the ELSP (and so do not resubmit to restart
    the engine), but have a queue of requests ready for execution. This is
    unlikely, it requires the last request to complete after the hang is
    detected, but not impossible. The outcome of this is that the engine
    stalls, possibly leading to full ring and indefinite wait under
    struct_mutex, eventually leading to a full driver hang.
    
    Alternatively, we can solve this by unsubmitting the incomplete requests
    and just kickstarting the tasklet. Michał has patches for that, which I
    initially disliked due to the extra complexity, but the complexity of
    this "simple" restart is growing...
    Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Cc: Michał Winiarski <michal.winiarski@intel.com>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170916204414.32762-1-chris@chris-wilson.co.ukReviewed-by: NMichał Winiarski <michal.winiarski@intel.com>
    523e7c92
intel_lrc.c 66.2 KB