diff options
Diffstat (limited to 'kernel/sched/core.c')
| -rw-r--r-- | kernel/sched/core.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 80b60ca7767f..d82e2f6ac41d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -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;  | 
