scheduler fixes
Linus,
Please pull the latest sched-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-urgent-for-linus
HEAD: bced76aeaca03b45e3b4bdb868cada328e497847 sched: Fix lockup by limiting load-balance retries on lock-break
Thanks,
Ingo
------------------>
Fabio Estevam (1):
sched: Fix CONFIG_CGROUP_SCHED dependency
Hiroshi Shimamoto (1):
sched: Remove empty #ifdefs
Peter Zijlstra (1):
sched: Fix lockup by limiting load-balance retries on lock-break
init/Kconfig | 1 - kernel/sched/core.c | 7 ------- kernel/sched/fair.c | 10 +++++++--- 3 files changed, 7 insertions(+), 11 deletions(-)
init/Kconfig +0 -1
@@ -702,7 +702,6 @@ config CGROUP_PERF menuconfig CGROUP_SCHED bool "Group CPU scheduler" - depends on EXPERIMENTAL default n help This feature lets CPU scheduler recognize task groups and control CPU
kernel/sched/core.c +0 -7
@@ -7136,10 +7136,6 @@ void set_curr_task(int cpu, struct task_struct *p)#endif -#ifdef CONFIG_RT_GROUP_SCHED -#else /* !CONFIG_RT_GROUP_SCHED */ -#endif /* CONFIG_RT_GROUP_SCHED */ -#ifdef CONFIG_CGROUP_SCHED /* task_group_lock serializes the addition/removal of task groups */ static DEFINE_SPINLOCK (task_group_lock);
@@ -7248,9 +7244,6 @@ void sched_move_task(struct task_struct *tsk) }#endif /* CONFIG_CGROUP_SCHED */ -#ifdef CONFIG_FAIR_GROUP_SCHED -#endif -#if defined(CONFIG_RT_GROUP_SCHED ) || defined(CONFIG_CFS_BANDWIDTH )static unsigned long to_ratio (u64 period,u64 runtime) {
kernel/sched/fair.c +7 -3
@@ -3130,8 +3130,10 @@ task_hot(struct task_struct *p, u64 now, struct sched_domain *sd) }#define LBF_ALL_PINNED 0x01 -#define LBF_NEED_BREAK 0x02 -#define LBF_ABORT 0x04 +#define LBF_NEED_BREAK 0x02/* clears into HAD_BREAK */ +#define LBF_HAD_BREAK 0x04 +#define LBF_HAD_BREAKS 0x0C/* count HAD_BREAKs overflows into ABORT */ +#define LBF_ABORT 0x10/* * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
@@ -4508,7 +4510,9 @@ redo: goto out_balanced;if (lb_flags &LBF_NEED_BREAK ) { - lb_flags &= ~LBF_NEED_BREAK ; + lb_flags +=LBF_HAD_BREAK -LBF_NEED_BREAK ; +if (lb_flags &LBF_ABORT ) + goto out_balanced; goto redo; }