Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / kernel / sched / core.c
index 80b60ca..d82e2f6 100644 (file)
@@ -811,7 +811,7 @@ static inline unsigned int uclamp_bucket_base_value(unsigned int clamp_value)
        return UCLAMP_BUCKET_DELTA * uclamp_bucket_id(clamp_value);
 }
 
-static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
+static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
 {
        if (clamp_id == UCLAMP_MIN)
                return 0;
@@ -854,7 +854,7 @@ static inline void uclamp_idle_reset(struct rq *rq, enum uclamp_id clamp_id,
 }
 
 static inline
-enum uclamp_id uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
+unsigned int uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
                                   unsigned int clamp_value)
 {
        struct uclamp_bucket *bucket = rq->uclamp[clamp_id].bucket;
@@ -919,7 +919,7 @@ uclamp_eff_get(struct task_struct *p, enum uclamp_id clamp_id)
        return uc_req;
 }
 
-enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
+unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
 {
        struct uclamp_se uc_eff;
 
@@ -3918,13 +3918,15 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
                    prev->sched_class == &fair_sched_class) &&
                   rq->nr_running == rq->cfs.h_nr_running)) {
 
-               p = fair_sched_class.pick_next_task(rq, prev, rf);
+               p = pick_next_task_fair(rq, prev, rf);
                if (unlikely(p == RETRY_TASK))
                        goto restart;
 
                /* Assumes fair_sched_class->next == idle_sched_class */
-               if (unlikely(!p))
-                       p = idle_sched_class.pick_next_task(rq, prev, rf);
+               if (!p) {
+                       put_prev_task(rq, prev);
+                       p = pick_next_task_idle(rq);
+               }
 
                return p;
        }
@@ -3948,7 +3950,7 @@ restart:
        put_prev_task(rq, prev);
 
        for_each_class(class) {
-               p = class->pick_next_task(rq, NULL, NULL);
+               p = class->pick_next_task(rq);
                if (p)
                        return p;
        }
@@ -6217,7 +6219,7 @@ static struct task_struct *__pick_migrate_task(struct rq *rq)
        struct task_struct *next;
 
        for_each_class(class) {
-               next = class->pick_next_task(rq, NULL, NULL);
+               next = class->pick_next_task(rq);
                if (next) {
                        next->sched_class->put_prev_task(rq, next);
                        return next;