* Signal sampling timer to stop if only engine events are enabled and
         * GPU went idle.
         */
-       pmu->timer_enabled = pmu_needs_timer(pmu, false);
+       pmu->unparked &= ~BIT(gt->info.id);
+       if (pmu->unparked == 0)
+               pmu->timer_enabled = pmu_needs_timer(pmu, false);
 
        spin_unlock_irq(&pmu->lock);
 }
        /*
         * Re-enable sampling timer when GPU goes active.
         */
-       __i915_pmu_maybe_start_timer(pmu);
+       if (pmu->unparked == 0)
+               __i915_pmu_maybe_start_timer(pmu);
+
+       pmu->unparked |= BIT(gt->info.id);
 
        spin_unlock_irq(&pmu->lock);
 }
         */
 
        for_each_gt(gt, i915, i) {
+               if (!(pmu->unparked & BIT(i)))
+                       continue;
+
                engines_sample(gt, period_ns);
 
                if (i == 0) /* FIXME */