Explorar o código

sched: rt: dont stop the period timer when there are tasks wanting to run

So if the group ever gets throttled, it will never wake up again.

Reported-by: "Daniel K." <dk@uw.no>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Tested-by: Daniel K. <dk@uw.no>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Peter Zijlstra %!s(int64=17) %!d(string=hai) anos
pai
achega
8a8cde163e
Modificáronse 1 ficheiros con 2 adicións e 1 borrados
  1. 2 1
      kernel/sched_rt.c

+ 2 - 1
kernel/sched_rt.c

@@ -250,7 +250,8 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
 			if (rt_rq->rt_time || rt_rq->rt_nr_running)
 			if (rt_rq->rt_time || rt_rq->rt_nr_running)
 				idle = 0;
 				idle = 0;
 			spin_unlock(&rt_rq->rt_runtime_lock);
 			spin_unlock(&rt_rq->rt_runtime_lock);
-		}
+		} else if (rt_rq->rt_nr_running)
+			idle = 0;
 
 
 		if (enqueue)
 		if (enqueue)
 			sched_rt_rq_enqueue(rt_rq);
 			sched_rt_rq_enqueue(rt_rq);