FAILED: patch "[PATCH] sched/fair: Fix enqueue_task_fair() warning some more" failed to apply to 5.6-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From b34cb07dde7c2346dec73d053ce926aeaa087303 Mon Sep 17 00:00:00 2001
From: Phil Auld <[email protected]>
Date: Tue, 12 May 2020 09:52:22 -0400
Subject: [PATCH] sched/fair: Fix enqueue_task_fair() warning some more
sched/fair: Fix enqueue_task_fair warning some more
The recent patch, fe61468b2cb (sched/fair: Fix enqueue_task_fair warning) did not fully resolve the issues with the rq->tmp_alone_branch != &rq->leaf_cfs_rq_list warning in enqueue_task_fair. There is a case where the first for_each_sched_entity loop exits due to on_rq, having incompletely updated the list. In this case the second for_each_sched_entity loop can further modify se. The later code to fix up the list management fails to do what is needed because se does not point to the sched_entity which broke out of the first loop. The list is not fixed up because the throttled parent was already added back to the list by a task enqueue in a parallel child hierarchy.
Address this by calling list_add_leaf_cfs_rq if there are throttled parents while doing the second for_each_sched_entity loop.
kernel/sched/fair.c +7 -0
@@ -5479,6 +5479,13 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)/* end evaluation on encountering a throttled cfs_rq */ if (cfs_rq_throttled (cfs_rq)) goto enqueue_throttle; + +/* +* One parent has been throttled and cfs_rq removed from the +* list. Add it back to not break the leaf list. +*/ +if (throttled_hierarchy (cfs_rq)) +list_add_leaf_cfs_rq (cfs_rq); } enqueue_throttle:
Vincent Guittot
maintainerQuoted 6 lines · On Mon, 25 May 2020 at 16:42, <[email protected]> wrote:
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
This patch applies on top of
commit 6d4d22468dae ("sched/fair: Reorder enqueue/dequeue_task_fair path") commit 5ab297bab984 ("sched/fair: Fix reordering of enqueue/dequeue_task_fair()")
Quoted 54 lines
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
b34cb07dde7c2346dec73d053ce926aeaa087303Mon Sep 17 00:00:00 2001
From: Phil Auld <[email protected]>
Date: Tue, 12 May 2020 09:52:22 -0400
Subject: [PATCH] sched/fair: Fixenqueue_task_fair()warning some moresched/fair: Fix
enqueue_task_fairwarning some moreThe recent patch,
fe61468b2cb(sched/fair: Fixenqueue_task_fairwarning) did not fully resolve the issues with therq->tmp_alone_branch!=&rq->leaf_cfs_rq_listwarning inenqueue_task_fair. There is a case where the firstfor_each_sched_entityloop exits due toon_rq, having incompletely updated the list. In this case the secondfor_each_sched_entityloop can further modify se. The later code to fix up the list management fails to do what is needed because se does not point to thesched_entitywhich broke out of the first loop. The list is not fixed up because the throttled parent was already added back to the list by a task enqueue in a parallel child hierarchy.Address this by calling
list_add_leaf_cfs_rqif there are throttled parents while doing the secondfor_each_sched_entityloop.Fixes fe61468b2cb ("sched/fair: Fix enqueue_task_fair warning")Suggested-by Vincent Guittot <[email protected]>Signed-off-by Phil Auld <[email protected]>Signed-off-by Peter Zijlstra (Intel) <[email protected]>Reviewed-by Dietmar Eggemann <[email protected]>Reviewed-by Vincent Guittot <[email protected]>kernel/sched/fair.c +7
-0@@ -5479,6 +5479,13 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)/* end evaluation on encountering a throttled cfs_rq */ if (cfs_rq_throttled (cfs_rq)) goto enqueue_throttle; + +/* +* One parent has been throttled and cfs_rq removed from the +* list. Add it back to not break the leaf list. +*/ +if (throttled_hierarchy (cfs_rq)) +list_add_leaf_cfs_rq (cfs_rq); } enqueue_throttle:
[email protected]
maintainerQuoted 10 lines · Vincent Guittot
Quoted 6 lines · On Mon, 25 May 2020 at 16:42, <[email protected]> wrote:
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.This patch applies on top of
commit6d4d22468dae("sched/fair: Reorder enqueue/dequeue_task_fair path")
That applies, but:
Quoted 2 lines
commit
5ab297bab984("sched/fair: Fix reordering of enqueue/dequeue_task_fair()")
That one does not.
Can you make a backported patch series of these that I can apply easily?
thanks,
greg k-h
Vincent Guittot
maintainerQuoted 13 lines · On Mon, 25 May 2020 at 17:49, [email protected]…
Quoted 10 lines · Vincent Guittot
Quoted 6 lines · On Mon, 25 May 2020 at 16:42, <[email protected]> wrote:
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.This patch applies on top of
commit6d4d22468dae("sched/fair: Reorder enqueue/dequeue_task_fair path")
Quoted 8 lines
That applies, but:
Quoted 2 lines
commit
5ab297bab984("sched/fair: Fix reordering of enqueue/dequeue_task_fair()")That one does not.
Can you make a backported patch series of these that I can apply easily?
I tested the cherry-pick of the 2 commits above on top of v5.6.14 and there were applying without error. Should I use another tag ?
Quoted 4 lines
thanks,
greg k-h
Sasha Levin
maintainerQuoted 20 lines · Vincent Guittot
Quoted 18 lines · On Mon, 25 May 2020 at 17:49, [email protected]…
Quoted 10 lines · Vincent Guittot
Quoted 6 lines · On Mon, 25 May 2020 at 16:42, <[email protected]> wrote:
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.This patch applies on top of
commit6d4d22468dae("sched/fair: Reorder enqueue/dequeue_task_fair path")That applies, but:
Quoted 2 lines
commit
5ab297bab984("sched/fair: Fix reordering of enqueue/dequeue_task_fair()")
Quoted 6 lines
Quoted 3 lines
That one does not.
Can you make a backported patch series of these that I can apply easily?
I tested the cherry-pick of the 2 commits above on top of v5.6.14 and there were applying without error. Should I use another tag ?
That worked for me, I've queued it up.
Signature · 2 lines
Thanks, Sasha