• C
    drm/i915/guc: Always enable the breadcrumbs irq · bcbd5c33
    Chris Wilson 提交于
    The execlists emulation on top of the GuC (used for scheduling and
    preemption) depends on the MI_USER_INTERRUPT for its notifications and
    tasklet action. As we always employ the irq, there is no advantage in
    ever disabling it while we are using the GuC, so allow us to arm the
    breadcrumb irq when enabling GuC submission and disarm upon disabling.
    The impact should be lessened by the delayed irq disabling we do (we
    only disable after receiving an interrupt for which no one was wanting),
    but allowing guc to explicitly manage the irq in relation to itself is
    simpler and prevents an issue with losing an interrupt for preemption
    as it is not coupled to an active request.
    
    Internally, we add a reference counter (breadcrumbs.irq_enabled) as a
    simple mechanism to allow GuC to keep the breadcrumb irq enabled. To
    improve upon always enabling the irq while guc is selected, we need
    to hook into the parking facility of intel_engines so that we only enable
    the breadcrumbs while the GT is active (one step better would be to
    individually park/unpark each engine).
    
    In effect, this means that we keep the breadcrumb irq always enabled for
    the entire duration the guc is busy, whereas before we would try to
    switch it off whenever we idled for more than interrupt with no
    associated waiters. The difference *should* be negligible in practice!
    
    v2: Stop abusing fence signaling (and its auxiliary data structures) to
    enable the breadcrumbs irqs.
    Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Michał Winiarski <michal.winiarski@intel.com>,
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>,
    Link: https://patchwork.freedesktop.org/patch/msgid/20171025143943.7661-3-chris@chris-wilson.co.uk
    bcbd5c33
intel_ringbuffer.h 28.8 KB