On Tue, Apr 16, 2019 at 04:18:20PM +0200, Peter Zijlstra wrote:
> On Tue, Apr 16, 2019 at 09:32:38AM -0400, Waiman Long wrote:
> > On 04/16/2019 09:22 AM, Peter Zijlstra wrote:
> > > On Sat, Apr 13, 2019 at 01:22:47PM -0400, Waiman Long wrote:
> > >> +#define RWSEM_COUNT_LOCKED(c)   ((c) & RWSEM_LOCK_MASK)
> > > The above doesn't seem to make it more readable or shorter.
> > 
> > Fair enough. I can remove that macro.
> 
> I did the same for the HANDOFF patch but seem to have misplaced the
> delta and have already refreshed the patch.

Had to redo it, so here goes:

---
--- a/kernel/locking/rwsem.c
+++ b/kernel/locking/rwsem.c
@@ -102,9 +102,6 @@
 #define RWSEM_READ_FAILED_MASK (RWSEM_WRITER_MASK|RWSEM_FLAG_WAITERS|\
                                 RWSEM_FLAG_HANDOFF)
 
-#define RWSEM_COUNT_HANDOFF(c) ((c) & RWSEM_FLAG_HANDOFF)
-#define RWSEM_COUNT_LOCKED_OR_HANDOFF(c)       \
-       ((c) & (RWSEM_LOCK_MASK|RWSEM_FLAG_HANDOFF))
 /*
  * All writes to owner are protected by WRITE_ONCE() to make sure that
  * store tearing can't happen as optimistic spinners may read and use
@@ -365,7 +362,7 @@ static void __rwsem_mark_wake(struct rw_
        /*
         * Clear the handoff flag
         */
-       if (woken && RWSEM_COUNT_HANDOFF(atomic_long_read(&sem->count)))
+       if (woken && (atomic_long_read(&sem->count) & RWSEM_FLAG_HANDOFF))
                adjustment -= RWSEM_FLAG_HANDOFF;
 
        if (adjustment)
@@ -387,7 +384,7 @@ static inline bool rwsem_try_write_lock(
 
 retry:
        if (count & RWSEM_LOCK_MASM)) {
-               if (RWSEM_COUNT_HANDOFF(count) || (wstate != WRITER_HANDOFF))
+               if ((count & RWSEM_FLAG_HANDOFF) || (wstate != WRITER_HANDOFF))
                        return false;
                /*
                 * The lock may become free just before setting handoff bit.
@@ -398,7 +395,7 @@ static inline bool rwsem_try_write_lock(
                goto retry;
        }
 
-       if ((wstate == WRITER_NOT_FIRST) && RWSEM_COUNT_HANDOFF(count))
+       if ((wstate == WRITER_NOT_FIRST) && (count & RWSEM_FLAG_HANDOFF))
                return false;
 
        new = (count & ~RWSEM_FLAG_HANDOFF) + RWSEM_WRITER_LOCKED -
@@ -409,7 +406,7 @@ static inline bool rwsem_try_write_lock(
                return true;
        }
 
-       if (unlikely((wstate == WRITER_HANDOFF) && !RWSEM_COUNT_HANDOFF(count)))
+       if (unlikely((wstate == WRITER_HANDOFF) && !(count & 
RWSEM_FLAG_HANDOFF)))
                goto retry;
 
        return false;
@@ -704,7 +701,7 @@ __rwsem_down_write_failed_common(struct
                            rwsem_waiter_is_first(sem, &waiter))
                                wstate = WRITER_FIRST;
 
-                       if (!RWSEM_COUNT_LOCKED(count))
+                       if (!(count & RWSEM_LOCK_MASK))
                                break;
 
                        /*

Reply via email to