[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected. No action required from the submitter.
The upstream commit SHA1 provided is correct: 76f970ce51c80f625eb6ddbb24e9cb51b977b598
WARNING: Author mismatch between patch and upstream commit: Backport author: Hagar Hemdanhagarhem@amazon.com Commit author: Dietmar Eggemanndietmar.eggemann@arm.com
Status in newer kernel trees: 6.13.y | Not found 6.12.y | Not found
Note: The patch differs from the upstream commit: --- 1: 76f970ce51c80 ! 1: 03098b8360be3 Revert "sched/core: Reduce cost of sched_move_task when config autogroup" @@ ## Metadata ## -Author: Dietmar Eggemann dietmar.eggemann@arm.com +Author: Hagar Hemdan hagarhem@amazon.com
## Commit message ## Revert "sched/core: Reduce cost of sched_move_task when config autogroup"
+ commit 76f970ce51c80f625eb6ddbb24e9cb51b977b598 upstream. + This reverts commit eff6c8ce8d4d7faef75f66614dd20bb50595d261.
Hazem reported a 30% drop in UnixBench spawn test with commit @@ Commit message Tested-by: Hagar Hemdan hagarhem@amazon.com Cc: Linus Torvalds torvalds@linux-foundation.org Link: https://lore.kernel.org/r/20250314151345.275739-1-dietmar.eggemann@arm.com + [Hagar: clean revert of eff6c8ce8dd7 to make it work on 6.6] + Signed-off-by: Hagar Hemdan hagarhem@amazon.com
## kernel/sched/core.c ## @@ kernel/sched/core.c: void sched_release_group(struct task_group *tg) @@ kernel/sched/core.c: static struct task_group *sched_get_task_group(struct task_
#ifdef CONFIG_FAIR_GROUP_SCHED if (tsk->sched_class->task_change_group) -@@ kernel/sched/core.c: void sched_move_task(struct task_struct *tsk, bool for_autogroup) +@@ kernel/sched/core.c: void sched_move_task(struct task_struct *tsk) { int queued, running, queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK; - struct task_group *group; + struct rq_flags rf; struct rq *rq;
- CLASS(task_rq_lock, rq_guard)(tsk); - rq = rq_guard.rq; - + rq = task_rq_lock(tsk, &rf); - /* - * Esp. with SCHED_AUTOGROUP enabled it is possible to get superfluous - * group changes. - */ - group = sched_get_task_group(tsk); - if (group == tsk->sched_task_group) -- return; +- goto unlock; - update_rq_clock(rq);
- running = task_current_donor(rq, tsk); -@@ kernel/sched/core.c: void sched_move_task(struct task_struct *tsk, bool for_autogroup) + running = task_current(rq, tsk); +@@ kernel/sched/core.c: void sched_move_task(struct task_struct *tsk) if (running) put_prev_task(rq, tsk);
- sched_change_group(tsk, group); + sched_change_group(tsk); - if (!for_autogroup) - scx_cgroup_move_task(tsk); + + if (queued) + enqueue_task(rq, tsk, queue_flags); +@@ kernel/sched/core.c: void sched_move_task(struct task_struct *tsk) + resched_curr(rq); + } + +-unlock: + task_rq_unlock(rq, tsk, &rf); + }
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.6.y | Success | Success |