+9
−13
Loading
stable inclusion from stable-v6.6.54 commit 5a4f8de92dd7ddaa7ce33aa804cbad254b844b8f category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/IAZ3K2 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5a4f8de92dd7ddaa7ce33aa804cbad254b844b8f -------------------------------- [ Upstream commit faa42d29419def58d3c3e5b14ad4037f0af3b496 ] Consider the following cgroup: root | ------------------------ | | normal_cgroup idle_cgroup | | SCHED_IDLE task_A SCHED_NORMAL task_B According to the cgroup hierarchy, A should preempt B. But current check_preempt_wakeup_fair() treats cgroup se and task separately, so B will preempt A unexpectedly. Unify the wakeup logic by {c,p}se_is_idle only. This makes SCHED_IDLE of a task a relative policy that is effective only within its own cgroup, similar to the behavior of NICE. Also fix se_is_idle() definition when !CONFIG_FAIR_GROUP_SCHED. Fixes: 30400039 ("sched: Cgroup SCHED_IDLE support") Signed-off-by:Tianchen Ding <dtcccc@linux.alibaba.com> Signed-off-by:
Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by:
Josh Don <joshdon@google.com> Reviewed-by:
Vincent Guittot <vincent.guittot@linaro.org> Link: https://lkml.kernel.org/r/20240626023505.1332596-1-dtcccc@linux.alibaba.com Signed-off-by:
Sasha Levin <sashal@kernel.org> Conflicts: kernel/sched/fair.c Signed-off-by:
Wen Zhiwei <wenzhiwei@kylinos.cn>