• Wanpeng Li's avatar
    sched/deadline: Fix the earliest_dl.next logic · 7d92de3a
    Wanpeng Li authored
    earliest_dl.next should cache deadline of the earliest ready task that
    is also enqueued in the pushable rbtree, as pull algorithm uses this
    information to find candidates for migration: if the earliest_dl.next
    deadline of source rq is earlier than the earliest_dl.curr deadline of
    destination rq, the task from the source rq can be pulled.
    
    However, current implementation only guarantees that earliest_dl.next is
    the deadline of the next ready task instead of the next pushable task;
    which will result in potentially holding both rqs' lock and find nothing
    to migrate because of affinity constraints. In addition, current logic
    doesn't update the next candidate for pushing in pick_next_task_dl(),
    even if the running task is never eligible.
    
    This patch fixes both problems by updating earliest_dl.next when
    pushable dl task is enqueued/dequeued, similar to what we already do for
    RT.
    Tested-by: default avatarLuca Abeni <luca.abeni@unitn.it>
    Signed-off-by: default avatarWanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarJuri Lelli <juri.lelli@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1449135730-27202-1-git-send-email-wanpeng.li@hotmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    7d92de3a
deadline.c 46 KB