lkml.org 
[lkml]   [2017]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 071/177] sched/deadline: Add missing update_rq_clock() in dl_task_timer()
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Wanpeng Li <wanpeng.li@hotmail.com>


    [ Upstream commit dcc3b5ffe1b32771c9a22e2c916fb94c4fcf5b79 ]

    The following warning can be triggered by hot-unplugging the CPU
    on which an active SCHED_DEADLINE task is running on:

    ------------[ cut here ]------------
    WARNING: CPU: 7 PID: 0 at kernel/sched/sched.h:833 replenish_dl_entity+0x71e/0xc40
    rq->clock_update_flags < RQCF_ACT_SKIP
    CPU: 7 PID: 0 Comm: swapper/7 Tainted: G B 4.11.0-rc1+ #24
    Hardware name: LENOVO ThinkCentre M8500t-N000/SHARKBAY, BIOS FBKTC1AUS 02/16/2016
    Call Trace:
    <IRQ>
    dump_stack+0x85/0xc4
    __warn+0x172/0x1b0
    warn_slowpath_fmt+0xb4/0xf0
    ? __warn+0x1b0/0x1b0
    ? debug_check_no_locks_freed+0x2c0/0x2c0
    ? cpudl_set+0x3d/0x2b0
    replenish_dl_entity+0x71e/0xc40
    enqueue_task_dl+0x2ea/0x12e0
    ? dl_task_timer+0x777/0x990
    ? __hrtimer_run_queues+0x270/0xa50
    dl_task_timer+0x316/0x990
    ? enqueue_task_dl+0x12e0/0x12e0
    ? enqueue_task_dl+0x12e0/0x12e0
    __hrtimer_run_queues+0x270/0xa50
    ? hrtimer_cancel+0x20/0x20
    ? hrtimer_interrupt+0x119/0x600
    hrtimer_interrupt+0x19c/0x600
    ? trace_hardirqs_off+0xd/0x10
    local_apic_timer_interrupt+0x74/0xe0
    smp_apic_timer_interrupt+0x76/0xa0
    apic_timer_interrupt+0x93/0xa0

    The DL task will be migrated to a suitable later deadline rq once the DL
    timer fires and currnet rq is offline. The rq clock of the new rq should
    be updated. This patch fixes it by updating the rq clock after holding
    the new rq's rq lock.

    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Juri 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/1488865888-15894-1-git-send-email-wanpeng.li@hotmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    kernel/sched/deadline.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/kernel/sched/deadline.c
    +++ b/kernel/sched/deadline.c
    @@ -638,6 +638,7 @@ static enum hrtimer_restart dl_task_time
    lockdep_unpin_lock(&rq->lock, rf.cookie);
    rq = dl_task_offline_migration(rq, p);
    rf.cookie = lockdep_pin_lock(&rq->lock);
    + update_rq_clock(rq);

    /*
    * Now that the task has been migrated to the new RQ and we

    \
     
     \ /
      Last update: 2017-12-18 17:01    [W:3.753 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site