Quoting Tvrtko Ursulin (2020-07-13 11:19:58) > > On 11/07/2020 21:32, Chris Wilson wrote: > > We do not use the virtual engines for interrupts (they have physical > > components), but we do use them to decouple the fence signaling during > > submission. Currently, when we submit a completed request, we try to > > enable the interrupt handler for the virtual engine, but we never disarm > > it. A quick fix is then to mark the irq as enabled, and it will then > > remain enabled -- and this prevents us from waking the device and never > > letting it sleep again. > > > > Fixes: f8db4d051b5e ("drm/i915: Initialise breadcrumb lists on the virtual engine") > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Cc: <stable@xxxxxxxxxxxxxxx> # v5.5+ > > --- > > drivers/gpu/drm/i915/gt/intel_lrc.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > > index cd4262cc96e2..504e269bb166 100644 > > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > > @@ -5727,6 +5727,7 @@ intel_execlists_create_virtual(struct intel_engine_cs **siblings, > > intel_engine_init_active(&ve->base, ENGINE_VIRTUAL); > > intel_engine_init_breadcrumbs(&ve->base); > > intel_engine_init_execlists(&ve->base); > > + ve->base.breadcrumbs.irq_armed = true; > > Add a comment here saying this is a hack and why please. With that: "This is a lot simpler than splitting breadcrumbs, although we do need to do that. But that was becoming a very hairy patch." -Chris