All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
@ 2015-10-10 10:56 Jason A. Donenfeld
  2015-10-11 19:59 ` Thomas Hellstrom
  2016-08-10 12:24 ` Fwd: " Thomas Hellstrom
  0 siblings, 2 replies; 19+ messages in thread
From: Jason A. Donenfeld @ 2015-10-10 10:56 UTC (permalink / raw)
  To: Dave Airlie, Thomas Hellstrom, linux-kernel; +Cc: Jason A. Donenfeld

On most platforms, there exists this ifdef:

 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)

This makes this patch functionally useless. However, on PPC, there is
actually an explicit definition of atomic_inc_not_zero with its own
assembly that is slightly more optimized than atomic_add_unless. So,
this patch changes kref to use atomic_inc_not_zero instead, for PPC and
any future platforms that might provide an explicit implementation.

This also puts this usage of kref more in line with a verbatim reading
of the examples in Paul McKenney's paper [1] in the section titled "2.4
Atomic Counting With Check and Release Memory Barrier", which uses
atomic_inc_not_zero.

[1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
 include/linux/kref.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/kref.h b/include/linux/kref.h
index 484604d..83d1f94 100644
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
  */
 static inline int __must_check kref_get_unless_zero(struct kref *kref)
 {
-	return atomic_add_unless(&kref->refcount, 1, 0);
+	return atomic_inc_not_zero(&kref->refcount);
 }
 #endif /* _KREF_H_ */
-- 
2.6.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2015-10-10 10:56 [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless Jason A. Donenfeld
@ 2015-10-11 19:59 ` Thomas Hellstrom
  2016-02-01 21:53   ` Jason A. Donenfeld
  2016-12-15  4:58   ` Jason A. Donenfeld
  2016-08-10 12:24 ` Fwd: " Thomas Hellstrom
  1 sibling, 2 replies; 19+ messages in thread
From: Thomas Hellstrom @ 2015-10-11 19:59 UTC (permalink / raw)
  To: Jason A. Donenfeld, Dave Airlie, linux-kernel

Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>


On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
> On most platforms, there exists this ifdef:
>
>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
>
> This makes this patch functionally useless. However, on PPC, there is
> actually an explicit definition of atomic_inc_not_zero with its own
> assembly that is slightly more optimized than atomic_add_unless. So,
> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> any future platforms that might provide an explicit implementation.
>
> This also puts this usage of kref more in line with a verbatim reading
> of the examples in Paul McKenney's paper [1] in the section titled "2.4
> Atomic Counting With Check and Release Memory Barrier", which uses
> atomic_inc_not_zero.
>
> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e= 
>
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> ---
>  include/linux/kref.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/kref.h b/include/linux/kref.h
> index 484604d..83d1f94 100644
> --- a/include/linux/kref.h
> +++ b/include/linux/kref.h
> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
>   */
>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
>  {
> -	return atomic_add_unless(&kref->refcount, 1, 0);
> +	return atomic_inc_not_zero(&kref->refcount);
>  }
>  #endif /* _KREF_H_ */


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2015-10-11 19:59 ` Thomas Hellstrom
@ 2016-02-01 21:53   ` Jason A. Donenfeld
  2016-06-29 22:52     ` Jason A. Donenfeld
  2016-12-15  4:58   ` Jason A. Donenfeld
  1 sibling, 1 reply; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-02-01 21:53 UTC (permalink / raw)
  To: Thomas Hellstrom, Dave Airlie; +Cc: LKML, Paul McKenney

This was positively reviewed but never picked up. Can someone queue
this for rc3?

Thanks,
Jason

On Sun, Oct 11, 2015 at 9:59 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
>
>
> On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
>> On most platforms, there exists this ifdef:
>>
>>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
>>
>> This makes this patch functionally useless. However, on PPC, there is
>> actually an explicit definition of atomic_inc_not_zero with its own
>> assembly that is slightly more optimized than atomic_add_unless. So,
>> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
>> any future platforms that might provide an explicit implementation.
>>
>> This also puts this usage of kref more in line with a verbatim reading
>> of the examples in Paul McKenney's paper [1] in the section titled "2.4
>> Atomic Counting With Check and Release Memory Barrier", which uses
>> atomic_inc_not_zero.
>>
>> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e=
>>
>> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
>> ---
>>  include/linux/kref.h | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/include/linux/kref.h b/include/linux/kref.h
>> index 484604d..83d1f94 100644
>> --- a/include/linux/kref.h
>> +++ b/include/linux/kref.h
>> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
>>   */
>>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
>>  {
>> -     return atomic_add_unless(&kref->refcount, 1, 0);
>> +     return atomic_inc_not_zero(&kref->refcount);
>>  }
>>  #endif /* _KREF_H_ */
>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-02-01 21:53   ` Jason A. Donenfeld
@ 2016-06-29 22:52     ` Jason A. Donenfeld
  2016-07-01  7:08         ` Thomas Hellstrom
  0 siblings, 1 reply; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-06-29 22:52 UTC (permalink / raw)
  To: Thomas Hellstrom, Dave Airlie; +Cc: LKML, Paul McKenney

This was positively reviewed by maintainers but never picked up. Can
someone queue this for 4.7 or 4.8?

Thanks,
Jason

On Mon, Feb 1, 2016 at 10:53 PM, Jason A. Donenfeld <Jason@zx2c4.com> wrote:
> This was positively reviewed but never picked up. Can someone queue
> this for rc3?
>
> Thanks,
> Jason
>
> On Sun, Oct 11, 2015 at 9:59 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
>> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
>>
>>
>> On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
>>> On most platforms, there exists this ifdef:
>>>
>>>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
>>>
>>> This makes this patch functionally useless. However, on PPC, there is
>>> actually an explicit definition of atomic_inc_not_zero with its own
>>> assembly that is slightly more optimized than atomic_add_unless. So,
>>> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
>>> any future platforms that might provide an explicit implementation.
>>>
>>> This also puts this usage of kref more in line with a verbatim reading
>>> of the examples in Paul McKenney's paper [1] in the section titled "2.4
>>> Atomic Counting With Check and Release Memory Barrier", which uses
>>> atomic_inc_not_zero.
>>>
>>> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e=
>>>
>>> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
>>> ---
>>>  include/linux/kref.h | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/include/linux/kref.h b/include/linux/kref.h
>>> index 484604d..83d1f94 100644
>>> --- a/include/linux/kref.h
>>> +++ b/include/linux/kref.h
>>> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
>>>   */
>>>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
>>>  {
>>> -     return atomic_add_unless(&kref->refcount, 1, 0);
>>> +     return atomic_inc_not_zero(&kref->refcount);
>>>  }
>>>  #endif /* _KREF_H_ */
>>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Patch for drm-next WAS Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-06-29 22:52     ` Jason A. Donenfeld
@ 2016-07-01  7:08         ` Thomas Hellstrom
  0 siblings, 0 replies; 19+ messages in thread
From: Thomas Hellstrom @ 2016-07-01  7:08 UTC (permalink / raw)
  To: Dave Airlie; +Cc: Jason A. Donenfeld, LKML, Paul McKenney, dri-devel

Dave,

Since kref_get_unless_zero() was brought in by drm, could we add this to
drm-next?

Thanks,
Thomas


On 06/30/2016 12:52 AM, Jason A. Donenfeld wrote:
> This was positively reviewed by maintainers but never picked up. Can
> someone queue this for 4.7 or 4.8?
>
> Thanks,
> Jason
>
> On Mon, Feb 1, 2016 at 10:53 PM, Jason A. Donenfeld <Jason@zx2c4.com> wrote:
>> This was positively reviewed but never picked up. Can someone queue
>> this for rc3?
>>
>> Thanks,
>> Jason
>>
>> On Sun, Oct 11, 2015 at 9:59 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
>>> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
>>>
>>>
>>> On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
>>>> On most platforms, there exists this ifdef:
>>>>
>>>>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
>>>>
>>>> This makes this patch functionally useless. However, on PPC, there is
>>>> actually an explicit definition of atomic_inc_not_zero with its own
>>>> assembly that is slightly more optimized than atomic_add_unless. So,
>>>> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
>>>> any future platforms that might provide an explicit implementation.
>>>>
>>>> This also puts this usage of kref more in line with a verbatim reading
>>>> of the examples in Paul McKenney's paper [1] in the section titled "2.4
>>>> Atomic Counting With Check and Release Memory Barrier", which uses
>>>> atomic_inc_not_zero.
>>>>
>>>> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e=
>>>>
>>>> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
>>>> ---
>>>>  include/linux/kref.h | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/include/linux/kref.h b/include/linux/kref.h
>>>> index 484604d..83d1f94 100644
>>>> --- a/include/linux/kref.h
>>>> +++ b/include/linux/kref.h
>>>> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
>>>>   */
>>>>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
>>>>  {
>>>> -     return atomic_add_unless(&kref->refcount, 1, 0);
>>>> +     return atomic_inc_not_zero(&kref->refcount);
>>>>  }
>>>>  #endif /* _KREF_H_ */

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Patch for drm-next WAS Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
@ 2016-07-01  7:08         ` Thomas Hellstrom
  0 siblings, 0 replies; 19+ messages in thread
From: Thomas Hellstrom @ 2016-07-01  7:08 UTC (permalink / raw)
  To: Dave Airlie; +Cc: Jason A. Donenfeld, Paul McKenney, LKML, dri-devel

Dave,

Since kref_get_unless_zero() was brought in by drm, could we add this to
drm-next?

Thanks,
Thomas


On 06/30/2016 12:52 AM, Jason A. Donenfeld wrote:
> This was positively reviewed by maintainers but never picked up. Can
> someone queue this for 4.7 or 4.8?
>
> Thanks,
> Jason
>
> On Mon, Feb 1, 2016 at 10:53 PM, Jason A. Donenfeld <Jason@zx2c4.com> wrote:
>> This was positively reviewed but never picked up. Can someone queue
>> this for rc3?
>>
>> Thanks,
>> Jason
>>
>> On Sun, Oct 11, 2015 at 9:59 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
>>> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
>>>
>>>
>>> On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
>>>> On most platforms, there exists this ifdef:
>>>>
>>>>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
>>>>
>>>> This makes this patch functionally useless. However, on PPC, there is
>>>> actually an explicit definition of atomic_inc_not_zero with its own
>>>> assembly that is slightly more optimized than atomic_add_unless. So,
>>>> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
>>>> any future platforms that might provide an explicit implementation.
>>>>
>>>> This also puts this usage of kref more in line with a verbatim reading
>>>> of the examples in Paul McKenney's paper [1] in the section titled "2.4
>>>> Atomic Counting With Check and Release Memory Barrier", which uses
>>>> atomic_inc_not_zero.
>>>>
>>>> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e=
>>>>
>>>> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
>>>> ---
>>>>  include/linux/kref.h | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/include/linux/kref.h b/include/linux/kref.h
>>>> index 484604d..83d1f94 100644
>>>> --- a/include/linux/kref.h
>>>> +++ b/include/linux/kref.h
>>>> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
>>>>   */
>>>>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
>>>>  {
>>>> -     return atomic_add_unless(&kref->refcount, 1, 0);
>>>> +     return atomic_inc_not_zero(&kref->refcount);
>>>>  }
>>>>  #endif /* _KREF_H_ */


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Patch for drm-next WAS Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-07-01  7:08         ` Thomas Hellstrom
@ 2016-07-12 12:28           ` Daniel Vetter
  -1 siblings, 0 replies; 19+ messages in thread
From: Daniel Vetter @ 2016-07-12 12:28 UTC (permalink / raw)
  To: Thomas Hellstrom
  Cc: Dave Airlie, Jason A. Donenfeld, Paul McKenney, LKML, dri-devel

On Fri, Jul 01, 2016 at 09:08:34AM +0200, Thomas Hellstrom wrote:
> Dave,
> 
> Since kref_get_unless_zero() was brought in by drm, could we add this to
> drm-next?

Sure can do, but I can't find the raw patch anywhere (I suck, I know).
Care to resend?

Thanks, Daniel

> 
> Thanks,
> Thomas
> 
> 
> On 06/30/2016 12:52 AM, Jason A. Donenfeld wrote:
> > This was positively reviewed by maintainers but never picked up. Can
> > someone queue this for 4.7 or 4.8?
> >
> > Thanks,
> > Jason
> >
> > On Mon, Feb 1, 2016 at 10:53 PM, Jason A. Donenfeld <Jason@zx2c4.com> wrote:
> >> This was positively reviewed but never picked up. Can someone queue
> >> this for rc3?
> >>
> >> Thanks,
> >> Jason
> >>
> >> On Sun, Oct 11, 2015 at 9:59 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
> >>> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
> >>>
> >>>
> >>> On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
> >>>> On most platforms, there exists this ifdef:
> >>>>
> >>>>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
> >>>>
> >>>> This makes this patch functionally useless. However, on PPC, there is
> >>>> actually an explicit definition of atomic_inc_not_zero with its own
> >>>> assembly that is slightly more optimized than atomic_add_unless. So,
> >>>> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> >>>> any future platforms that might provide an explicit implementation.
> >>>>
> >>>> This also puts this usage of kref more in line with a verbatim reading
> >>>> of the examples in Paul McKenney's paper [1] in the section titled "2.4
> >>>> Atomic Counting With Check and Release Memory Barrier", which uses
> >>>> atomic_inc_not_zero.
> >>>>
> >>>> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e=
> >>>>
> >>>> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> >>>> ---
> >>>>  include/linux/kref.h | 2 +-
> >>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/include/linux/kref.h b/include/linux/kref.h
> >>>> index 484604d..83d1f94 100644
> >>>> --- a/include/linux/kref.h
> >>>> +++ b/include/linux/kref.h
> >>>> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
> >>>>   */
> >>>>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
> >>>>  {
> >>>> -     return atomic_add_unless(&kref->refcount, 1, 0);
> >>>> +     return atomic_inc_not_zero(&kref->refcount);
> >>>>  }
> >>>>  #endif /* _KREF_H_ */
> 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Patch for drm-next WAS Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
@ 2016-07-12 12:28           ` Daniel Vetter
  0 siblings, 0 replies; 19+ messages in thread
From: Daniel Vetter @ 2016-07-12 12:28 UTC (permalink / raw)
  To: Thomas Hellstrom
  Cc: Dave Airlie, Jason A. Donenfeld, Paul McKenney, LKML, dri-devel

On Fri, Jul 01, 2016 at 09:08:34AM +0200, Thomas Hellstrom wrote:
> Dave,
> 
> Since kref_get_unless_zero() was brought in by drm, could we add this to
> drm-next?

Sure can do, but I can't find the raw patch anywhere (I suck, I know).
Care to resend?

Thanks, Daniel

> 
> Thanks,
> Thomas
> 
> 
> On 06/30/2016 12:52 AM, Jason A. Donenfeld wrote:
> > This was positively reviewed by maintainers but never picked up. Can
> > someone queue this for 4.7 or 4.8?
> >
> > Thanks,
> > Jason
> >
> > On Mon, Feb 1, 2016 at 10:53 PM, Jason A. Donenfeld <Jason@zx2c4.com> wrote:
> >> This was positively reviewed but never picked up. Can someone queue
> >> this for rc3?
> >>
> >> Thanks,
> >> Jason
> >>
> >> On Sun, Oct 11, 2015 at 9:59 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
> >>> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
> >>>
> >>>
> >>> On 10/10/2015 12:56 PM, Jason A. Donenfeld wrote:
> >>>> On most platforms, there exists this ifdef:
> >>>>
> >>>>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
> >>>>
> >>>> This makes this patch functionally useless. However, on PPC, there is
> >>>> actually an explicit definition of atomic_inc_not_zero with its own
> >>>> assembly that is slightly more optimized than atomic_add_unless. So,
> >>>> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> >>>> any future platforms that might provide an explicit implementation.
> >>>>
> >>>> This also puts this usage of kref more in line with a verbatim reading
> >>>> of the examples in Paul McKenney's paper [1] in the section titled "2.4
> >>>> Atomic Counting With Check and Release Memory Barrier", which uses
> >>>> atomic_inc_not_zero.
> >>>>
> >>>> [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e=
> >>>>
> >>>> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> >>>> ---
> >>>>  include/linux/kref.h | 2 +-
> >>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/include/linux/kref.h b/include/linux/kref.h
> >>>> index 484604d..83d1f94 100644
> >>>> --- a/include/linux/kref.h
> >>>> +++ b/include/linux/kref.h
> >>>> @@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
> >>>>   */
> >>>>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
> >>>>  {
> >>>> -     return atomic_add_unless(&kref->refcount, 1, 0);
> >>>> +     return atomic_inc_not_zero(&kref->refcount);
> >>>>  }
> >>>>  #endif /* _KREF_H_ */
> 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Fwd: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2015-10-10 10:56 [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless Jason A. Donenfeld
  2015-10-11 19:59 ` Thomas Hellstrom
@ 2016-08-10 12:24 ` Thomas Hellstrom
  1 sibling, 0 replies; 19+ messages in thread
From: Thomas Hellstrom @ 2016-08-10 12:24 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: dri-devel

By request forwarded patch

This is also
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>

/Thomas


-------- Forwarded Message --------
Subject: 	[PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
Date: 	Sat, 10 Oct 2015 12:56:34 +0200
From: 	Jason A. Donenfeld <Jason@zx2c4.com>
To: 	Dave Airlie <airlied@redhat.com>, Thomas Hellstrom
<thellstrom@vmware.com>, linux-kernel@vger.kernel.org
CC: 	Jason A. Donenfeld <Jason@zx2c4.com>



On most platforms, there exists this ifdef:

 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)

This makes this patch functionally useless. However, on PPC, there is
actually an explicit definition of atomic_inc_not_zero with its own
assembly that is slightly more optimized than atomic_add_unless. So,
this patch changes kref to use atomic_inc_not_zero instead, for PPC and
any future platforms that might provide an explicit implementation.

This also puts this usage of kref more in line with a verbatim reading
of the examples in Paul McKenney's paper [1] in the section titled "2.4
Atomic Counting With Check and Release Memory Barrier", which uses
atomic_inc_not_zero.

[1] https://urldefense.proofpoint.com/v2/url?u=http-3A__open-2Dstd.org_jtc1_sc22_wg21_docs_papers_2007_n2167.pdf&d=BQIBAg&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=vpukPkBtpoNQp2IUKuFviOmPNYWVKmen3Jeeu55zmEA&m=z5Nd9sYiJMKiphNjyZp6XT5CbayXMBlcb903f260pDY&s=HEHX3CuXRs2GRRQWuC4Vef6iJMwdilKVRkiZgJpjEpA&e= 

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
 include/linux/kref.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/kref.h b/include/linux/kref.h
index 484604d..83d1f94 100644
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -166,6 +166,6 @@ static inline int kref_put_mutex(struct kref *kref,
  */
 static inline int __must_check kref_get_unless_zero(struct kref *kref)
 {
-	return atomic_add_unless(&kref->refcount, 1, 0);
+	return atomic_inc_not_zero(&kref->refcount);
 }
 #endif /* _KREF_H_ */
-- 
2.6.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2015-10-11 19:59 ` Thomas Hellstrom
  2016-02-01 21:53   ` Jason A. Donenfeld
@ 2016-12-15  4:58   ` Jason A. Donenfeld
  2016-12-15  8:51     ` Christoph Hellwig
  1 sibling, 1 reply; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-12-15  4:58 UTC (permalink / raw)
  To: Dave Airlie, linux-kernel, Thomas Hellstrom; +Cc: Jason A. Donenfeld

On most platforms, there exists this ifdef:

 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)

This makes this patch functionally useless. However, on PPC, there is
actually an explicit definition of atomic_inc_not_zero with its own
assembly that is slightly more optimized than atomic_add_unless. So,
this patch changes kref to use atomic_inc_not_zero instead, for PPC and
any future platforms that might provide an explicit implementation.

This also puts this usage of kref more in line with a verbatim reading
of the examples in Paul McKenney's paper [1] in the section titled "2.4
Atomic Counting With Check and Release Memory Barrier", which uses
atomic_inc_not_zero.

[1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
---
This was reviewed favorably 14 months ago but never picked up.
I'm resubmitting it now in hopes that you can finally queue it
up for 4.10.

 include/linux/kref.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/kref.h b/include/linux/kref.h
index e15828fd71f1..62f0a84ae94e 100644
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -133,6 +133,6 @@ static inline int kref_put_mutex(struct kref *kref,
  */
 static inline int __must_check kref_get_unless_zero(struct kref *kref)
 {
-	return atomic_add_unless(&kref->refcount, 1, 0);
+	return atomic_inc_not_zero(&kref->refcount);
 }
 #endif /* _KREF_H_ */
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: Patch for drm-next WAS Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-07-12 12:28           ` Daniel Vetter
  (?)
@ 2016-12-15  4:59           ` Jason A. Donenfeld
  -1 siblings, 0 replies; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-12-15  4:59 UTC (permalink / raw)
  To: Thomas Hellstrom, Dave Airlie, Jason A. Donenfeld, Paul McKenney,
	LKML, dri-devel

On Tue, Jul 12, 2016 at 2:28 PM, Daniel Vetter <daniel@ffwll.ch> wrote:
> Sure can do, but I can't find the raw patch anywhere (I suck, I know).
> Care to resend?

Hey sorry I missed this email requesting the actual patch. I reposted it here:

https://lkml.org/lkml/2016/12/14/814

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-07-12 12:28           ` Daniel Vetter
  (?)
  (?)
@ 2016-12-15  5:01           ` Jason A. Donenfeld
  2016-12-16  7:33             ` Daniel Vetter
  -1 siblings, 1 reply; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-12-15  5:01 UTC (permalink / raw)
  To: Thomas Hellstrom, dri-devel; +Cc: Jason A. Donenfeld

On most platforms, there exists this ifdef:

 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)

This makes this patch functionally useless. However, on PPC, there is
actually an explicit definition of atomic_inc_not_zero with its own
assembly that is slightly more optimized than atomic_add_unless. So,
this patch changes kref to use atomic_inc_not_zero instead, for PPC and
any future platforms that might provide an explicit implementation.

This also puts this usage of kref more in line with a verbatim reading
of the examples in Paul McKenney's paper [1] in the section titled "2.4
Atomic Counting With Check and Release Memory Barrier", which uses
atomic_inc_not_zero.

[1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
---
This was reviewed favorably 14 months ago but never picked up.
I'm resubmitting it now in hopes that you can finally queue it
up for 4.10.

 include/linux/kref.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/kref.h b/include/linux/kref.h
index e15828fd71f1..62f0a84ae94e 100644
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -133,6 +133,6 @@ static inline int kref_put_mutex(struct kref *kref,
  */
 static inline int __must_check kref_get_unless_zero(struct kref *kref)
 {
-	return atomic_add_unless(&kref->refcount, 1, 0);
+	return atomic_inc_not_zero(&kref->refcount);
 }
 #endif /* _KREF_H_ */
-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-12-15  4:58   ` Jason A. Donenfeld
@ 2016-12-15  8:51     ` Christoph Hellwig
  0 siblings, 0 replies; 19+ messages in thread
From: Christoph Hellwig @ 2016-12-15  8:51 UTC (permalink / raw)
  To: Jason A. Donenfeld; +Cc: Dave Airlie, linux-kernel, Thomas Hellstrom

It's also way easier to read using atomic_inc_not_zero..

Reviewed-by: Christoph Hellwig <hch@lst.de>

Not sure you're sending this to the right maintainers, though.  You
probably want to include Greg.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-12-15  5:01           ` Jason A. Donenfeld
@ 2016-12-16  7:33             ` Daniel Vetter
  0 siblings, 0 replies; 19+ messages in thread
From: Daniel Vetter @ 2016-12-16  7:33 UTC (permalink / raw)
  To: Jason A. Donenfeld; +Cc: Thomas Hellstrom, dri-devel

On Thu, Dec 15, 2016 at 06:01:10AM +0100, Jason A. Donenfeld wrote:
> On most platforms, there exists this ifdef:
> 
>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
> 
> This makes this patch functionally useless. However, on PPC, there is
> actually an explicit definition of atomic_inc_not_zero with its own
> assembly that is slightly more optimized than atomic_add_unless. So,
> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> any future platforms that might provide an explicit implementation.
> 
> This also puts this usage of kref more in line with a verbatim reading
> of the examples in Paul McKenney's paper [1] in the section titled "2.4
> Atomic Counting With Check and Release Memory Barrier", which uses
> atomic_inc_not_zero.
> 
> [1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf
> 
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>

Applied to drm-misc, but for 4.11 since 4.10 is bugfixes only already.

Thanks, Daniel

> ---
> This was reviewed favorably 14 months ago but never picked up.
> I'm resubmitting it now in hopes that you can finally queue it
> up for 4.10.
> 
>  include/linux/kref.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/kref.h b/include/linux/kref.h
> index e15828fd71f1..62f0a84ae94e 100644
> --- a/include/linux/kref.h
> +++ b/include/linux/kref.h
> @@ -133,6 +133,6 @@ static inline int kref_put_mutex(struct kref *kref,
>   */
>  static inline int __must_check kref_get_unless_zero(struct kref *kref)
>  {
> -	return atomic_add_unless(&kref->refcount, 1, 0);
> +	return atomic_inc_not_zero(&kref->refcount);
>  }
>  #endif /* _KREF_H_ */
> -- 
> 2.11.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-12-15 19:10 ` Greg KH
@ 2016-12-16  7:36     ` Daniel Vetter
  2016-12-16  7:36     ` Daniel Vetter
  1 sibling, 0 replies; 19+ messages in thread
From: Daniel Vetter @ 2016-12-16  7:36 UTC (permalink / raw)
  To: Greg KH
  Cc: Jason A. Donenfeld, Christoph Hellwig, Thomas Hellstrom,
	dri-devel, linux-kernel, Daniel Vetter

On Thu, Dec 15, 2016 at 11:10:49AM -0800, Greg KH wrote:
> On Thu, Dec 15, 2016 at 07:55:54PM +0100, Jason A. Donenfeld wrote:
> > On most platforms, there exists this ifdef:
> > 
> >  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
> > 
> > This makes this patch functionally useless. However, on PPC, there is
> > actually an explicit definition of atomic_inc_not_zero with its own
> > assembly that is slightly more optimized than atomic_add_unless. So,
> > this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> > any future platforms that might provide an explicit implementation.
> > 
> > This also puts this usage of kref more in line with a verbatim reading
> > of the examples in Paul McKenney's paper [1] in the section titled "2.4
> > Atomic Counting With Check and Release Memory Barrier", which uses
> > atomic_inc_not_zero.
> > 
> > [1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf
> > 
> > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> > Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > ---
> > Sorry to submit this again, but people keep reviewing it saying it's fine,
> > but then point to somebody else to actually merge this. At the end of the
> > chain of fingerpointing is usually Greg. "Just have Greg do it." At this
> > point I'm confused, but it's certainly been sufficiently reviewed and
> > accepted. So can one of you just respond saying "I'll take it!"
> 
> Well, the crazies over in drm land were the ones that merged this new
> api, so they should be the ones responsible for it.  But that was way
> back in 2012, odds are they don't remember it given the lunacy that is
> their subsystem...

We do, it's just that I couldn't find Jason's patch when Thomas reviewed
it and asked for a resend and it took Jason a while to do that ...

Maybe we even remember this api way too well, we're constantly adding new
users of it in drm ;-)

> I'll take it after 4.10-rc1 is out, thanks.

Oh, here's another resubmission of this patch. I've already applied this
to my 4.11 queue, will show up in linux-next as soon as -rc1 is out.

Thanks, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
@ 2016-12-16  7:36     ` Daniel Vetter
  0 siblings, 0 replies; 19+ messages in thread
From: Daniel Vetter @ 2016-12-16  7:36 UTC (permalink / raw)
  To: Greg KH
  Cc: Jason A. Donenfeld, Thomas Hellstrom, linux-kernel, dri-devel,
	Christoph Hellwig

On Thu, Dec 15, 2016 at 11:10:49AM -0800, Greg KH wrote:
> On Thu, Dec 15, 2016 at 07:55:54PM +0100, Jason A. Donenfeld wrote:
> > On most platforms, there exists this ifdef:
> > 
> >  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
> > 
> > This makes this patch functionally useless. However, on PPC, there is
> > actually an explicit definition of atomic_inc_not_zero with its own
> > assembly that is slightly more optimized than atomic_add_unless. So,
> > this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> > any future platforms that might provide an explicit implementation.
> > 
> > This also puts this usage of kref more in line with a verbatim reading
> > of the examples in Paul McKenney's paper [1] in the section titled "2.4
> > Atomic Counting With Check and Release Memory Barrier", which uses
> > atomic_inc_not_zero.
> > 
> > [1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf
> > 
> > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> > Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > ---
> > Sorry to submit this again, but people keep reviewing it saying it's fine,
> > but then point to somebody else to actually merge this. At the end of the
> > chain of fingerpointing is usually Greg. "Just have Greg do it." At this
> > point I'm confused, but it's certainly been sufficiently reviewed and
> > accepted. So can one of you just respond saying "I'll take it!"
> 
> Well, the crazies over in drm land were the ones that merged this new
> api, so they should be the ones responsible for it.  But that was way
> back in 2012, odds are they don't remember it given the lunacy that is
> their subsystem...

We do, it's just that I couldn't find Jason's patch when Thomas reviewed
it and asked for a resend and it took Jason a while to do that ...

Maybe we even remember this api way too well, we're constantly adding new
users of it in drm ;-)

> I'll take it after 4.10-rc1 is out, thanks.

Oh, here's another resubmission of this patch. I've already applied this
to my 4.11 queue, will show up in linux-next as soon as -rc1 is out.

Thanks, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-12-15 19:10 ` Greg KH
@ 2016-12-15 19:47   ` Jason A. Donenfeld
  2016-12-16  7:36     ` Daniel Vetter
  1 sibling, 0 replies; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-12-15 19:47 UTC (permalink / raw)
  To: Greg KH
  Cc: Christoph Hellwig, Thomas Hellstrom, dri-devel, LKML, Daniel Vetter

Hi Greg,

On Thu, Dec 15, 2016 at 8:10 PM, Greg KH <gregkh@linuxfoundation.org> wrote:
> I'll take it after 4.10-rc1 is out, thanks.

Thank you!

Jason

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
  2016-12-15 18:55 Jason A. Donenfeld
@ 2016-12-15 19:10 ` Greg KH
  2016-12-15 19:47   ` Jason A. Donenfeld
  2016-12-16  7:36     ` Daniel Vetter
  0 siblings, 2 replies; 19+ messages in thread
From: Greg KH @ 2016-12-15 19:10 UTC (permalink / raw)
  To: Jason A. Donenfeld
  Cc: Christoph Hellwig, Thomas Hellstrom, dri-devel, linux-kernel,
	Daniel Vetter

On Thu, Dec 15, 2016 at 07:55:54PM +0100, Jason A. Donenfeld wrote:
> On most platforms, there exists this ifdef:
> 
>  #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
> 
> This makes this patch functionally useless. However, on PPC, there is
> actually an explicit definition of atomic_inc_not_zero with its own
> assembly that is slightly more optimized than atomic_add_unless. So,
> this patch changes kref to use atomic_inc_not_zero instead, for PPC and
> any future platforms that might provide an explicit implementation.
> 
> This also puts this usage of kref more in line with a verbatim reading
> of the examples in Paul McKenney's paper [1] in the section titled "2.4
> Atomic Counting With Check and Release Memory Barrier", which uses
> atomic_inc_not_zero.
> 
> [1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf
> 
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> ---
> Sorry to submit this again, but people keep reviewing it saying it's fine,
> but then point to somebody else to actually merge this. At the end of the
> chain of fingerpointing is usually Greg. "Just have Greg do it." At this
> point I'm confused, but it's certainly been sufficiently reviewed and
> accepted. So can one of you just respond saying "I'll take it!"

Well, the crazies over in drm land were the ones that merged this new
api, so they should be the ones responsible for it.  But that was way
back in 2012, odds are they don't remember it given the lunacy that is
their subsystem...

I'll take it after 4.10-rc1 is out, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
@ 2016-12-15 18:55 Jason A. Donenfeld
  2016-12-15 19:10 ` Greg KH
  0 siblings, 1 reply; 19+ messages in thread
From: Jason A. Donenfeld @ 2016-12-15 18:55 UTC (permalink / raw)
  To: Christoph Hellwig, Thomas Hellstrom, dri-devel, linux-kernel,
	Daniel Vetter, gregkh
  Cc: Jason A. Donenfeld

On most platforms, there exists this ifdef:

 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)

This makes this patch functionally useless. However, on PPC, there is
actually an explicit definition of atomic_inc_not_zero with its own
assembly that is slightly more optimized than atomic_add_unless. So,
this patch changes kref to use atomic_inc_not_zero instead, for PPC and
any future platforms that might provide an explicit implementation.

This also puts this usage of kref more in line with a verbatim reading
of the examples in Paul McKenney's paper [1] in the section titled "2.4
Atomic Counting With Check and Release Memory Barrier", which uses
atomic_inc_not_zero.

[1] http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2167.pdf

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
Sorry to submit this again, but people keep reviewing it saying it's fine,
but then point to somebody else to actually merge this. At the end of the
chain of fingerpointing is usually Greg. "Just have Greg do it." At this
point I'm confused, but it's certainly been sufficiently reviewed and
accepted. So can one of you just respond saying "I'll take it!"

 include/linux/kref.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/kref.h b/include/linux/kref.h
index e15828fd71f1..62f0a84ae94e 100644
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -133,6 +133,6 @@ static inline int kref_put_mutex(struct kref *kref,
  */
 static inline int __must_check kref_get_unless_zero(struct kref *kref)
 {
-	return atomic_add_unless(&kref->refcount, 1, 0);
+	return atomic_inc_not_zero(&kref->refcount);
 }
 #endif /* _KREF_H_ */
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2016-12-16  7:36 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-10 10:56 [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless Jason A. Donenfeld
2015-10-11 19:59 ` Thomas Hellstrom
2016-02-01 21:53   ` Jason A. Donenfeld
2016-06-29 22:52     ` Jason A. Donenfeld
2016-07-01  7:08       ` Patch for drm-next WAS " Thomas Hellstrom
2016-07-01  7:08         ` Thomas Hellstrom
2016-07-12 12:28         ` Daniel Vetter
2016-07-12 12:28           ` Daniel Vetter
2016-12-15  4:59           ` Jason A. Donenfeld
2016-12-15  5:01           ` Jason A. Donenfeld
2016-12-16  7:33             ` Daniel Vetter
2016-12-15  4:58   ` Jason A. Donenfeld
2016-12-15  8:51     ` Christoph Hellwig
2016-08-10 12:24 ` Fwd: " Thomas Hellstrom
2016-12-15 18:55 Jason A. Donenfeld
2016-12-15 19:10 ` Greg KH
2016-12-15 19:47   ` Jason A. Donenfeld
2016-12-16  7:36   ` Daniel Vetter
2016-12-16  7:36     ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.