On Sat, 29 Sep 2018 at 01:36, Dietmar Eggemann <dietmar.eggem...@arm.com> wrote: > > On 09/28/2018 06:10 PM, Steve Muckle wrote: > > On 09/27/2018 05:43 PM, Wanpeng Li wrote: > >>>> On your CPU4: > >>>> scheduler_ipi() > >>>> -> sched_ttwu_pending() > >>>> -> ttwu_do_activate() => p->sched_remote_wakeup should be > >>>> false, so ENQUEUE_WAKEUP is set, ENQUEUE_MIGRATED is not > >>>> -> ttwu_activate() > >>>> -> activate_task() > >>>> -> enqueue_task() > >>>> -> enqueue_task_fair() > >>>> -> enqueue_entity() > >>>> bool renorm = !(flags & > >>>> ENQUEUE_WAKEUP) || (flags & ENQUEUE_MIGRATE) > >>>> so renorm is false in enqueue_entity(), why you mentioned that the > >>>> cfs_rq->min_vruntime is still added to the se->vruntime in > >>>> enqueue_task_fair()? > >>> > >>> Maybe this is a misunderstanding on my side but didn't you asked me to > >>> '... Could you point out when the fair rq's min_vruntime is added to the > >>> task's vruntime in your *later* scenario? ...' > >> > >> Yeah, if the calltrace above and my analysis is correct, then the fair > >> rq's min_vruntime will not be added to the task's vruntime in your > >> *later* scenario, which means that your patch is not necessary. > > > > In the scenario I observed, the task is not waking - it is running and > > being deboosted from priority inheritance, transitioning from RT to CFS. > > > > Dietmar and I both were able to reproduce the issue with the testcase I > > posted earlier in this thread. > > Correct, and with the same testcase I got this call stack in this scenario: > > [ 35.588509] CPU: 1 PID: 2926 Comm: fair_task Not tainted > 4.18.0-rc6-00052-g11b7dafa2edb-dirty #5 > [ 35.597217] Hardware name: ARM Juno development board (r0) (DT) > [ 35.603080] Call trace: > [ 35.605509] dump_backtrace+0x0/0x168 > [ 35.609138] show_stack+0x24/0x30 > [ 35.612424] dump_stack+0xac/0xe4 > [ 35.615710] enqueue_task_fair+0xae0/0x11c0 > [ 35.619854] rt_mutex_setprio+0x5a0/0x628 > [ 35.623827] mark_wakeup_next_waiter+0x7c/0xc8 > [ 35.628228] __rt_mutex_futex_unlock+0x30/0x50 > [ 35.632630] do_futex+0x74c/0xb28 > [ 35.635912] sys_futex+0x118/0x198 > [ 35.639280] el0_svc_naked+0x30/0x34
Thanks for pointing out. :) Regards, Wanpeng Li