diff options
Diffstat (limited to 'kernel/sched/rt.c')
-rw-r--r-- | kernel/sched/rt.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 1c4065575fa2..1999021042c7 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c | |||
@@ -538,6 +538,14 @@ static inline struct rt_bandwidth *sched_rt_bandwidth(struct rt_rq *rt_rq) | |||
538 | 538 | ||
539 | #endif /* CONFIG_RT_GROUP_SCHED */ | 539 | #endif /* CONFIG_RT_GROUP_SCHED */ |
540 | 540 | ||
541 | bool sched_rt_bandwidth_account(struct rt_rq *rt_rq) | ||
542 | { | ||
543 | struct rt_bandwidth *rt_b = sched_rt_bandwidth(rt_rq); | ||
544 | |||
545 | return (hrtimer_active(&rt_b->rt_period_timer) || | ||
546 | rt_rq->rt_time < rt_b->rt_runtime); | ||
547 | } | ||
548 | |||
541 | #ifdef CONFIG_SMP | 549 | #ifdef CONFIG_SMP |
542 | /* | 550 | /* |
543 | * We ran out of runtime, see if we can borrow some from our neighbours. | 551 | * We ran out of runtime, see if we can borrow some from our neighbours. |
@@ -1738,7 +1746,7 @@ static void task_woken_rt(struct rq *rq, struct task_struct *p) | |||
1738 | !test_tsk_need_resched(rq->curr) && | 1746 | !test_tsk_need_resched(rq->curr) && |
1739 | has_pushable_tasks(rq) && | 1747 | has_pushable_tasks(rq) && |
1740 | p->nr_cpus_allowed > 1 && | 1748 | p->nr_cpus_allowed > 1 && |
1741 | rt_task(rq->curr) && | 1749 | (dl_task(rq->curr) || rt_task(rq->curr)) && |
1742 | (rq->curr->nr_cpus_allowed < 2 || | 1750 | (rq->curr->nr_cpus_allowed < 2 || |
1743 | rq->curr->prio <= p->prio)) | 1751 | rq->curr->prio <= p->prio)) |
1744 | push_rt_tasks(rq); | 1752 | push_rt_tasks(rq); |