lkml.org 
[lkml]   [2018]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] Revert mm/vmstat.c: fix vmstat_update() preemption BUG
    On 2018-06-27 08:36:57 [-0400], Steven Rostedt wrote:
    > On Wed, Apr 11, 2018 at 09:07:30PM +0200, Sebastian Andrzej Siewior wrote:
    > >
    > > This already happens:
    > > - vmstat_shepherd() does get_online_cpus() and within this block it does
    > > queue_delayed_work_on(). So this has to wait until cpuhotplug
    > > completed before it can schedule something and then it won't schedule
    > > anything on the "off" CPU.
    >
    > But can't we have something like this happen: ?
    >
    > CPU0 CPU1 CPU2
    > ---- ---- ----
    > get_online_cpus()
    > queue_work(vmstat_update, cpu1)
    > wakeup(kworker/1)
    > High prio task running
    > put_online_cpus()
    > Shutdown CPU 1
    > migrate kworker/1
    > schedule kworker/1
    > (smp_processor_id() != 1)

    I don't get CPU1 doing in here. kworker/1 should not be migrated to
    begin with. The work item should be done before CPU2 shutdowns CPU1 (or
    0) because vmstat_cpu_down_prep() cancels the work while the CPUs goes
    down so it should not be migrated. Also, the work is enqueued while
    holding the CPU HP lock.

    Sebastian

    \
     
     \ /
      Last update: 2018-06-27 14:48    [W:4.303 / U:2.992 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site