lkml.org 
[lkml]   [2008]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    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
    rcu_irq_enter():
    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?

    --
    Manfred
    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)
    invoke_softirq();

    #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())
    tick_nohz_stop_sched_tick(0);
    - rcu_irq_exit(0);
    #endif
    preempt_enable_no_resched();
    }
    \
     
     \ /
      Last update: 2008-09-06 18:41    [W:0.031 / U:0.172 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site