diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 904dd85345973ea9e9b7306adaa1d1de62e3534c..11b53d9056c84851e840693c55972fde25e9fea4 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -906,16 +906,14 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun) span = sched_rt_period_mask(); #ifdef CONFIG_RT_GROUP_SCHED /* - * FIXME: isolated CPUs should really leave the root task group, - * whether they are isolcpus or were isolated via cpusets, lest - * the timer run on a CPU which does not service all runqueues, - * potentially leaving other CPUs indefinitely throttled. If - * isolation is really required, the user will turn the throttle - * off to kill the perturbations it causes anyway. Meanwhile, - * this maintains functionality for boot and/or troubleshooting. + * When the tasks in the task_group run on either isolated + * CPUs or non-isolated CPUs, whether they are isolcpus or + * were isolated via cpusets, check all the online rt_rq + * to lest the timer run on a CPU which does not service + * all runqueues, potentially leaving other CPUs indefinitely + * throttled. */ - if (rt_b == &root_task_group.rt_bandwidth) - span = cpu_online_mask; + span = cpu_online_mask; #endif for_each_cpu(i, span) { int enqueue = 0;