• Tejun Heo's avatar
    Revert "workqueue: make sure delayed work run in local cpu" · 041bd12e
    Tejun Heo authored
    This reverts commit 874bbfe6.
    
    Workqueue used to implicity guarantee that work items queued without
    explicit CPU specified are put on the local CPU.  Recent changes in
    timer broke the guarantee and led to vmstat breakage which was fixed
    by 176bed1d ("vmstat: explicitly schedule per-cpu work on the CPU
    we need it to run on").
    
    vmstat is the most likely to expose the issue and it's quite possible
    that there are other similar problems which are a lot more difficult
    to trigger.  As a preventive measure, 874bbfe6 ("workqueue: make
    sure delayed work run in local cpu") was applied to restore the local
    CPU guarnatee.  Unfortunately, the change exposed a bug in timer code
    which got fixed by 22b886dd ("timers: Use proper base migration in
    add_timer_on()").  Due to code restructuring, the commit couldn't be
    backported beyond certain point and stable kernels which only had
    874bbfe6 started crashing.
    
    The local CPU guarantee was accidental more than anything else and we
    want to get rid of it anyway.  As, with the vmstat case fixed,
    874bbfe6 is causing more problems than it's fixing, it has been
    decided to take the chance and officially break the guarantee by
    reverting the commit.  A debug feature will be added to force foreign
    CPU assignment to expose cases relying on the guarantee and fixes for
    the individual cases will be backported to stable as necessary.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Fixes: 874bbfe6 ("workqueue: make sure delayed work run in local cpu")
    Link: http://lkml.kernel.org/g/20160120211926.GJ10810@quack.suse.cz
    Cc: stable@vger.kernel.org
    Cc: Mike Galbraith <umgwanakikbuti@gmail.com>
    Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
    Cc: Daniel Bilik <daniel.bilik@neosystem.cz>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Shaohua Li <shli@fb.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Daniel Bilik <daniel.bilik@neosystem.cz>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Michal Hocko <mhocko@kernel.org>
    041bd12e
workqueue.c 150 KB