• F
    nohz: Use IPI implicit full barrier against rq->nr_running r/w · 3882ec64
    Frederic Weisbecker 提交于
    A full dynticks CPU is allowed to stop its tick when a single task runs.
    Meanwhile when a new task gets enqueued, the CPU must be notified so that
    it can restart its tick to maintain local fairness and other accounting
    details.
    
    This notification is performed by way of an IPI. Then when the target
    receives the IPI, we expect it to see the new value of rq->nr_running.
    
    Hence the following ordering scenario:
    
       CPU 0                   CPU 1
    
       write rq->running       get IPI
       smp_wmb()               smp_rmb()
       send IPI                read rq->nr_running
    
    But Paul Mckenney says that nowadays IPIs imply a full barrier on
    all architectures. So we can safely remove this pair and rely on the
    implicit barriers that come along IPI send/receive. Lets
    just comment on this new assumption.
    Acked-by: NPeter Zijlstra <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Kevin Hilman <khilman@linaro.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
    3882ec64
core.c 191.3 KB