static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
 {
-       int i, idle = 1;
+       int i, idle = 1, throttled = 0;
        const struct cpumask *span;
 
-       if (!rt_bandwidth_enabled() || rt_b->rt_runtime == RUNTIME_INF)
-               return 1;
-
        span = sched_rt_period_mask();
        for_each_cpu(i, span) {
                int enqueue = 0;
                        if (!rt_rq_throttled(rt_rq))
                                enqueue = 1;
                }
+               if (rt_rq->rt_throttled)
+                       throttled = 1;
 
                if (enqueue)
                        sched_rt_rq_enqueue(rt_rq);
                raw_spin_unlock(&rq->lock);
        }
 
+       if (!throttled && (!rt_bandwidth_enabled() || rt_b->rt_runtime == RUNTIME_INF))
+               return 1;
+
        return idle;
 }
 
        if (unlikely((s64)delta_exec < 0))
                delta_exec = 0;
 
-       schedstat_set(curr->se.statistics.exec_max, max(curr->se.statistics.exec_max, delta_exec));
+       schedstat_set(curr->se.statistics.exec_max,
+                     max(curr->se.statistics.exec_max, delta_exec));
 
        curr->se.sum_exec_runtime += delta_exec;
        account_group_exec_runtime(curr, delta_exec);