All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Michal Hocko <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: dbueso@suse.de, hpa@zytor.com, akpm@linux-foundation.org,
	jcmvbkbc@gmail.com, paulmck@linux.vnet.ibm.com,
	peterz@infradead.org, mingo@kernel.org,
	linux-kernel@vger.kernel.org, tony.luck@intel.com,
	chris@zankel.net, torvalds@linux-foundation.org,
	tglx@linutronix.de, davem@davemloft.net, jason.low2@hp.com,
	mhocko@suse.com
Subject: [tip:locking/rwsem] locking/rwsem: Introduce basis for down_write_killable()
Date: Wed, 13 Apr 2016 04:34:14 -0700	[thread overview]
Message-ID: <tip-d47996082f52baa0ca8b48d26b3cbef5ede70a73@git.kernel.org> (raw)
In-Reply-To: <1460041951-22347-7-git-send-email-mhocko@kernel.org>

Commit-ID:  d47996082f52baa0ca8b48d26b3cbef5ede70a73
Gitweb:     http://git.kernel.org/tip/d47996082f52baa0ca8b48d26b3cbef5ede70a73
Author:     Michal Hocko <mhocko@suse.com>
AuthorDate: Thu, 7 Apr 2016 17:12:26 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 13 Apr 2016 10:42:20 +0200

locking/rwsem: Introduce basis for down_write_killable()

Introduce a generic implementation necessary for down_write_killable().

This is a trivial extension of the already existing down_write() call
which can be interrupted by SIGKILL.  This patch doesn't provide
down_write_killable() yet because arches have to provide the necessary
pieces before.

rwsem_down_write_failed() which is a generic slow path for the
write lock is extended to take a task state and renamed to
__rwsem_down_write_failed_common(). The return value is either a valid
semaphore pointer or ERR_PTR(-EINTR).

rwsem_down_write_failed_killable() is exported as a new way to wait for
the lock and be killable.

For rwsem-spinlock implementation the current __down_write() it updated
in a similar way as __rwsem_down_write_failed_common() except it doesn't
need new exports just visible __down_write_killable().

Architectures which are not using the generic rwsem implementation are
supposed to provide their __down_write_killable() implementation and
use rwsem_down_write_failed_killable() for the slow path.

Signed-off-by: Michal Hocko <mhocko@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chris Zankel <chris@zankel.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Signed-off-by: Jason Low <jason.low2@hp.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-alpha@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-ia64@vger.kernel.org
Cc: linux-s390@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Cc: linux-xtensa@linux-xtensa.org
Cc: sparclinux@vger.kernel.org
Link: http://lkml.kernel.org/r/1460041951-22347-7-git-send-email-mhocko@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 include/asm-generic/rwsem.h     | 12 ++++++++++++
 include/linux/rwsem-spinlock.h  |  1 +
 include/linux/rwsem.h           |  2 ++
 kernel/locking/rwsem-spinlock.c | 22 ++++++++++++++++++++--
 kernel/locking/rwsem-xadd.c     | 31 +++++++++++++++++++++++++------
 5 files changed, 60 insertions(+), 8 deletions(-)

diff --git a/include/asm-generic/rwsem.h b/include/asm-generic/rwsem.h
index b8d8a6c..3fc94a0 100644
--- a/include/asm-generic/rwsem.h
+++ b/include/asm-generic/rwsem.h
@@ -63,6 +63,18 @@ static inline void __down_write(struct rw_semaphore *sem)
 		rwsem_down_write_failed(sem);
 }
 
+static inline int __down_write_killable(struct rw_semaphore *sem)
+{
+	long tmp;
+
+	tmp = atomic_long_add_return_acquire(RWSEM_ACTIVE_WRITE_BIAS,
+				     (atomic_long_t *)&sem->count);
+	if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS))
+		if (IS_ERR(rwsem_down_write_failed_killable(sem)))
+			return -EINTR;
+	return 0;
+}
+
 static inline int __down_write_trylock(struct rw_semaphore *sem)
 {
 	long tmp;
diff --git a/include/linux/rwsem-spinlock.h b/include/linux/rwsem-spinlock.h
index a733a54..ae0528b 100644
--- a/include/linux/rwsem-spinlock.h
+++ b/include/linux/rwsem-spinlock.h
@@ -34,6 +34,7 @@ struct rw_semaphore {
 extern void __down_read(struct rw_semaphore *sem);
 extern int __down_read_trylock(struct rw_semaphore *sem);
 extern void __down_write(struct rw_semaphore *sem);
+extern int __must_check __down_write_killable(struct rw_semaphore *sem);
 extern int __down_write_trylock(struct rw_semaphore *sem);
 extern void __up_read(struct rw_semaphore *sem);
 extern void __up_write(struct rw_semaphore *sem);
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index 8f498cd..7d7ae02 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -14,6 +14,7 @@
 #include <linux/list.h>
 #include <linux/spinlock.h>
 #include <linux/atomic.h>
+#include <linux/err.h>
 #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
 #include <linux/osq_lock.h>
 #endif
@@ -43,6 +44,7 @@ struct rw_semaphore {
 
 extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem);
 extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem);
+extern struct rw_semaphore *rwsem_down_write_failed_killable(struct rw_semaphore *sem);
 extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *);
 extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem);
 
diff --git a/kernel/locking/rwsem-spinlock.c b/kernel/locking/rwsem-spinlock.c
index bab2610..1591f6b 100644
--- a/kernel/locking/rwsem-spinlock.c
+++ b/kernel/locking/rwsem-spinlock.c
@@ -191,11 +191,12 @@ int __down_read_trylock(struct rw_semaphore *sem)
 /*
  * get a write lock on the semaphore
  */
-void __sched __down_write(struct rw_semaphore *sem)
+int __sched __down_write_common(struct rw_semaphore *sem, int state)
 {
 	struct rwsem_waiter waiter;
 	struct task_struct *tsk;
 	unsigned long flags;
+	int ret = 0;
 
 	raw_spin_lock_irqsave(&sem->wait_lock, flags);
 
@@ -215,16 +216,33 @@ void __sched __down_write(struct rw_semaphore *sem)
 		 */
 		if (sem->count == 0)
 			break;
-		set_task_state(tsk, TASK_UNINTERRUPTIBLE);
+		if (signal_pending_state(state, current)) {
+			ret = -EINTR;
+			goto out;
+		}
+		set_task_state(tsk, state);
 		raw_spin_unlock_irqrestore(&sem->wait_lock, flags);
 		schedule();
 		raw_spin_lock_irqsave(&sem->wait_lock, flags);
 	}
 	/* got the lock */
 	sem->count = -1;
+out:
 	list_del(&waiter.list);
 
 	raw_spin_unlock_irqrestore(&sem->wait_lock, flags);
+
+	return ret;
+}
+
+void __sched __down_write(struct rw_semaphore *sem)
+{
+	__down_write_common(sem, TASK_UNINTERRUPTIBLE);
+}
+
+int __sched __down_write_killable(struct rw_semaphore *sem)
+{
+	return __down_write_common(sem, TASK_KILLABLE);
 }
 
 /*
diff --git a/kernel/locking/rwsem-xadd.c b/kernel/locking/rwsem-xadd.c
index a4d4de0..df4dcb8 100644
--- a/kernel/locking/rwsem-xadd.c
+++ b/kernel/locking/rwsem-xadd.c
@@ -433,12 +433,13 @@ static inline bool rwsem_has_spinner(struct rw_semaphore *sem)
 /*
  * Wait until we successfully acquire the write lock
  */
-__visible
-struct rw_semaphore __sched *rwsem_down_write_failed(struct rw_semaphore *sem)
+static inline struct rw_semaphore *
+__rwsem_down_write_failed_common(struct rw_semaphore *sem, int state)
 {
 	long count;
 	bool waiting = true; /* any queued threads before us */
 	struct rwsem_waiter waiter;
+	struct rw_semaphore *ret = sem;
 
 	/* undo write bias from down_write operation, stop active locking */
 	count = rwsem_atomic_update(-RWSEM_ACTIVE_WRITE_BIAS, sem);
@@ -478,7 +479,7 @@ struct rw_semaphore __sched *rwsem_down_write_failed(struct rw_semaphore *sem)
 		count = rwsem_atomic_update(RWSEM_WAITING_BIAS, sem);
 
 	/* wait until we successfully acquire the lock */
-	set_current_state(TASK_UNINTERRUPTIBLE);
+	set_current_state(state);
 	while (true) {
 		if (rwsem_try_write_lock(count, sem))
 			break;
@@ -486,21 +487,39 @@ struct rw_semaphore __sched *rwsem_down_write_failed(struct rw_semaphore *sem)
 
 		/* Block until there are no active lockers. */
 		do {
+			if (signal_pending_state(state, current)) {
+				raw_spin_lock_irq(&sem->wait_lock);
+				ret = ERR_PTR(-EINTR);
+				goto out;
+			}
 			schedule();
-			set_current_state(TASK_UNINTERRUPTIBLE);
+			set_current_state(state);
 		} while ((count = sem->count) & RWSEM_ACTIVE_MASK);
 
 		raw_spin_lock_irq(&sem->wait_lock);
 	}
+out:
 	__set_current_state(TASK_RUNNING);
-
 	list_del(&waiter.list);
 	raw_spin_unlock_irq(&sem->wait_lock);
 
-	return sem;
+	return ret;
+}
+
+__visible struct rw_semaphore * __sched
+rwsem_down_write_failed(struct rw_semaphore *sem)
+{
+	return __rwsem_down_write_failed_common(sem, TASK_UNINTERRUPTIBLE);
 }
 EXPORT_SYMBOL(rwsem_down_write_failed);
 
+__visible struct rw_semaphore * __sched
+rwsem_down_write_failed_killable(struct rw_semaphore *sem)
+{
+	return __rwsem_down_write_failed_common(sem, TASK_KILLABLE);
+}
+EXPORT_SYMBOL(rwsem_down_write_failed_killable);
+
 /*
  * handle waking up a waiter on the semaphore
  * - up_read/up_write has decremented the active part of count if we come here

  reply	other threads:[~2016-04-13 11:36 UTC|newest]

Thread overview: 226+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-29 12:58 [PATCH 0/11] introduce down_write_killable for rw_semaphore Michal Hocko
2016-02-29 12:58 ` Michal Hocko
2016-02-29 12:58 ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 03/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-03-30 13:25   ` Peter Zijlstra
2016-03-30 13:25     ` Peter Zijlstra
2016-03-31  8:33     ` Michal Hocko
2016-03-31  8:33       ` Michal Hocko
2016-03-31  8:44       ` Peter Zijlstra
2016-03-31  8:44         ` Peter Zijlstra
2016-03-31  8:55   ` [PATCH] " Michal Hocko
2016-03-31  8:55     ` Michal Hocko
2016-02-29 12:58 ` [PATCH 04/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 05/11] ia64, " Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 06/11] s390, " Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 07/11] sh, " Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 08/11] sparc, " Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 09/11] xtensa, " Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 10/11] x86, " Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-02-29 12:58 ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-02-29 12:58   ` Michal Hocko
2016-03-30 13:32 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore Peter Zijlstra
2016-03-30 13:32   ` Peter Zijlstra
2016-03-31  8:59   ` Michal Hocko
2016-03-31  8:59     ` Michal Hocko
2016-03-31  9:20     ` Ingo Molnar
2016-03-31  9:20       ` Ingo Molnar
2016-03-31 10:58       ` Michal Hocko
2016-03-31 10:58         ` Michal Hocko
2016-03-31 17:03       ` Andrew Morton
2016-03-31 17:03         ` Andrew Morton
2016-04-01  6:33         ` Ingo Molnar
2016-04-01  6:33           ` Ingo Molnar
2016-04-01  9:21           ` Michal Hocko
2016-04-01  9:21             ` Michal Hocko
2016-04-01  9:50             ` Ingo Molnar
2016-04-01  9:50               ` Ingo Molnar
2016-04-01 10:52               ` Michal Hocko
2016-04-01 10:52                 ` Michal Hocko
2016-04-01  7:26         ` Michal Hocko
2016-04-01  7:26           ` Michal Hocko
2016-04-01  9:11           ` Andrew Morton
2016-04-01  9:11             ` Andrew Morton
2016-04-01 11:04 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v2 Michal Hocko
2016-04-01 11:04   ` Michal Hocko
2016-04-01 11:04   ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-02  0:28     ` Davidlohr Bueso
2016-04-02  0:28       ` Davidlohr Bueso
2016-04-01 11:04   ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-02  1:17     ` Davidlohr Bueso
2016-04-02  1:17       ` Davidlohr Bueso
2016-04-04  9:03       ` Michal Hocko
2016-04-04  9:03         ` Michal Hocko
2016-04-04  9:06         ` [PATCH 1/2] xtensa, rwsem: drop superfluous arch specific implementation Michal Hocko
2016-04-04  9:06           ` Michal Hocko
2016-04-04  9:06           ` [PATCH 2/2] sh, " Michal Hocko
2016-04-04  9:06             ` Michal Hocko
2016-04-06  9:26             ` Peter Zijlstra
2016-04-06  9:26               ` Peter Zijlstra
2016-04-06  9:50               ` Geert Uytterhoeven
2016-04-06  9:50                 ` Geert Uytterhoeven
2016-04-06 10:27                 ` Peter Zijlstra
2016-04-06 10:27                   ` Peter Zijlstra
2016-04-04 10:23           ` [PATCH 1/2] xtensa, " Max Filippov
2016-04-04 10:23             ` Max Filippov
2016-04-06  9:06       ` [PATCH] sparc, " Michal Hocko
2016-04-06  9:06         ` Michal Hocko
2016-04-06  9:06         ` Michal Hocko
2016-04-06  9:06         ` Michal Hocko
2016-04-01 11:04   ` [PATCH 03/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-02  4:41     ` Davidlohr Bueso
2016-04-02  4:41       ` Davidlohr Bueso
2016-04-04  9:17       ` Michal Hocko
2016-04-04  9:17         ` Michal Hocko
2016-04-04  9:21         ` Peter Zijlstra
2016-04-04  9:21           ` Peter Zijlstra
2016-04-07  6:58         ` Davidlohr Bueso
2016-04-07  6:58           ` Davidlohr Bueso
2016-04-07  7:38           ` Michal Hocko
2016-04-07  7:38             ` Michal Hocko
2016-05-10 10:43     ` Tetsuo Handa
2016-05-10 11:53       ` Michal Hocko
2016-05-10 12:38         ` Peter Zijlstra
2016-05-10 13:57           ` Tetsuo Handa
2016-05-11  7:23           ` Michal Hocko
2016-05-11  8:28             ` Michal Hocko
2016-05-11  8:44               ` Peter Zijlstra
2016-05-11  9:04                 ` Michal Hocko
2016-05-11  9:17                   ` Peter Zijlstra
2016-05-11  9:31                     ` Michal Hocko
2016-05-11  9:41                       ` Peter Zijlstra
2016-05-11 13:59                         ` Michal Hocko
2016-05-11 18:03                           ` Michal Hocko
2016-05-12 11:57                             ` [PATCH] locking, rwsem: Fix down_write_killable() Peter Zijlstra
2016-05-12 12:15                               ` [tip:locking/rwsem] locking/rwsem: " tip-bot for Peter Zijlstra
2016-05-12 16:59                               ` [PATCH] locking, rwsem: " Michal Hocko
2016-05-15 20:57                               ` [tip:locking/rwsem] locking/rwsem: " tip-bot for Peter Zijlstra
2016-05-12 12:12                             ` [PATCH 03/11] locking, rwsem: introduce basis for down_write_killable Peter Zijlstra
2016-05-12 12:19                               ` Michal Hocko
2016-05-12 13:58                                 ` Peter Zijlstra
2016-05-12 19:42                                 ` Waiman Long
2016-05-11  8:35             ` Peter Zijlstra
2016-05-11  9:02               ` Michal Hocko
2016-04-01 11:04   ` [PATCH 04/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-01 11:04   ` [PATCH 05/11] ia64, " Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-01 11:04   ` [PATCH 06/11] s390, " Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-01 11:04   ` [PATCH 07/11] sh, " Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-01 11:04   ` [PATCH 08/11] sparc, " Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-01 11:04   ` [PATCH 09/11] xtensa, " Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-01 11:04   ` [PATCH 10/11] x86, " Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-06 18:31     ` Peter Zijlstra
2016-04-06 18:31       ` Peter Zijlstra
2016-04-01 11:04   ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-04-01 11:04     ` Michal Hocko
2016-04-07 15:12 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v3 Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12   ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13 11:32     ` [tip:locking/rwsem] locking/rwsem: Get rid of __down_write_nested() tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13 11:32     ` [tip:locking/rwsem] locking/rwsem: Drop " tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 03/11] xtensa, rwsem: drop superfluous arch specific implementation Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13 11:33     ` [tip:locking/rwsem] locking/rwsem, xtensa: Drop " tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 04/11] sh, rwsem: drop " Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13 11:33     ` [tip:locking/rwsem] locking/rwsem, sh: Drop " tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 05/11] sparc, rwsem: drop " Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13 11:33     ` [tip:locking/rwsem] locking/rwsem, sparc: Drop " tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 06/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13 11:34     ` tip-bot for Michal Hocko [this message]
2016-04-07 15:12   ` [PATCH 07/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-22  9:42     ` [tip:locking/rwsem] locking/rwsem, alpha: Provide __down_write_killable() tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 08/11] ia64, rwsem: provide __down_write_killable Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-07 17:28     ` Sergei Shtylyov
2016-04-07 17:28       ` Sergei Shtylyov
2016-04-08  6:22       ` Michal Hocko
2016-04-08  6:22         ` Michal Hocko
2016-04-22  9:43     ` [tip:locking/rwsem] locking/rwsem, ia64: Provide __down_write_killable() tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 09/11] s390, rwsem: provide __down_write_killable Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-22  9:43     ` [tip:locking/rwsem] locking/rwsem, s390: Provide __down_write_killable() tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 10/11] x86, rwsem: provide __down_write_killable Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-13  9:08     ` Ingo Molnar
2016-04-13  9:08       ` Ingo Molnar
2016-04-13  9:16       ` Michal Hocko
2016-04-13  9:16         ` Michal Hocko
2016-04-13  9:19         ` Ingo Molnar
2016-04-13  9:19           ` Ingo Molnar
2016-04-13 10:27           ` Ingo Molnar
2016-04-13 10:27             ` Ingo Molnar
2016-04-13 12:49             ` Michal Hocko
2016-04-13 12:49               ` Michal Hocko
2016-04-13 12:49               ` Michal Hocko
2016-04-13 12:49               ` Michal Hocko
2016-04-17 16:59               ` Michal Hocko
2016-04-17 16:59                 ` Michal Hocko
2016-04-17 16:59                 ` Michal Hocko
2016-04-20 13:40               ` Peter Zijlstra
2016-04-20 13:40                 ` Peter Zijlstra
2016-04-20 13:40                 ` Peter Zijlstra
2016-04-20 18:04                 ` H. Peter Anvin
2016-04-20 18:04                   ` H. Peter Anvin
2016-04-20 20:45                   ` Borislav Petkov
2016-04-20 20:45                     ` Borislav Petkov
2016-04-20 20:58                     ` Michal Hocko
2016-04-20 20:58                       ` Michal Hocko
2016-04-20 21:06                     ` H. Peter Anvin
2016-04-20 21:06                       ` H. Peter Anvin
2016-04-20 21:36                       ` Borislav Petkov
2016-04-20 21:36                         ` Borislav Petkov
2016-04-20 22:29                         ` H. Peter Anvin
2016-04-20 22:29                           ` H. Peter Anvin
2016-04-21 11:35                           ` Borislav Petkov
2016-04-21 11:35                             ` Borislav Petkov
2016-04-21 13:09                             ` Michal Hocko
2016-04-21 13:09                               ` Michal Hocko
2016-04-21 13:21                               ` Borislav Petkov
2016-04-21 13:21                                 ` Borislav Petkov
2016-04-27 12:02                           ` [PATCH] x86/locking/rwsem: Cleanup ____down_write() Borislav Petkov
2016-04-27 12:02                             ` Borislav Petkov
2016-04-28 10:27                             ` [tip:locking/rwsem] locking/rwsem, x86: Clean up ____down_write() tip-bot for Borislav Petkov
2016-04-22  6:53                 ` [PATCH 10/11] x86, rwsem: provide __down_write_killable Ingo Molnar
2016-04-22  6:53                   ` Ingo Molnar
2016-04-22  6:53                   ` Ingo Molnar
2016-04-13  9:57     ` [PATCH] x86: add frame annotation for call_rwsem_down_write_failed_killable Michal Hocko
2016-04-13  9:57       ` Michal Hocko
2016-04-13  9:57       ` Michal Hocko
2016-04-22  9:44       ` [tip:locking/rwsem] locking/rwsem, x86: Add frame annotation for call_rwsem_down_write_failed_killable() tip-bot for Michal Hocko
2016-04-22  9:43     ` [tip:locking/rwsem] locking/rwsem, x86: Provide __down_write_killable() tip-bot for Michal Hocko
2016-04-07 15:12   ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-04-07 15:12     ` Michal Hocko
2016-04-22  9:44     ` [tip:locking/rwsem] locking/rwsem: Provide down_write_killable() tip-bot for Michal Hocko
2016-04-12  9:37   ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v3 Michal Hocko
2016-04-12  9:37     ` Michal Hocko
2016-04-12 15:40     ` Peter Zijlstra
2016-04-12 15:40       ` Peter Zijlstra
2016-04-12 18:01       ` Michal Hocko
2016-04-12 18:01         ` Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-d47996082f52baa0ca8b48d26b3cbef5ede70a73@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=akpm@linux-foundation.org \
    --cc=chris@zankel.net \
    --cc=davem@davemloft.net \
    --cc=dbueso@suse.de \
    --cc=hpa@zytor.com \
    --cc=jason.low2@hp.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mhocko@suse.com \
    --cc=mingo@kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.