From 89288d853b2a7a221e24bdf4286b16359a5ee954 Mon Sep 17 00:00:00 2001
From: Srinath Sridharan <srinathsr@google.com>
Date: Wed, 13 Jul 2016 17:45:49 -0700
Subject: [PATCH] sched/rt: Avoid moving rt task if destination CPU does not
run low priority task.
bug: 29512132
bug: 30115868
Change-Id: Id18083402dfe2324f86c34a4e5d32fb7e0d11d04
---
kernel/sched/rt.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 684819921c93..24ad9f1deb83 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -1395,7 +1395,12 @@ select_task_rq_rt(struct task_struct *p, int cpu, int sd_flag, int flags)
curr->prio <= p->prio)) {
int target = find_lowest_rq(p);
- if (target != -1)
+ /*
+ * Possible race. Don't bother moving it if the
+ * destination CPU is not running a lower priority task.
+ */
+ if (target != -1 &&
+ p->prio < cpu_rq(target)->rt.highest_prio.curr)
cpu = target;
}
rcu_read_unlock();
--
GitLab