dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
  • * Fwd: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless
           [not found] <1444474594-28359-1-git-send-email-Jason@zx2c4.com>
           [not found] ` <561ABFA6.8050102@vmware.com>
    @ 2016-08-10 12:24 ` Thomas Hellstrom
      1 sibling, 0 replies; 6+ messages in thread
    From: Thomas Hellstrom @ 2016-08-10 12:24 UTC (permalink / raw)
      To: Daniel Vetter; +Cc: dri-devel@lists.freedesktop.org
    
    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] 6+ messages in thread

  • end of thread, other threads:[~2016-12-16  7:33 UTC | newest]
    
    Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <1444474594-28359-1-git-send-email-Jason@zx2c4.com>
         [not found] ` <561ABFA6.8050102@vmware.com>
         [not found]   ` <CAHmME9qZwkUqYxsTohUoNTLzxcPsrxV9swM3HH0rxpOLMmCmjQ@mail.gmail.com>
         [not found]     ` <CAHmME9rVPQ+SWqAe6Lqj4Do16mpCmSUz5_6Q2qyYj6mqnJec7g@mail.gmail.com>
    2016-07-01  7:08       ` Patch for drm-next WAS Re: [PATCH] kref: prefer atomic_inc_not_zero to atomic_add_unless Thomas Hellstrom
    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-08-10 12:24 ` Fwd: " Thomas Hellstrom
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox