if (i915_reset_failed(engine->i915))
                return true;
 
+       if (!intel_wakeref_active(&engine->wakeref))
+               return true;
+
        /* Waiting to drain ELSP? */
        if (READ_ONCE(engine->execlists.active)) {
                struct tasklet_struct *t = &engine->execlists.tasklet;
 
         * that all ELSP are drained i.e. we have processed the CSB,
         * before allowing ourselves to idle and calling intel_runtime_pm_put().
         */
-       GEM_BUG_ON(!engine->i915->gt.awake);
+       GEM_BUG_ON(!intel_wakeref_active(&engine->wakeref));
 
        /*
         * ELSQ note: the submit queue is not cleared after being submitted
 
        GEM_TRACE("%s awake?=%d, active=%x\n",
                  engine->name,
-                 !!engine->i915->gt.awake,
+                 !!intel_wakeref_active(&engine->wakeref),
                  engine->execlists.active);
 
        spin_lock_irqsave(&engine->timeline.lock, flags);