]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - kernel/sched/rt.c
Merge tag 'kbuild-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
[linux.git] / kernel / sched / rt.c
index 9b8adc01be3da83e153a45713e4dc362412d277a..e591d40fd645e451e79946fc9801ee24e72ef68e 100644 (file)
@@ -1515,13 +1515,16 @@ static void check_preempt_curr_rt(struct rq *rq, struct task_struct *p, int flag
 #endif
 }
 
-static inline void set_next_task_rt(struct rq *rq, struct task_struct *p)
+static inline void set_next_task_rt(struct rq *rq, struct task_struct *p, bool first)
 {
        p->se.exec_start = rq_clock_task(rq);
 
        /* The running task is never eligible for pushing */
        dequeue_pushable_task(rq, p);
 
+       if (!first)
+               return;
+
        /*
         * If prev task was rt, put_prev_task() has already updated the
         * utilization. We only care of the case where we start to schedule a
@@ -1564,18 +1567,15 @@ static struct task_struct *_pick_next_task_rt(struct rq *rq)
        return rt_task_of(rt_se);
 }
 
-static struct task_struct *
-pick_next_task_rt(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
+static struct task_struct *pick_next_task_rt(struct rq *rq)
 {
        struct task_struct *p;
 
-       WARN_ON_ONCE(prev || rf);
-
        if (!sched_rt_runnable(rq))
                return NULL;
 
        p = _pick_next_task_rt(rq);
-       set_next_task_rt(rq, p);
+       set_next_task_rt(rq, p, true);
        return p;
 }