Re: WARNING: kernel/sched/fair.c:3275 update_blocked_averages+0x628/0x660

From: Dietmar Eggemann
Date: Tue Jun 22 2021 - 10:38:27 EST


On 22/06/2021 09:50, Naresh Kamboju wrote:
> [Please ignore if it already reported]
>
> Regression found,
> The following kernel warning reported on Linux next 20210621 while booting
> arm64 Juno-r2 device. And also noticed a similar crash on an x86_64 machine.
>
> Crash log:
> -----------------
> [ 29.244230] ------------[ cut here ]------------
> [ 29.248861] cfs_rq->avg.load_avg || cfs_rq->avg.util_avg ||
> cfs_rq->avg.runnable_avg
> [ 29.248874] WARNING: CPU: 1 PID: 156 at kernel/sched/fair.c:3275
> update_blocked_averages+0x628/0x660
> [ 29.265784] Modules linked in: fuse
> [ 29.269282] CPU: 1 PID: 156 Comm: kworker/u12:2 Not tainted
> 5.13.0-rc7-next-20210621 #1
> [ 29.277305] Hardware name: ARM Juno development board (r2) (DT)
> [ 29.283241] Workqueue: 0x0 (rpciod)
> [ 29.286828] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO BTYPE=--)
> [ 29.292844] pc : update_blocked_averages+0x628/0x660
> [ 29.297817] lr : update_blocked_averages+0x628/0x660
> [ 29.302788] sp : ffff8000133fbb60
> [ 29.306103] x29: ffff8000133fbb60 x28: ffff00097ef382c0 x27: ffff00080090ca00
> [ 29.313264] x26: 00000006cacd5228 x25: 0000000000000000 x24: 00000000000000c0
> [ 29.313277] x23: 0000000000000000 x22: ffff8000125b3378 x21: 0000000000000000
> [ 29.313288] x20: ffff00097ef383c0 x19: ffff00080090cb40 x18: 0000000000000010
> [ 29.313299] x17: 6e6e75722e677661 x16: 3e2d71725f736663 x15: 207c7c206776615f
> [[0;32m OK [0m] Started udev [ 29.341880] x14: 6c6974752e677661
> x13: 6776615f656c6261 x12: 6e6e75722e677661
> Coldplug all Devices.[ 29.351892] x11: ffff8000126419b0 x10:
> ffff800012629970 x9 : ffff800010111bec
>
> [ 29.360858] x8 : 0000000000017fe8 x7 : c0000000ffffefff x6 : 0000000000000001
> [ 29.368171] x5 : 0000000000000001 x4 : 0000000000000000 x3 : 0000000000000027
> [ 29.375324] x2 : 0000000000000023 x1 : 0000000000000000 x0 : 0000000000000000
> [ 29.382477] Call trace:
> [ 29.384923] update_blocked_averages+0x628/0x660
> [ 29.389548] newidle_balance+0x208/0x478
> [ 29.393477] pick_next_task_fair+0x58/0x3b8
> [ 29.397666] __schedule+0x1c4/0x1250
> [ 29.401249] schedule+0x4c/0x100
> [ 29.404481] worker_thread+0xc0/0x428
> [ 29.408147] kthread+0x140/0x158
> [ 29.411380] ret_from_fork+0x10/0x18
> [ 29.414960] ---[ end trace 8349fb64d5c118de ]---

[ 1364.545625] cfs_rq->avg.load_avg
[ 1364.545641] WARNING: CPU: 5 PID: 35 at kernel/sched/fair.c:3282
update_blocked_averages+0x568/0x680
[ 1364.563465] Modules linked in:
[ 1364.569299] CPU: 5 PID: 35 Comm: migration/5 Not tainted
5.13.0-rc6-00078-g78a94255ceab-dirty #93
[ 1364.580958] Hardware name: ARM Juno development board (r0) (DT)
[ 1364.589488] Stopper: 0x0 <- 0x0
[ 1364.592638] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO BTYPE=--)
[ 1364.598657] pc : update_blocked_averages+0x568/0x680
[ 1364.603635] lr : update_blocked_averages+0x568/0x680
[ 1364.608611] sp : ffff80001259bbf0
[ 1364.611927] x29: ffff80001259bbf0 x28: ffff00097efb8dc0 x27:
ffff0008033ea400
[ 1364.619087] x26: 0000000000000005 x25: 0000013b4cca6cac x24:
ffff000804ba4200
[ 1364.626245] x23: 0000000000000000 x22: ffff00097efb96c0 x21:
0000000000000028
[ 1364.633403] x20: 0000000000000001 x19: ffff000804ba4340 x18:
fffffffffffe55e8
[ 1364.640561] x17: 0000000000000000 x16: 0000000000000000 x15:
0000000000000020
[ 1364.647719] x14: ffffffffffffffff x13: ffff800011f6cb68 x12:
000000000000040e
[ 1364.654877] x11: 000000000000015a x10: ffff800011fc6bd8 x9 :
fffffffffffe55e8
[ 1364.662035] x8 : ffff800011f6cb68 x7 : ffff800011fc4b68 x6 :
0000000000002070
[ 1364.669193] x5 : ffff00097efa6928 x4 : 0000000000000000 x3 :
0000000000000027
[ 1364.676350] x2 : 0000000000000000 x1 : 0000000000000000 x0 :
ffff000800226740
[ 1364.683508] Call trace:
[ 1364.685954] update_blocked_averages+0x568/0x680
[ 1364.690585] newidle_balance+0x200/0x460
[ 1364.694515] balance_fair+0x28/0x40
[ 1364.698009] __schedule+0x1118/0x1354
[ 1364.701683] schedule+0x74/0x10c
[ 1364.704918] smpboot_thread_fn+0xa4/0x280
[ 1364.708937] kthread+0x154/0x160
[ 1364.712173] ret_from_fork+0x10/0x30
[ 1364.715757] ---[ end trace d2e73a5dbd77eeb8 ]---


Was able to recreate this on Arm64 Juno on tip/sched/core after
splitting the SCHED_WARN_ON() in cfs_rq_is_decayed() from ("sched/pelt:
Check that *_avg are null when *_sum are"). This one didn't happen after
boot but after running some taskgroup related workloads.

Looks like it is `load_avg` related.

We kind of expected this. ("sched/pelt: Ensure that *_sum is always
synced with *_avg") only deals with util_avg and runnable_avg.

Looks like Vincent is coming up with a for load_avg:

https://lkml.kernel.org/r/CAKfTPtDrHv4OOfPvwOE2DMNoucXQJ=yvvEpTVKrXghSdKEnZcA@xxxxxxxxxxxxxx