2012-02-19 14:29:17

by Konstantin Khlebnikov

[permalink] [raw]
Subject: [PATCH] percpu: fix generic definition of __this_cpu_add_and_return()

This patch adds missed "__" into function prefix.
Otherwise on all archectures (except x86) it expands to irq/preemtion-safe
variant: _this_cpu_generic_add_return(), which do extra irq-save/irq-restore.
Optimal generic implementation is __this_cpu_generic_add_return().

Signed-off-by: Konstantin Khlebnikov <[email protected]>
---
include/linux/percpu.h | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 32cd1f6..3b609eb 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -718,7 +718,8 @@ do { \
# ifndef __this_cpu_add_return_8
# define __this_cpu_add_return_8(pcp, val) __this_cpu_generic_add_return(pcp, val)
# endif
-# define __this_cpu_add_return(pcp, val) __pcpu_size_call_return2(this_cpu_add_return_, pcp, val)
+# define __this_cpu_add_return(pcp, val) \
+ __pcpu_size_call_return2(__this_cpu_add_return_, pcp, val)
#endif

#define __this_cpu_sub_return(pcp, val) this_cpu_add_return(pcp, -(val))


Subject: Re: [PATCH] percpu: fix generic definition of __this_cpu_add_and_return()

On Sun, 19 Feb 2012, Konstantin Khlebnikov wrote:

> This patch adds missed "__" into function prefix.
> Otherwise on all archectures (except x86) it expands to irq/preemtion-safe
> variant: _this_cpu_generic_add_return(), which do extra irq-save/irq-restore.
> Optimal generic implementation is __this_cpu_generic_add_return().

Acked-by: Christoph Lameter <[email protected]>

2012-02-21 16:58:47

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH] percpu: fix generic definition of __this_cpu_add_and_return()

On Tue, Feb 21, 2012 at 09:53:08AM -0600, Christoph Lameter wrote:
> On Sun, 19 Feb 2012, Konstantin Khlebnikov wrote:
>
> > This patch adds missed "__" into function prefix.
> > Otherwise on all archectures (except x86) it expands to irq/preemtion-safe
> > variant: _this_cpu_generic_add_return(), which do extra irq-save/irq-restore.
> > Optimal generic implementation is __this_cpu_generic_add_return().
>
> Acked-by: Christoph Lameter <[email protected]>

Applied to 3.3-fixes. Thanks.

--
tejun

2012-02-24 15:33:50

by Torsten Kaiser

[permalink] [raw]
Subject: Re: [PATCH] percpu: fix generic definition of __this_cpu_add_and_return()

On Sun, Feb 19, 2012 at 3:29 PM, Konstantin Khlebnikov
<[email protected]> wrote:
> This patch adds missed "__" into function prefix.
> Otherwise on all archectures (except x86) it expands to irq/preemtion-safe
> variant: _this_cpu_generic_add_return(), which do extra irq-save/irq-restore.
> Optimal generic implementation is __this_cpu_generic_add_return().
>
> Signed-off-by: Konstantin Khlebnikov <[email protected]>
> ---
> ?include/linux/percpu.h | ? ?3 ++-
> ?1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/percpu.h b/include/linux/percpu.h
> index 32cd1f6..3b609eb 100644
> --- a/include/linux/percpu.h
> +++ b/include/linux/percpu.h
> @@ -718,7 +718,8 @@ do { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> ?# ifndef __this_cpu_add_return_8
> ?# ?define __this_cpu_add_return_8(pcp, val) ? ?__this_cpu_generic_add_return(pcp, val)
> ?# endif
> -# define __this_cpu_add_return(pcp, val) ? ? ? __pcpu_size_call_return2(this_cpu_add_return_, pcp, val)
> +# define __this_cpu_add_return(pcp, val) ? ? ? \
> + ? ? ? __pcpu_size_call_return2(__this_cpu_add_return_, pcp, val)
> ?#endif
>
> ?#define __this_cpu_sub_return(pcp, val) ? ? ? ?this_cpu_add_return(pcp, -(val))

I think, the same fix should be applied to the lines following this patch:
#define __this_cpu_sub_return(pcp, val) this_cpu_add_return(pcp, -(val))
#define __this_cpu_inc_return(pcp) this_cpu_add_return(pcp, 1)
#define __this_cpu_dec_return(pcp) this_cpu_add_return(pcp, -1)

Shouldn't these other operations also only give the __ relaxed guarantees?

HTH

Torsten

Subject: Re: [PATCH] percpu: fix generic definition of __this_cpu_add_and_return()

On Fri, 24 Feb 2012, Torsten Kaiser wrote:

> > ?#define __this_cpu_sub_return(pcp, val) ? ? ? ?this_cpu_add_return(pcp, -(val))
>
> I think, the same fix should be applied to the lines following this patch:
> #define __this_cpu_sub_return(pcp, val) this_cpu_add_return(pcp, -(val))
> #define __this_cpu_inc_return(pcp) this_cpu_add_return(pcp, 1)
> #define __this_cpu_dec_return(pcp) this_cpu_add_return(pcp, -1)
>
> Shouldn't these other operations also only give the __ relaxed guarantees?
Yes indeed that should also be fixed.

2012-02-28 20:10:18

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH] percpu: fix generic definition of __this_cpu_add_and_return()

On Fri, Feb 24, 2012 at 09:43:15AM -0600, Christoph Lameter wrote:
> On Fri, 24 Feb 2012, Torsten Kaiser wrote:
>
> > > ?#define __this_cpu_sub_return(pcp, val) ? ? ? ?this_cpu_add_return(pcp, -(val))
> >
> > I think, the same fix should be applied to the lines following this patch:
> > #define __this_cpu_sub_return(pcp, val) this_cpu_add_return(pcp, -(val))
> > #define __this_cpu_inc_return(pcp) this_cpu_add_return(pcp, 1)
> > #define __this_cpu_dec_return(pcp) this_cpu_add_return(pcp, -1)
> >
> > Shouldn't these other operations also only give the __ relaxed guarantees?
> Yes indeed that should also be fixed.

Can someone please send a patch for this? :)

Thanks.

--
tejun