[lkml]   [2008]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: [PATCH, RFC] v4 scalable classic RCU implementation
    Hi Paul,

    Paul E. McKenney wrote:
    > o The rcu_pending() and rcu_needs_cpu() primitives are now
    > much more aggressive about permitting CPUs to enter dynticks
    > idle mode. Only CPUs that have RCU callbacks are kept out
    > of dynticks idle mode.

    I've noticed that right now rcu_enter_nohz() can be nested within
    irq_exit() first calls tick_nohz_stop_sched_tick(), then rcu_irq_exit().
    And tick_nohz_stop_sched_tick() can switch into nohz mode.

    Is that intentional? Does rcupreempt support that? It broke my rcustate
    code on x86-64.

    I would prefer if something like the attached patch is applied. What do
    you think?
    Do you need the patch as well?

    diff --git a/kernel/softirq.c b/kernel/softirq.c
    index ba20a90..cca5a83 100644
    --- a/kernel/softirq.c
    +++ b/kernel/softirq.c
    @@ -284,10 +284,10 @@ void irq_exit(void)

    #ifdef CONFIG_NO_HZ
    + rcu_irq_exit(0);
    /* Make sure that timer wheel updates are propagated */
    if (!in_interrupt() && idle_cpu(smp_processor_id()) && !need_resched())
    - rcu_irq_exit(0);
     \ /
      Last update: 2008-09-06 18:41    [W:0.020 / U:48.188 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site