diff options
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 9d6fb731559b..2368a0d882e3 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -1625,7 +1625,10 @@ out_activate: | |||
1625 | 1625 | ||
1626 | out_running: | 1626 | out_running: |
1627 | p->state = TASK_RUNNING; | 1627 | p->state = TASK_RUNNING; |
1628 | wakeup_balance_rt(rq, p); | 1628 | #ifdef CONFIG_SMP |
1629 | if (p->sched_class->task_wake_up) | ||
1630 | p->sched_class->task_wake_up(rq, p); | ||
1631 | #endif | ||
1629 | out: | 1632 | out: |
1630 | task_rq_unlock(rq, &flags); | 1633 | task_rq_unlock(rq, &flags); |
1631 | 1634 | ||
@@ -1748,7 +1751,10 @@ void fastcall wake_up_new_task(struct task_struct *p, unsigned long clone_flags) | |||
1748 | inc_nr_running(p, rq); | 1751 | inc_nr_running(p, rq); |
1749 | } | 1752 | } |
1750 | check_preempt_curr(rq, p); | 1753 | check_preempt_curr(rq, p); |
1751 | wakeup_balance_rt(rq, p); | 1754 | #ifdef CONFIG_SMP |
1755 | if (p->sched_class->task_wake_up) | ||
1756 | p->sched_class->task_wake_up(rq, p); | ||
1757 | #endif | ||
1752 | task_rq_unlock(rq, &flags); | 1758 | task_rq_unlock(rq, &flags); |
1753 | } | 1759 | } |
1754 | 1760 | ||
@@ -1869,7 +1875,10 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) | |||
1869 | prev_state = prev->state; | 1875 | prev_state = prev->state; |
1870 | finish_arch_switch(prev); | 1876 | finish_arch_switch(prev); |
1871 | finish_lock_switch(rq, prev); | 1877 | finish_lock_switch(rq, prev); |
1872 | schedule_tail_balance_rt(rq); | 1878 | #ifdef CONFIG_SMP |
1879 | if (current->sched_class->post_schedule) | ||
1880 | current->sched_class->post_schedule(rq); | ||
1881 | #endif | ||
1873 | 1882 | ||
1874 | fire_sched_in_preempt_notifiers(current); | 1883 | fire_sched_in_preempt_notifiers(current); |
1875 | if (mm) | 1884 | if (mm) |
@@ -3638,7 +3647,10 @@ need_resched_nonpreemptible: | |||
3638 | switch_count = &prev->nvcsw; | 3647 | switch_count = &prev->nvcsw; |
3639 | } | 3648 | } |
3640 | 3649 | ||
3641 | schedule_balance_rt(rq, prev); | 3650 | #ifdef CONFIG_SMP |
3651 | if (prev->sched_class->pre_schedule) | ||
3652 | prev->sched_class->pre_schedule(rq, prev); | ||
3653 | #endif | ||
3642 | 3654 | ||
3643 | if (unlikely(!rq->nr_running)) | 3655 | if (unlikely(!rq->nr_running)) |
3644 | idle_balance(cpu, rq); | 3656 | idle_balance(cpu, rq); |