[PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h - Kernel

This is a discussion on [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h - Kernel ; Hello! Compared tip/core/rcu to my latest patchset, and found the following issues: o the memory barrier in rcu_exit_nohz() somehow got out of place (it is correct in mainline as of 2.6.26-rc7). o There is a duplicate declaration of rcu_dyntick_sched. The ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h

  1. [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h

    Hello!

    Compared tip/core/rcu to my latest patchset, and found the following
    issues:

    o the memory barrier in rcu_exit_nohz() somehow got out of place
    (it is correct in mainline as of 2.6.26-rc7).

    o There is a duplicate declaration of rcu_dyntick_sched.

    The attached patch fixes these.

    Signed-off-by: Paul E. McKenney
    ---

    diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h
    index f04b64e..84678bf 100644
    --- a/include/linux/rcupreempt.h
    +++ b/include/linux/rcupreempt.h
    @@ -111,7 +111,6 @@ extern struct rcupreempt_trace *rcupreempt_trace_cpu(int cpu);
    struct softirq_action;

    #ifdef CONFIG_NO_HZ
    -DECLARE_PER_CPU(struct rcu_dyntick_sched, rcu_dyntick_sched);

    static inline void rcu_enter_nohz(void)
    {
    @@ -122,8 +121,8 @@ static inline void rcu_enter_nohz(void)

    static inline void rcu_exit_nohz(void)
    {
    - smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
    __get_cpu_var(rcu_dyntick_sched).dynticks++;
    + smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
    WARN_ON(!(__get_cpu_var(rcu_dyntick_sched).dyntick s & 0x1));
    }

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h


    * Paul E. McKenney wrote:

    > Hello!
    >
    > Compared tip/core/rcu to my latest patchset, and found the following
    > issues:
    >
    > o the memory barrier in rcu_exit_nohz() somehow got out of place
    > (it is correct in mainline as of 2.6.26-rc7).
    >
    > o There is a duplicate declaration of rcu_dyntick_sched.
    >
    > The attached patch fixes these.
    >
    > Signed-off-by: Paul E. McKenney


    applied to tip/core/rcu - thanks Paul.

    Ingo
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h


    Sorry for the late post, I'm finally looking at all my -rt mail.


    On Fri, 1 Aug 2008, Paul E. McKenney wrote:

    > Hello!
    >
    > Compared tip/core/rcu to my latest patchset, and found the following
    > issues:
    >
    > o the memory barrier in rcu_exit_nohz() somehow got out of place
    > (it is correct in mainline as of 2.6.26-rc7).
    >
    > o There is a duplicate declaration of rcu_dyntick_sched.
    >
    > The attached patch fixes these.
    >
    > Signed-off-by: Paul E. McKenney
    > ---
    >
    > diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h
    > index f04b64e..84678bf 100644
    > --- a/include/linux/rcupreempt.h
    > +++ b/include/linux/rcupreempt.h
    > @@ -111,7 +111,6 @@ extern struct rcupreempt_trace *rcupreempt_trace_cpu(int cpu);
    > struct softirq_action;
    >
    > #ifdef CONFIG_NO_HZ
    > -DECLARE_PER_CPU(struct rcu_dyntick_sched, rcu_dyntick_sched);


    In -rt we deleted the first declaration. Is rcu_dyntick_sched defined on
    !CONFIG_NO_HZ?

    -- Steve

    >
    > static inline void rcu_enter_nohz(void)
    > {
    > @@ -122,8 +121,8 @@ static inline void rcu_enter_nohz(void)
    >
    > static inline void rcu_exit_nohz(void)
    > {
    > - smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
    > __get_cpu_var(rcu_dyntick_sched).dynticks++;
    > + smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
    > WARN_ON(!(__get_cpu_var(rcu_dyntick_sched).dyntick s & 0x1));
    > }
    >
    >

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h

    On Wed, Aug 20, 2008 at 12:16:44PM -0400, Steven Rostedt wrote:
    >
    > Sorry for the late post, I'm finally looking at all my -rt mail.
    >
    >
    > On Fri, 1 Aug 2008, Paul E. McKenney wrote:
    >
    > > Hello!
    > >
    > > Compared tip/core/rcu to my latest patchset, and found the following
    > > issues:
    > >
    > > o the memory barrier in rcu_exit_nohz() somehow got out of place
    > > (it is correct in mainline as of 2.6.26-rc7).
    > >
    > > o There is a duplicate declaration of rcu_dyntick_sched.
    > >
    > > The attached patch fixes these.
    > >
    > > Signed-off-by: Paul E. McKenney
    > > ---
    > >
    > > diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h
    > > index f04b64e..84678bf 100644
    > > --- a/include/linux/rcupreempt.h
    > > +++ b/include/linux/rcupreempt.h
    > > @@ -111,7 +111,6 @@ extern struct rcupreempt_trace *rcupreempt_trace_cpu(int cpu);
    > > struct softirq_action;
    > >
    > > #ifdef CONFIG_NO_HZ
    > > -DECLARE_PER_CPU(struct rcu_dyntick_sched, rcu_dyntick_sched);

    >
    > In -rt we deleted the first declaration. Is rcu_dyntick_sched defined on
    > !CONFIG_NO_HZ?


    It builds for me in current tip/core/rcu without the above
    DECLARE_PER_CPU(). And the reason is the call_rcu_sched() function, which
    requires rcu_dyntick_sched.sched_qs and rcu_dyntick_sched.sched_qs_snap
    be defined even if !CONFIG_NO_HZ.

    I suppose I could remove the other elements from the rcu_dyntick_sched
    structure if !CONFIG_NO_HZ. Worthwhile?

    Thanx, Paul

    > -- Steve
    >
    > >
    > > static inline void rcu_enter_nohz(void)
    > > {
    > > @@ -122,8 +121,8 @@ static inline void rcu_enter_nohz(void)
    > >
    > > static inline void rcu_exit_nohz(void)
    > > {
    > > - smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
    > > __get_cpu_var(rcu_dyntick_sched).dynticks++;
    > > + smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
    > > WARN_ON(!(__get_cpu_var(rcu_dyntick_sched).dyntick s & 0x1));
    > > }
    > >
    > >

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. Re: [PATCH -tip/core/rcu] fixes to include/linux/rcupreempt.h


    On Wed, 20 Aug 2008, Paul E. McKenney wrote:
    > > > -DECLARE_PER_CPU(struct rcu_dyntick_sched, rcu_dyntick_sched);

    > >
    > > In -rt we deleted the first declaration. Is rcu_dyntick_sched defined on
    > > !CONFIG_NO_HZ?

    >
    > It builds for me in current tip/core/rcu without the above
    > DECLARE_PER_CPU(). And the reason is the call_rcu_sched() function, which
    > requires rcu_dyntick_sched.sched_qs and rcu_dyntick_sched.sched_qs_snap
    > be defined even if !CONFIG_NO_HZ.
    >
    > I suppose I could remove the other elements from the rcu_dyntick_sched
    > structure if !CONFIG_NO_HZ. Worthwhile?
    >


    Nah, forget about it. I've got a few different versions I'm dealing with.

    Thanks,

    -- Steve

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread