lkml.org 
[lkml]   [2013]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 24/45] staging: octeon: Use get/put_online_cpus_atomic() to prevent CPU offline
    Date
    Once stop_machine() is gone from the CPU offline path, we won't be able to
    depend on preempt_disable() or local_irq_disable() to prevent CPUs from
    going offline from under us.

    Use the get/put_online_cpus_atomic() APIs to prevent CPUs from going offline,
    while invoking from atomic context.

    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: David Daney <david.daney@cavium.com>
    Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
    ---

    drivers/staging/octeon/ethernet-rx.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
    index 34afc16..8588b4d 100644
    --- a/drivers/staging/octeon/ethernet-rx.c
    +++ b/drivers/staging/octeon/ethernet-rx.c
    @@ -36,6 +36,7 @@
    #include <linux/prefetch.h>
    #include <linux/ratelimit.h>
    #include <linux/smp.h>
    +#include <linux/cpu.h>
    #include <linux/interrupt.h>
    #include <net/dst.h>
    #ifdef CONFIG_XFRM
    @@ -97,6 +98,7 @@ static void cvm_oct_enable_one_cpu(void)
    return;

    /* ... if a CPU is available, Turn on NAPI polling for that CPU. */
    + get_online_cpus_atomic();
    for_each_online_cpu(cpu) {
    if (!cpu_test_and_set(cpu, core_state.cpu_state)) {
    v = smp_call_function_single(cpu, cvm_oct_enable_napi,
    @@ -106,6 +108,7 @@ static void cvm_oct_enable_one_cpu(void)
    break;
    }
    }
    + put_online_cpus_atomic();
    }

    static void cvm_oct_no_more_work(void)


    \
     
     \ /
      Last update: 2013-01-22 10:44    [W:4.655 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site