lkml.org 
[lkml]   [2008]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject__get_cpu_var() called from a preempt-unsafe context in __rcu_preempt_unboost() ?
    Hi Paul, Steve,  

    This is with reference to the preemptible rcu implementation in
    2.6.24-rc5-rt1.

    In __rcu_read_unlock(), we call __rcu_preempt_unboost() to unboost a
    task's priority which had been bumped up when it was preempted out
    while the rcu_read section.

    The code path is as follows

    __rcu_read_unlock()
    |
    |--> local_irq_restore(oldirq);
    |
    |--> __rcu_preempt_unboost();
    |
    |--> rcu_trace_boost_unboost_called(RCU_BOOST_ME)


    where RCU_BOOST_ME is #defined as &__get_cpu_var(rcu_boost_data).

    Is calling __get_cpu_var() safe in this context, since we've already
    enabled the local interrupts and we're not in a preempt_disabled() ?

    Thanks and Regards
    gautham.

    --
    Gautham R Shenoy
    Linux Technology Center
    IBM India.
    "Freedom comes with a price tag of responsibility, which is still a bargain,
    because Freedom is priceless!"


    \
     
     \ /
      Last update: 2008-01-04 13:13    [W:0.022 / U:1.076 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site