All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Will Deacon <will.deacon@arm.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>,
	Ingo Molnar <mingo@elte.hu>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linux-mm <linux-mm@kvack.org>,
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Waiman Long <waiman.long@hp.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
	Michel Lespinasse <walken@google.com>,
	Davidlohr Bueso <davidlohr.bueso@hp.com>,
	Matthew R Wilcox <matthew.r.wilcox@intel.com>,
	Dave Hansen <dave.hansen@intel.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Rik van Riel <riel@redhat.com>,
	Peter Hurley <peter@hurleysoftware.com>
Subject: Re: [PATCH v6 0/5] MCS Lock: MCS lock code cleanup and optimizations
Date: Wed, 20 Nov 2013 09:14:48 -0800	[thread overview]
Message-ID: <20131120171448.GJ4138@linux.vnet.ibm.com> (raw)
In-Reply-To: <20131120170017.GI19352@mudshark.cambridge.arm.com>

On Wed, Nov 20, 2013 at 05:00:17PM +0000, Will Deacon wrote:
> On Wed, Nov 20, 2013 at 12:50:23PM +0000, Paul E. McKenney wrote:
> > On Wed, Nov 20, 2013 at 10:19:57AM +0000, Will Deacon wrote:
> > > On Wed, Nov 20, 2013 at 01:37:26AM +0000, Tim Chen wrote:
> > > > Will, do you want to take a crack at adding implementation for ARM
> > > > with wfe instruction?
> > > 
> > > Sure, I'll have a go this week. Thanks for keeping that as a consideration!
> > > 
> > > As an aside: what are you using to test this code, so that I can make sure I
> > > don't break it?
> > 
> > +1 to that!  In fact, it would be nice to have the test code in-tree,
> > especially if it can test a wide variety of locks.  (/me needs to look
> > at what test code for locks might already be in tree, for that matter...)
> 
> Well, in the absence of those tests, I've implemented something that I think
> will work for ARM and could be easily extended to arm64.
> 
> Tim: I reverted your final patch and went with Paul's suggestion just to
> look into the contended case. I'm also not sure about adding
> asm/mcs_spinlock.h. This stuff might be better in asm/spinlock.h, which
> already exists and contains both spinlocks and rwlocks. Depends on how much
> people dislike the Kconfig symbol + conditional #include.
> 
> Anyway, patches below. I included the ARM bits for reference, but please
> don't include them in your series!

This approach does look way better than replicating the entire MCS-lock
implementation on a bunch of architectures!  ;-)

							Thanx, Paul

> Cheers,
> 
> Will
> 
> --->8
> 
> >From 074f4cdf9ddc97454467b9ad9f85128ee67c5604 Mon Sep 17 00:00:00 2001
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 20 Nov 2013 16:14:04 +0000
> Subject: [PATCH 1/3] MCS Lock: allow architectures to hook in to contended
>  paths
> 
> When contended, architectures may be able to reduce the polling overhead
> in ways which aren't expressible using a simple relax() primitive.
> 
> This patch allows architectures to hook into the mcs_{lock,unlock}
> functions for the contended cases only.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  kernel/locking/mcs_spinlock.c | 47 +++++++++++++++++++++++++------------------
>  1 file changed, 27 insertions(+), 20 deletions(-)
> 
> diff --git a/kernel/locking/mcs_spinlock.c b/kernel/locking/mcs_spinlock.c
> index 6f2ce8efb006..853070b8a86d 100644
> --- a/kernel/locking/mcs_spinlock.c
> +++ b/kernel/locking/mcs_spinlock.c
> @@ -7,19 +7,34 @@
>   * It avoids expensive cache bouncings that common test-and-set spin-lock
>   * implementations incur.
>   */
> -/*
> - * asm/processor.h may define arch_mutex_cpu_relax().
> - * If it is not defined, cpu_relax() will be used.
> - */
> +
>  #include <asm/barrier.h>
>  #include <asm/cmpxchg.h>
>  #include <asm/processor.h>
>  #include <linux/compiler.h>
>  #include <linux/mcs_spinlock.h>
> +#include <linux/mutex.h>
>  #include <linux/export.h>
> 
> -#ifndef arch_mutex_cpu_relax
> -# define arch_mutex_cpu_relax() cpu_relax()
> +#ifndef arch_mcs_spin_lock_contended
> +/*
> + * Using smp_load_acquire() provides a memory barrier that ensures
> + * subsequent operations happen after the lock is acquired.
> + */
> +#define arch_mcs_spin_lock_contended(l)					\
> +	while (!(smp_load_acquire(l))) {				\
> +		arch_mutex_cpu_relax();					\
> +	}
> +#endif
> +
> +#ifndef arch_mcs_spin_unlock_contended
> +/*
> + * smp_store_release() provides a memory barrier to ensure all
> + * operations in the critical section has been completed before
> + * unlocking.
> + */
> +#define arch_mcs_spin_unlock_contended(l)				\
> +	smp_store_release((l), 1)
>  #endif
> 
>  /*
> @@ -44,13 +59,9 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
>  		return;
>  	}
>  	ACCESS_ONCE(prev->next) = node;
> -	/*
> -	 * Wait until the lock holder passes the lock down.
> -	 * Using smp_load_acquire() provides a memory barrier that
> -	 * ensures subsequent operations happen after the lock is acquired.
> -	 */
> -	while (!(smp_load_acquire(&node->locked)))
> -		arch_mutex_cpu_relax();
> +
> +	/* Wait until the lock holder passes the lock down. */
> +	arch_mcs_spin_lock_contended(&node->locked);
>  }
>  EXPORT_SYMBOL_GPL(mcs_spin_lock);
> 
> @@ -72,12 +83,8 @@ void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
>  		while (!(next = ACCESS_ONCE(node->next)))
>  			arch_mutex_cpu_relax();
>  	}
> -	/*
> -	 * Pass lock to next waiter.
> -	 * smp_store_release() provides a memory barrier to ensure
> -	 * all operations in the critical section has been completed
> -	 * before unlocking.
> -	 */
> -	smp_store_release(&next->locked, 1);
> +
> +	/* Pass lock to next waiter. */
> +	arch_mcs_spin_unlock_contended(&next->locked);
>  }
>  EXPORT_SYMBOL_GPL(mcs_spin_unlock);
> -- 
> 1.8.2.2
> 
> 
> >From faa48f77a17cfd99562b1e36de278367aa4d389c Mon Sep 17 00:00:00 2001
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 20 Nov 2013 16:10:57 +0000
> Subject: [PATCH 2/3] MCS Lock: add Kconfig entries to allow arch-specific
>  hooks
> 
> This patch adds Kconfig entries to allow architectures to hook into the
> MCS lock/unlock functions in the contended case.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/Kconfig                 | 3 +++
>  include/linux/mcs_spinlock.h | 8 ++++++++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/arch/Kconfig b/arch/Kconfig
> index f1cf895c040f..ae738f706325 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -303,6 +303,9 @@ config HAVE_CMPXCHG_LOCAL
>  config HAVE_CMPXCHG_DOUBLE
>  	bool
> 
> +config HAVE_ARCH_MCS_LOCK
> +	bool
> +
>  config ARCH_WANT_IPC_PARSE_VERSION
>  	bool
> 
> diff --git a/include/linux/mcs_spinlock.h b/include/linux/mcs_spinlock.h
> index d54bb232a238..d2c02adb0bbd 100644
> --- a/include/linux/mcs_spinlock.h
> +++ b/include/linux/mcs_spinlock.h
> @@ -12,6 +12,14 @@
>  #ifndef __LINUX_MCS_SPINLOCK_H
>  #define __LINUX_MCS_SPINLOCK_H
> 
> +/*
> + * An architecture may provide its own lock/unlock functions for the
> + * contended case.
> + */
> +#ifdef CONFIG_HAVE_ARCH_MCS_LOCK
> +#include <asm/mcs_spinlock.h>
> +#endif
> +
>  struct mcs_spinlock {
>  	struct mcs_spinlock *next;
>  	int locked; /* 1 if lock acquired */
> -- 
> 1.8.2.2
> 
> 
> >From 21f047d40002ec4f1b780eee88f16a1870ab00ef Mon Sep 17 00:00:00 2001
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 20 Nov 2013 16:15:31 +0000
> Subject: [PATCH 3/3] ARM: mcs lock: implement wfe-based polling for MCS
>  locking
> 
> This patch introduces a wfe-based polling loop for spinning on contended
> MCS locks and waking up corresponding waiters when the lock is released.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/arm/Kconfig                    |  1 +
>  arch/arm/include/asm/mcs_spinlock.h | 20 ++++++++++++++++++++
>  2 files changed, 21 insertions(+)
>  create mode 100644 arch/arm/include/asm/mcs_spinlock.h
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 214b698cefea..ab9fb84599ac 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -25,6 +25,7 @@ config ARM
>  	select HARDIRQS_SW_RESEND
>  	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
>  	select HAVE_ARCH_KGDB
> +	select HAVE_ARCH_MCS_LOCK
>  	select HAVE_ARCH_SECCOMP_FILTER
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_BPF_JIT
> diff --git a/arch/arm/include/asm/mcs_spinlock.h b/arch/arm/include/asm/mcs_spinlock.h
> new file mode 100644
> index 000000000000..f32f97e81471
> --- /dev/null
> +++ b/arch/arm/include/asm/mcs_spinlock.h
> @@ -0,0 +1,20 @@
> +#ifndef __ASM_MCS_LOCK_H
> +#define __ASM_MCS_LOCK_H
> +
> +/* MCS spin-locking. */
> +#define arch_mcs_spin_lock_contended(lock)				\
> +do {									\
> +	/* Ensure prior stores are observed before we enter wfe. */	\
> +	smp_mb();							\
> +	while (!(smp_load_acquire(lock)))				\
> +		wfe();							\
> +} while (0)								\
> +
> +#define arch_mcs_spin_unlock_contended(lock)				\
> +do {									\
> +	smp_store_release(lock, 1);					\
> +	dsb(ishst);							\
> +	sev();								\
> +} while (0)
> +
> +#endif	/* __ASM_MCS_LOCK_H */
> -- 
> 1.8.2.2
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Will Deacon <will.deacon@arm.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>,
	Ingo Molnar <mingo@elte.hu>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linux-mm <linux-mm@kvack.org>,
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Waiman Long <waiman.long@hp.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
	Michel Lespinasse <walken@google.com>,
	Davidlohr Bueso <davidlohr.bueso@hp.com>,
	Matthew R Wilcox <matthew.r.wilcox@intel.com>,
	Dave Hansen <dave.hansen@intel.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Rik van Riel <riel@redhat.com>,
	Peter Hurley <peter@hurleysoftware.com>,
	Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
	George Spelvin <linux@horizon.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Arnd Bergmann <arnd@arndb.de>,
	Aswin Chandramouleeswaran <aswin@hp.com>,
	Scott J Norton <scott.norton@hp.com>,
	"Figo.zhang" <figo1802@gmail.com>
Subject: Re: [PATCH v6 0/5] MCS Lock: MCS lock code cleanup and optimizations
Date: Wed, 20 Nov 2013 09:14:48 -0800	[thread overview]
Message-ID: <20131120171448.GJ4138@linux.vnet.ibm.com> (raw)
In-Reply-To: <20131120170017.GI19352@mudshark.cambridge.arm.com>

On Wed, Nov 20, 2013 at 05:00:17PM +0000, Will Deacon wrote:
> On Wed, Nov 20, 2013 at 12:50:23PM +0000, Paul E. McKenney wrote:
> > On Wed, Nov 20, 2013 at 10:19:57AM +0000, Will Deacon wrote:
> > > On Wed, Nov 20, 2013 at 01:37:26AM +0000, Tim Chen wrote:
> > > > Will, do you want to take a crack at adding implementation for ARM
> > > > with wfe instruction?
> > > 
> > > Sure, I'll have a go this week. Thanks for keeping that as a consideration!
> > > 
> > > As an aside: what are you using to test this code, so that I can make sure I
> > > don't break it?
> > 
> > +1 to that!  In fact, it would be nice to have the test code in-tree,
> > especially if it can test a wide variety of locks.  (/me needs to look
> > at what test code for locks might already be in tree, for that matter...)
> 
> Well, in the absence of those tests, I've implemented something that I think
> will work for ARM and could be easily extended to arm64.
> 
> Tim: I reverted your final patch and went with Paul's suggestion just to
> look into the contended case. I'm also not sure about adding
> asm/mcs_spinlock.h. This stuff might be better in asm/spinlock.h, which
> already exists and contains both spinlocks and rwlocks. Depends on how much
> people dislike the Kconfig symbol + conditional #include.
> 
> Anyway, patches below. I included the ARM bits for reference, but please
> don't include them in your series!

This approach does look way better than replicating the entire MCS-lock
implementation on a bunch of architectures!  ;-)

							Thanx, Paul

> Cheers,
> 
> Will
> 
> --->8
> 
> >From 074f4cdf9ddc97454467b9ad9f85128ee67c5604 Mon Sep 17 00:00:00 2001
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 20 Nov 2013 16:14:04 +0000
> Subject: [PATCH 1/3] MCS Lock: allow architectures to hook in to contended
>  paths
> 
> When contended, architectures may be able to reduce the polling overhead
> in ways which aren't expressible using a simple relax() primitive.
> 
> This patch allows architectures to hook into the mcs_{lock,unlock}
> functions for the contended cases only.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  kernel/locking/mcs_spinlock.c | 47 +++++++++++++++++++++++++------------------
>  1 file changed, 27 insertions(+), 20 deletions(-)
> 
> diff --git a/kernel/locking/mcs_spinlock.c b/kernel/locking/mcs_spinlock.c
> index 6f2ce8efb006..853070b8a86d 100644
> --- a/kernel/locking/mcs_spinlock.c
> +++ b/kernel/locking/mcs_spinlock.c
> @@ -7,19 +7,34 @@
>   * It avoids expensive cache bouncings that common test-and-set spin-lock
>   * implementations incur.
>   */
> -/*
> - * asm/processor.h may define arch_mutex_cpu_relax().
> - * If it is not defined, cpu_relax() will be used.
> - */
> +
>  #include <asm/barrier.h>
>  #include <asm/cmpxchg.h>
>  #include <asm/processor.h>
>  #include <linux/compiler.h>
>  #include <linux/mcs_spinlock.h>
> +#include <linux/mutex.h>
>  #include <linux/export.h>
> 
> -#ifndef arch_mutex_cpu_relax
> -# define arch_mutex_cpu_relax() cpu_relax()
> +#ifndef arch_mcs_spin_lock_contended
> +/*
> + * Using smp_load_acquire() provides a memory barrier that ensures
> + * subsequent operations happen after the lock is acquired.
> + */
> +#define arch_mcs_spin_lock_contended(l)					\
> +	while (!(smp_load_acquire(l))) {				\
> +		arch_mutex_cpu_relax();					\
> +	}
> +#endif
> +
> +#ifndef arch_mcs_spin_unlock_contended
> +/*
> + * smp_store_release() provides a memory barrier to ensure all
> + * operations in the critical section has been completed before
> + * unlocking.
> + */
> +#define arch_mcs_spin_unlock_contended(l)				\
> +	smp_store_release((l), 1)
>  #endif
> 
>  /*
> @@ -44,13 +59,9 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
>  		return;
>  	}
>  	ACCESS_ONCE(prev->next) = node;
> -	/*
> -	 * Wait until the lock holder passes the lock down.
> -	 * Using smp_load_acquire() provides a memory barrier that
> -	 * ensures subsequent operations happen after the lock is acquired.
> -	 */
> -	while (!(smp_load_acquire(&node->locked)))
> -		arch_mutex_cpu_relax();
> +
> +	/* Wait until the lock holder passes the lock down. */
> +	arch_mcs_spin_lock_contended(&node->locked);
>  }
>  EXPORT_SYMBOL_GPL(mcs_spin_lock);
> 
> @@ -72,12 +83,8 @@ void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
>  		while (!(next = ACCESS_ONCE(node->next)))
>  			arch_mutex_cpu_relax();
>  	}
> -	/*
> -	 * Pass lock to next waiter.
> -	 * smp_store_release() provides a memory barrier to ensure
> -	 * all operations in the critical section has been completed
> -	 * before unlocking.
> -	 */
> -	smp_store_release(&next->locked, 1);
> +
> +	/* Pass lock to next waiter. */
> +	arch_mcs_spin_unlock_contended(&next->locked);
>  }
>  EXPORT_SYMBOL_GPL(mcs_spin_unlock);
> -- 
> 1.8.2.2
> 
> 
> >From faa48f77a17cfd99562b1e36de278367aa4d389c Mon Sep 17 00:00:00 2001
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 20 Nov 2013 16:10:57 +0000
> Subject: [PATCH 2/3] MCS Lock: add Kconfig entries to allow arch-specific
>  hooks
> 
> This patch adds Kconfig entries to allow architectures to hook into the
> MCS lock/unlock functions in the contended case.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/Kconfig                 | 3 +++
>  include/linux/mcs_spinlock.h | 8 ++++++++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/arch/Kconfig b/arch/Kconfig
> index f1cf895c040f..ae738f706325 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -303,6 +303,9 @@ config HAVE_CMPXCHG_LOCAL
>  config HAVE_CMPXCHG_DOUBLE
>  	bool
> 
> +config HAVE_ARCH_MCS_LOCK
> +	bool
> +
>  config ARCH_WANT_IPC_PARSE_VERSION
>  	bool
> 
> diff --git a/include/linux/mcs_spinlock.h b/include/linux/mcs_spinlock.h
> index d54bb232a238..d2c02adb0bbd 100644
> --- a/include/linux/mcs_spinlock.h
> +++ b/include/linux/mcs_spinlock.h
> @@ -12,6 +12,14 @@
>  #ifndef __LINUX_MCS_SPINLOCK_H
>  #define __LINUX_MCS_SPINLOCK_H
> 
> +/*
> + * An architecture may provide its own lock/unlock functions for the
> + * contended case.
> + */
> +#ifdef CONFIG_HAVE_ARCH_MCS_LOCK
> +#include <asm/mcs_spinlock.h>
> +#endif
> +
>  struct mcs_spinlock {
>  	struct mcs_spinlock *next;
>  	int locked; /* 1 if lock acquired */
> -- 
> 1.8.2.2
> 
> 
> >From 21f047d40002ec4f1b780eee88f16a1870ab00ef Mon Sep 17 00:00:00 2001
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 20 Nov 2013 16:15:31 +0000
> Subject: [PATCH 3/3] ARM: mcs lock: implement wfe-based polling for MCS
>  locking
> 
> This patch introduces a wfe-based polling loop for spinning on contended
> MCS locks and waking up corresponding waiters when the lock is released.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/arm/Kconfig                    |  1 +
>  arch/arm/include/asm/mcs_spinlock.h | 20 ++++++++++++++++++++
>  2 files changed, 21 insertions(+)
>  create mode 100644 arch/arm/include/asm/mcs_spinlock.h
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 214b698cefea..ab9fb84599ac 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -25,6 +25,7 @@ config ARM
>  	select HARDIRQS_SW_RESEND
>  	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
>  	select HAVE_ARCH_KGDB
> +	select HAVE_ARCH_MCS_LOCK
>  	select HAVE_ARCH_SECCOMP_FILTER
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_BPF_JIT
> diff --git a/arch/arm/include/asm/mcs_spinlock.h b/arch/arm/include/asm/mcs_spinlock.h
> new file mode 100644
> index 000000000000..f32f97e81471
> --- /dev/null
> +++ b/arch/arm/include/asm/mcs_spinlock.h
> @@ -0,0 +1,20 @@
> +#ifndef __ASM_MCS_LOCK_H
> +#define __ASM_MCS_LOCK_H
> +
> +/* MCS spin-locking. */
> +#define arch_mcs_spin_lock_contended(lock)				\
> +do {									\
> +	/* Ensure prior stores are observed before we enter wfe. */	\
> +	smp_mb();							\
> +	while (!(smp_load_acquire(lock)))				\
> +		wfe();							\
> +} while (0)								\
> +
> +#define arch_mcs_spin_unlock_contended(lock)				\
> +do {									\
> +	smp_store_release(lock, 1);					\
> +	dsb(ishst);							\
> +	sev();								\
> +} while (0)
> +
> +#endif	/* __ASM_MCS_LOCK_H */
> -- 
> 1.8.2.2
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2013-11-20 17:14 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1384885312.git.tim.c.chen@linux.intel.com>
2013-11-20  1:37 ` [PATCH v6 0/5] MCS Lock: MCS lock code cleanup and optimizations Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20 10:19   ` Will Deacon
2013-11-20 10:19     ` Will Deacon
2013-11-20 12:50     ` Paul E. McKenney
2013-11-20 12:50       ` Paul E. McKenney
2013-11-20 17:00       ` Will Deacon
2013-11-20 17:00         ` Will Deacon
2013-11-20 17:14         ` Paul E. McKenney [this message]
2013-11-20 17:14           ` Paul E. McKenney
2013-11-20 17:00     ` Tim Chen
2013-11-20 17:00       ` Tim Chen
2013-11-20 17:16       ` Paul E. McKenney
2013-11-20 17:16         ` Paul E. McKenney
2013-11-20  1:37 ` [PATCH v6 1/5] MCS Lock: Restructure the MCS lock defines and locking code into its own file Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37 ` [PATCH v6 2/5] MCS Lock: optimizations and extra comments Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37 ` [PATCH v6 3/5] MCS Lock: Move mcs_lock/unlock function into its own file Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37 ` [PATCH v6 4/5] MCS Lock: Barrier corrections Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20 15:31   ` Paul E. McKenney
2013-11-20 15:31     ` Paul E. McKenney
2013-11-20 15:31     ` Paul E. McKenney
2013-11-20 15:46     ` Will Deacon
2013-11-20 15:46       ` Will Deacon
2013-11-20 17:14       ` Paul E. McKenney
2013-11-20 17:14         ` Paul E. McKenney
2013-11-20 18:43         ` Tim Chen
2013-11-20 18:43           ` Tim Chen
2013-11-20 19:06           ` Paul E. McKenney
2013-11-20 19:06             ` Paul E. McKenney
2013-11-20 20:36             ` Tim Chen
2013-11-20 20:36               ` Tim Chen
2013-11-20 21:44               ` Paul E. McKenney
2013-11-20 21:44                 ` Paul E. McKenney
2013-11-20 23:51                 ` Tim Chen
2013-11-20 23:51                   ` Tim Chen
2013-11-21  4:53                   ` Paul E. McKenney
2013-11-21  4:53                     ` Paul E. McKenney
2013-11-21 10:17                     ` Will Deacon
2013-11-21 10:17                       ` Will Deacon
2013-11-21 13:16                       ` Paul E. McKenney
2013-11-21 13:16                         ` Paul E. McKenney
2013-11-21 10:45                     ` Peter Zijlstra
2013-11-21 10:45                       ` Peter Zijlstra
2013-11-21 13:18                       ` Paul E. McKenney
2013-11-21 13:18                         ` Paul E. McKenney
2013-11-21 22:27                     ` Linus Torvalds
2013-11-21 22:27                       ` Linus Torvalds
2013-11-21 22:52                       ` Paul E. McKenney
2013-11-21 22:52                         ` Paul E. McKenney
2013-11-22  0:09                         ` Linus Torvalds
2013-11-22  0:09                           ` Linus Torvalds
2013-11-22  4:08                           ` Paul E. McKenney
2013-11-22  4:08                             ` Paul E. McKenney
2013-11-22  4:25                             ` Linus Torvalds
2013-11-22  4:25                               ` Linus Torvalds
2013-11-22  6:23                               ` Paul E. McKenney
2013-11-22  6:23                                 ` Paul E. McKenney
2013-11-22 15:16                                 ` Ingo Molnar
2013-11-22 15:16                                   ` Ingo Molnar
2013-11-22 18:49                                   ` Paul E. McKenney
2013-11-22 18:49                                     ` Paul E. McKenney
2013-11-22 19:06                                     ` Linus Torvalds
2013-11-22 19:06                                       ` Linus Torvalds
2013-11-22 20:06                                       ` Paul E. McKenney
2013-11-22 20:06                                         ` Paul E. McKenney
2013-11-22 20:09                                         ` Linus Torvalds
2013-11-22 20:09                                           ` Linus Torvalds
2013-11-22 20:37                                           ` Paul E. McKenney
2013-11-22 20:37                                             ` Paul E. McKenney
2013-11-22 21:01                                             ` Linus Torvalds
2013-11-22 21:01                                               ` Linus Torvalds
2013-11-22 21:52                                               ` Paul E. McKenney
2013-11-22 21:52                                                 ` Paul E. McKenney
2013-11-22 22:19                                                 ` Linus Torvalds
2013-11-22 22:19                                                   ` Linus Torvalds
2013-11-23  0:25                                                   ` Paul E. McKenney
2013-11-23  0:25                                                     ` Paul E. McKenney
2013-11-23  0:42                                                     ` Linus Torvalds
2013-11-23  0:42                                                       ` Linus Torvalds
2013-11-23  1:36                                                       ` Paul E. McKenney
2013-11-23  1:36                                                         ` Paul E. McKenney
2013-11-23  2:11                                                         ` Linus Torvalds
2013-11-23  2:11                                                           ` Linus Torvalds
2013-11-23  4:05                                                           ` Paul E. McKenney
2013-11-23  4:05                                                             ` Paul E. McKenney
2013-11-23 11:24                                                             ` Ingo Molnar
2013-11-23 11:24                                                               ` Ingo Molnar
2013-11-23 17:06                                                               ` Paul E. McKenney
2013-11-23 17:06                                                                 ` Paul E. McKenney
2013-11-26 12:02                                                                 ` Ingo Molnar
2013-11-26 12:02                                                                   ` Ingo Molnar
2013-11-26 19:28                                                                   ` Paul E. McKenney
2013-11-26 19:28                                                                     ` Paul E. McKenney
2013-11-23 20:21                                                         ` Linus Torvalds
2013-11-23 20:21                                                           ` Linus Torvalds
2013-11-23 20:39                                                           ` Linus Torvalds
2013-11-23 20:39                                                             ` Linus Torvalds
2013-11-25 12:09                                                             ` Peter Zijlstra
2013-11-25 12:09                                                               ` Peter Zijlstra
2013-11-25 17:18                                                               ` Will Deacon
2013-11-25 17:18                                                                 ` Will Deacon
2013-11-25 17:56                                                                 ` Paul E. McKenney
2013-11-25 17:56                                                                   ` Paul E. McKenney
2013-11-25 17:54                                                             ` Paul E. McKenney
2013-11-25 17:54                                                               ` Paul E. McKenney
2013-11-23 21:29                                                           ` Peter Zijlstra
2013-11-23 21:29                                                             ` Peter Zijlstra
2013-11-23 22:24                                                             ` Linus Torvalds
2013-11-23 22:24                                                               ` Linus Torvalds
2013-11-25 17:53                                                           ` Paul E. McKenney
2013-11-25 17:53                                                             ` Paul E. McKenney
2013-11-25 18:21                                                             ` Peter Zijlstra
2013-11-25 18:21                                                               ` Peter Zijlstra
2013-11-21 11:03         ` Peter Zijlstra
2013-11-21 11:03           ` Peter Zijlstra
2013-11-21 12:56           ` Peter Zijlstra
2013-11-21 12:56             ` Peter Zijlstra
2013-11-21 13:20             ` Paul E. McKenney
2013-11-21 13:20               ` Paul E. McKenney
2013-11-21 17:25               ` Paul E. McKenney
2013-11-21 17:25                 ` Paul E. McKenney
2013-11-21 21:52                 ` Peter Zijlstra
2013-11-21 21:52                   ` Peter Zijlstra
2013-11-21 22:18                   ` Paul E. McKenney
2013-11-21 22:18                     ` Paul E. McKenney
2013-11-22 15:58                     ` Peter Zijlstra
2013-11-22 15:58                       ` Peter Zijlstra
2013-11-22 18:26                       ` Paul E. McKenney
2013-11-22 18:26                         ` Paul E. McKenney
2013-11-22 18:51                         ` Peter Zijlstra
2013-11-22 18:51                           ` Peter Zijlstra
2013-11-22 18:59                           ` Paul E. McKenney
2013-11-22 18:59                             ` Paul E. McKenney
2013-11-25 17:35                           ` Peter Zijlstra
2013-11-25 17:35                             ` Peter Zijlstra
2013-11-25 18:02                             ` Paul E. McKenney
2013-11-25 18:02                               ` Paul E. McKenney
2013-11-25 18:24                               ` Peter Zijlstra
2013-11-25 18:24                                 ` Peter Zijlstra
2013-11-25 18:34                                 ` Tim Chen
2013-11-25 18:34                                   ` Tim Chen
2013-11-25 18:27                               ` Peter Zijlstra
2013-11-25 18:27                                 ` Peter Zijlstra
2013-11-25 23:52                                 ` Paul E. McKenney
2013-11-25 23:52                                   ` Paul E. McKenney
2013-11-26  9:59                                   ` Peter Zijlstra
2013-11-26  9:59                                     ` Peter Zijlstra
2013-11-26 17:11                                     ` Paul E. McKenney
2013-11-26 17:11                                       ` Paul E. McKenney
2013-11-26 17:18                                       ` Peter Zijlstra
2013-11-26 17:18                                         ` Peter Zijlstra
2013-11-26 19:00                                     ` Linus Torvalds
2013-11-26 19:00                                       ` Linus Torvalds
2013-11-26 19:20                                       ` Paul E. McKenney
2013-11-26 19:20                                         ` Paul E. McKenney
2013-11-26 19:32                                         ` Linus Torvalds
2013-11-26 19:32                                           ` Linus Torvalds
2013-11-26 22:51                                           ` Paul E. McKenney
2013-11-26 22:51                                             ` Paul E. McKenney
2013-11-26 23:58                                             ` Linus Torvalds
2013-11-26 23:58                                               ` Linus Torvalds
2013-11-27  0:21                                               ` Thomas Gleixner
2013-11-27  0:21                                                 ` Thomas Gleixner
2013-11-27  0:39                                               ` Paul E. McKenney
2013-11-27  0:39                                                 ` Paul E. McKenney
2013-11-27  1:05                                                 ` Linus Torvalds
2013-11-27  1:05                                                   ` Linus Torvalds
2013-11-27  1:31                                                   ` Paul E. McKenney
2013-11-27  1:31                                                     ` Paul E. McKenney
2013-11-27 10:16                                             ` Will Deacon
2013-11-27 10:16                                               ` Will Deacon
2013-11-27 17:11                                               ` Paul E. McKenney
2013-11-27 17:11                                                 ` Paul E. McKenney
2013-11-28 11:40                                                 ` Will Deacon
2013-11-28 11:40                                                   ` Will Deacon
2013-11-28 17:38                                                   ` Paul E. McKenney
2013-11-28 17:38                                                     ` Paul E. McKenney
2013-11-28 18:03                                                     ` Will Deacon
2013-11-28 18:03                                                       ` Will Deacon
2013-11-28 18:27                                                       ` Paul E. McKenney
2013-11-28 18:27                                                         ` Paul E. McKenney
2013-11-28 18:53                                                         ` Will Deacon
2013-11-28 18:53                                                           ` Will Deacon
2013-11-28 19:50                                                           ` Paul E. McKenney
2013-11-28 19:50                                                             ` Paul E. McKenney
2013-11-29 16:17                                                             ` Will Deacon
2013-11-29 16:17                                                               ` Will Deacon
2013-11-29 16:44                                                               ` Linus Torvalds
2013-11-29 16:44                                                                 ` Linus Torvalds
2013-11-29 18:18                                                                 ` Will Deacon
2013-11-29 18:18                                                                   ` Will Deacon
2013-11-30 17:38                                                                 ` Paul E. McKenney
2013-11-30 17:38                                                                   ` Paul E. McKenney
2013-11-26 19:21                                       ` Peter Zijlstra
2013-11-26 19:21                                         ` Peter Zijlstra
2013-11-27 16:58                                         ` Oleg Nesterov
2013-11-27 16:58                                           ` Oleg Nesterov
2013-11-26 23:08                                       ` Benjamin Herrenschmidt
2013-11-26 23:08                                         ` Benjamin Herrenschmidt
2013-11-25 23:55                               ` H. Peter Anvin
2013-11-25 23:55                                 ` H. Peter Anvin
2013-11-26  3:16                                 ` Paul E. McKenney
2013-11-26  3:16                                   ` Paul E. McKenney
2013-11-27  0:46                                   ` H. Peter Anvin
2013-11-27  0:46                                     ` H. Peter Anvin
2013-11-27  1:07                                     ` Linus Torvalds
2013-11-27  1:07                                       ` Linus Torvalds
2013-11-27  1:27                                     ` Paul E. McKenney
2013-11-27  1:27                                       ` Paul E. McKenney
2013-11-27  2:59                                       ` H. Peter Anvin
2013-11-27  2:59                                         ` H. Peter Anvin
2013-11-25 18:52                             ` H. Peter Anvin
2013-11-25 18:52                               ` H. Peter Anvin
2013-11-25 22:58                               ` Tim Chen
2013-11-25 22:58                                 ` Tim Chen
2013-11-25 23:28                                 ` H. Peter Anvin
2013-11-25 23:28                                   ` H. Peter Anvin
2013-11-25 23:51                                   ` Paul E. McKenney
2013-11-25 23:51                                     ` Paul E. McKenney
2013-11-25 23:36                               ` Paul E. McKenney
2013-11-25 23:36                                 ` Paul E. McKenney
2013-12-04 21:26                 ` Andi Kleen
2013-12-04 21:26                   ` Andi Kleen
2013-12-04 22:07                   ` Paul E. McKenney
2013-12-04 22:07                     ` Paul E. McKenney
2013-11-21 13:19           ` Paul E. McKenney
2013-11-21 13:19             ` Paul E. McKenney
2013-11-20  1:37 ` [PATCH v6 5/5] MCS Lock: Allows for architecture specific mcs lock and unlock Tim Chen
2013-11-20  1:37   ` Tim Chen
2013-11-20  1:37   ` Tim Chen

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=20131120171448.GJ4138@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.shi@linaro.org \
    --cc=andi@firstfloor.org \
    --cc=dave.hansen@intel.com \
    --cc=davidlohr.bueso@hp.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=matthew.r.wilcox@intel.com \
    --cc=mingo@elte.hu \
    --cc=peter@hurleysoftware.com \
    --cc=riel@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=torvalds@linux-foundation.org \
    --cc=waiman.long@hp.com \
    --cc=walken@google.com \
    --cc=will.deacon@arm.com \
    /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.