aboutsummaryrefslogtreecommitdiff
path: root/kernel/sched
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/rt.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index fb7892646..692fb1e77 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -2290,6 +2290,16 @@ static struct rq *find_lock_lowest_rq_mtk(struct task_struct *task, struct rq *r
lowest_rq = cpu_rq(cpu);
+ if (lowest_rq->rt.highest_prio.curr <= task->prio) {
+ /*
+ * Target rq has tasks of equal or higher priority,
+ * retrying does not release any lock and is unlikely
+ * to yield a different result.
+ */
+ lowest_rq = NULL;
+ break;
+ }
+
/* if the prio of this runqueue changed, try again */
if (double_lock_balance(rq, lowest_rq)) {
/*