summaryrefslogtreecommitdiffstats
path: root/kernel/sched/sched.h
diff options
context:
space:
mode:
authorVineeth Pillai <viremana@linux.microsoft.com>2020-11-18 00:19:38 +0100
committerPeter Zijlstra <peterz@infradead.org>2021-05-12 11:43:29 +0200
commit8039e96fcc1de30d5bcaf05da9ca2de46a800826 (patch)
treebb88e1ba8c783a34c54be34b5c33ccc405fac444 /kernel/sched/sched.h
parentsched: Add core wide task selection and scheduling (diff)
downloadlinux-8039e96fcc1de30d5bcaf05da9ca2de46a800826.tar.xz
linux-8039e96fcc1de30d5bcaf05da9ca2de46a800826.zip
sched/fair: Fix forced idle sibling starvation corner case
If there is only one long running local task and the sibling is forced idle, it might not get a chance to run until a schedule event happens on any cpu in the core. So we check for this condition during a tick to see if a sibling is starved and then give it a chance to schedule. Signed-off-by: Vineeth Pillai <viremana@linux.microsoft.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Tested-by: Don Hiatt <dhiatt@digitalocean.com> Tested-by: Hongyu Ning <hongyu.ning@linux.intel.com> Tested-by: Vincent Guittot <vincent.guittot@linaro.org> Link: https://lkml.kernel.org/r/20210422123308.617407840@infradead.org
Diffstat (limited to '')
-rw-r--r--kernel/sched/sched.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index dd44a3127e9c..db555143380d 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1083,12 +1083,12 @@ struct rq {
unsigned int core_enabled;
unsigned int core_sched_seq;
struct rb_root core_tree;
- unsigned char core_forceidle;
/* shared state */
unsigned int core_task_seq;
unsigned int core_pick_seq;
unsigned long core_cookie;
+ unsigned char core_forceidle;
#endif
};