Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
sched: rt-bandwidth accounting fix
sched: fix sched_rt_rq_enqueue() resched idle

+7 -6
+7 -6
kernel/sched_rt.c
··· 199 199 200 200 static inline void sched_rt_rq_enqueue(struct rt_rq *rt_rq) 201 201 { 202 + if (rt_rq->rt_nr_running) 203 + resched_task(rq_of_rt_rq(rt_rq)->curr); 202 204 } 203 205 204 206 static inline void sched_rt_rq_dequeue(struct rt_rq *rt_rq) ··· 440 438 { 441 439 u64 runtime = sched_rt_runtime(rt_rq); 442 440 443 - if (runtime == RUNTIME_INF) 444 - return 0; 445 - 446 441 if (rt_rq->rt_throttled) 447 442 return rt_rq_throttled(rt_rq); 448 443 ··· 490 491 rt_rq = rt_rq_of_se(rt_se); 491 492 492 493 spin_lock(&rt_rq->rt_runtime_lock); 493 - rt_rq->rt_time += delta_exec; 494 - if (sched_rt_runtime_exceeded(rt_rq)) 495 - resched_task(curr); 494 + if (sched_rt_runtime(rt_rq) != RUNTIME_INF) { 495 + rt_rq->rt_time += delta_exec; 496 + if (sched_rt_runtime_exceeded(rt_rq)) 497 + resched_task(curr); 498 + } 496 499 spin_unlock(&rt_rq->rt_runtime_lock); 497 500 } 498 501 }