diff options
Diffstat (limited to 'kernel/sched/deadline.c')
| -rw-r--r-- | kernel/sched/deadline.c | 25 | 
1 files changed, 4 insertions, 21 deletions
| diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index e5db8c6feebd..b52092f2636d 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -570,24 +570,7 @@ void init_dl_task_timer(struct sched_dl_entity *dl_se)  static  int dl_runtime_exceeded(struct rq *rq, struct sched_dl_entity *dl_se)  { -	int dmiss = dl_time_before(dl_se->deadline, rq_clock(rq)); -	int rorun = dl_se->runtime <= 0; - -	if (!rorun && !dmiss) -		return 0; - -	/* -	 * If we are beyond our current deadline and we are still -	 * executing, then we have already used some of the runtime of -	 * the next instance. Thus, if we do not account that, we are -	 * stealing bandwidth from the system at each deadline miss! -	 */ -	if (dmiss) { -		dl_se->runtime = rorun ? dl_se->runtime : 0; -		dl_se->runtime -= rq_clock(rq) - dl_se->deadline; -	} - -	return 1; +	return (dl_se->runtime <= 0);  }  extern bool sched_rt_bandwidth_account(struct rt_rq *rt_rq); @@ -826,10 +809,10 @@ enqueue_dl_entity(struct sched_dl_entity *dl_se,  	 * parameters of the task might need updating. Otherwise,  	 * we want a replenishment of its runtime.  	 */ -	if (!dl_se->dl_new && flags & ENQUEUE_REPLENISH) -		replenish_dl_entity(dl_se, pi_se); -	else +	if (dl_se->dl_new || flags & ENQUEUE_WAKEUP)  		update_dl_entity(dl_se, pi_se); +	else if (flags & ENQUEUE_REPLENISH) +		replenish_dl_entity(dl_se, pi_se);  	__enqueue_dl_entity(dl_se);  } | 
