aboutsummaryrefslogtreecommitdiff
path: root/kernel/sched/rt.c
diff options
context:
space:
mode:
authorJulia Cartwright <julia@ni.com>2018-01-15 13:09:37 -0600
committerJulia Cartwright <julia@ni.com>2018-01-15 13:09:37 -0600
commit223a1a424ccc1a22fa77500bb1bced246d5dd855 (patch)
tree35a62e7275ac840c7b20faa8cc40fe9798bcc950 /kernel/sched/rt.c
parent0c37397b6b8708f3cae24a8faeed2d1c84760892 (diff)
parent7bbc6ca4887794cc44b41412a35bdfbe0cbd1c50 (diff)
Merge tag 'v4.9.76' into v4.9-rt
This is the 4.9.76 stable release
Diffstat (limited to 'kernel/sched/rt.c')
-rw-r--r--kernel/sched/rt.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 340a0a5d435c..d361629c0f96 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -2023,8 +2023,9 @@ static void pull_rt_task(struct rq *this_rq)
bool resched = false;
struct task_struct *p;
struct rq *src_rq;
+ int rt_overload_count = rt_overloaded(this_rq);
- if (likely(!rt_overloaded(this_rq)))
+ if (likely(!rt_overload_count))
return;
/*
@@ -2033,6 +2034,11 @@ static void pull_rt_task(struct rq *this_rq)
*/
smp_rmb();
+ /* If we are the only overloaded CPU do nothing */
+ if (rt_overload_count == 1 &&
+ cpumask_test_cpu(this_rq->cpu, this_rq->rd->rto_mask))
+ return;
+
#ifdef HAVE_RT_PUSH_IPI
if (sched_feat(RT_PUSH_IPI)) {
tell_cpu_to_push(this_rq);