All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK
@ 2012-03-22  9:55 Raghavendra K T
  2012-03-23  6:24 ` Raghavendra K T
  2012-03-23 19:44 ` [tip:x86/urgent] locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage tip-bot for Raghavendra K T
  0 siblings, 2 replies; 5+ messages in thread
From: Raghavendra K T @ 2012-03-22  9:55 UTC (permalink / raw)
  To: Ingo Molnar, H. Peter Anvin
  Cc: Linus Torvalds, Ralf Baechle, Chris Metcalf, Thomas Gleixner,
	x86, Chris Zankel, linux-mips, linux-kernel

From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>

Patch simplifies current INLINE_SPIN_UNLOCK. compile tested on x86_64 

Change log:
get rid of INLINE_SPIN_UNLOCK entirely replacing it with UNINLINE_SPIN_UNLOCK 
instead with the reverse meaning.

whover wants to uninline the spinlocks (like spinlock debugging, paravirt etc
all just do select UNINLINE_SPIN_UNLOCK

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
---
 Please refer : https://lkml.org/lkml/2012/3/21/357

 arch/mips/configs/db1300_defconfig  |    2 +-
 arch/tile/configs/tilegx_defconfig  |    2 +-
 arch/tile/configs/tilepro_defconfig |    2 +-
 arch/xtensa/configs/iss_defconfig   |    2 +-
 include/linux/spinlock_api_smp.h    |    2 +-
 kernel/Kconfig.locks                |    4 ++--
 kernel/Kconfig.preempt              |    1 +
 kernel/spinlock.c                   |    2 +-
 lib/Kconfig.debug                   |    1 +
 9 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/mips/configs/db1300_defconfig b/arch/mips/configs/db1300_defconfig
index c38b190..3590ab5 100644
--- a/arch/mips/configs/db1300_defconfig
+++ b/arch/mips/configs/db1300_defconfig
@@ -133,7 +133,7 @@ CONFIG_BLK_DEV_BSG=y
 CONFIG_IOSCHED_NOOP=y
 CONFIG_DEFAULT_NOOP=y
 CONFIG_DEFAULT_IOSCHED="noop"
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
diff --git a/arch/tile/configs/tilegx_defconfig b/arch/tile/configs/tilegx_defconfig
index dafdbba..db93926 100644
--- a/arch/tile/configs/tilegx_defconfig
+++ b/arch/tile/configs/tilegx_defconfig
@@ -187,7 +187,7 @@ CONFIG_PADATA=y
 # CONFIG_INLINE_SPIN_LOCK_BH is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQ is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set
 # CONFIG_INLINE_SPIN_UNLOCK_BH is not set
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
diff --git a/arch/tile/configs/tilepro_defconfig b/arch/tile/configs/tilepro_defconfig
index 6f05f96..a039032 100644
--- a/arch/tile/configs/tilepro_defconfig
+++ b/arch/tile/configs/tilepro_defconfig
@@ -153,7 +153,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
 # CONFIG_INLINE_SPIN_LOCK_BH is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQ is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set
 # CONFIG_INLINE_SPIN_UNLOCK_BH is not set
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
diff --git a/arch/xtensa/configs/iss_defconfig b/arch/xtensa/configs/iss_defconfig
index f932b30..ddab37b 100644
--- a/arch/xtensa/configs/iss_defconfig
+++ b/arch/xtensa/configs/iss_defconfig
@@ -113,7 +113,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
 # CONFIG_INLINE_SPIN_LOCK_BH is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQ is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set
 # CONFIG_INLINE_SPIN_UNLOCK_BH is not set
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h
index e253ccd..51df117 100644
--- a/include/linux/spinlock_api_smp.h
+++ b/include/linux/spinlock_api_smp.h
@@ -67,7 +67,7 @@ _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags)
 #define _raw_spin_trylock_bh(lock) __raw_spin_trylock_bh(lock)
 #endif
 
-#ifdef CONFIG_INLINE_SPIN_UNLOCK
+#ifndef CONFIG_UNINLINE_SPIN_UNLOCK
 #define _raw_spin_unlock(lock) __raw_spin_unlock(lock)
 #endif
 
diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks
index 5068e2a..2251882 100644
--- a/kernel/Kconfig.locks
+++ b/kernel/Kconfig.locks
@@ -124,8 +124,8 @@ config INLINE_SPIN_LOCK_IRQSAVE
 	def_bool !DEBUG_SPINLOCK && !GENERIC_LOCKBREAK && \
 		 ARCH_INLINE_SPIN_LOCK_IRQSAVE
 
-config INLINE_SPIN_UNLOCK
-	def_bool !DEBUG_SPINLOCK && (!PREEMPT || ARCH_INLINE_SPIN_UNLOCK)
+config UNINLINE_SPIN_UNLOCK
+	bool
 
 config INLINE_SPIN_UNLOCK_BH
 	def_bool !DEBUG_SPINLOCK && ARCH_INLINE_SPIN_UNLOCK_BH
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 24e7cb0..3f9c974 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -36,6 +36,7 @@ config PREEMPT_VOLUNTARY
 config PREEMPT
 	bool "Preemptible Kernel (Low-Latency Desktop)"
 	select PREEMPT_COUNT
+	select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK
 	help
 	  This option reduces the latency of the kernel by making
 	  all kernel code (that is not executing in a critical section)
diff --git a/kernel/spinlock.c b/kernel/spinlock.c
index 84c7d96..5cdd806 100644
--- a/kernel/spinlock.c
+++ b/kernel/spinlock.c
@@ -163,7 +163,7 @@ void __lockfunc _raw_spin_lock_bh(raw_spinlock_t *lock)
 EXPORT_SYMBOL(_raw_spin_lock_bh);
 #endif
 
-#ifndef CONFIG_INLINE_SPIN_UNLOCK
+#ifdef CONFIG_UNINLINE_SPIN_UNLOCK
 void __lockfunc _raw_spin_unlock(raw_spinlock_t *lock)
 {
 	__raw_spin_unlock(lock);
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 8745ac7..286b8af 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -495,6 +495,7 @@ config RT_MUTEX_TESTER
 config DEBUG_SPINLOCK
 	bool "Spinlock and rw-lock debugging: basic checks"
 	depends on DEBUG_KERNEL
+	select UNINLINE_SPIN_UNLOCK
 	help
 	  Say Y here and build SMP to catch missing spinlock initialization
 	  and certain other kinds of spinlock errors commonly made.  This is


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

* Re: [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK
  2012-03-22  9:55 [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK Raghavendra K T
@ 2012-03-23  6:24 ` Raghavendra K T
  2012-03-23  8:43   ` Ingo Molnar
  2012-03-23 15:53   ` Linus Torvalds
  2012-03-23 19:44 ` [tip:x86/urgent] locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage tip-bot for Raghavendra K T
  1 sibling, 2 replies; 5+ messages in thread
From: Raghavendra K T @ 2012-03-23  6:24 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Raghavendra K T, Ingo Molnar, H. Peter Anvin, Ralf Baechle,
	Chris Metcalf, Thomas Gleixner, x86, Chris Zankel, linux-mips,
	linux-kernel

On 03/22/2012 03:25 PM, Raghavendra K T wrote:
> From: Raghavendra K T<raghavendra.kt@linux.vnet.ibm.com>
>
> Patch simplifies current INLINE_SPIN_UNLOCK. compile tested on x86_64
>
> Change log:
> get rid of INLINE_SPIN_UNLOCK entirely replacing it with UNINLINE_SPIN_UNLOCK
> instead with the reverse meaning.
>
> whover wants to uninline the spinlocks (like spinlock debugging, paravirt etc
> all just do select UNINLINE_SPIN_UNLOCK
typo:
Whoever wants to uninline the spinlocks (like spinlock debugging, 
paravirt etc) just do select UNINLINE_SPIN_UNLOCK.

>
> Suggested-by: Linus Torvalds<torvalds@linux-foundation.org>
> Signed-off-by: Raghavendra K T<raghavendra.kt@linux.vnet.ibm.com>
> ---
>   Please refer : https://lkml.org/lkml/2012/3/21/357

Linus, Please let me know if this is what you were looking for or Did I 
really mess it up :(


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

* Re: [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK
  2012-03-23  6:24 ` Raghavendra K T
@ 2012-03-23  8:43   ` Ingo Molnar
  2012-03-23 15:53   ` Linus Torvalds
  1 sibling, 0 replies; 5+ messages in thread
From: Ingo Molnar @ 2012-03-23  8:43 UTC (permalink / raw)
  To: Raghavendra K T
  Cc: Linus Torvalds, Ingo Molnar, H. Peter Anvin, Ralf Baechle,
	Chris Metcalf, Thomas Gleixner, x86, Chris Zankel, linux-mips,
	linux-kernel


* Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com> wrote:

> On 03/22/2012 03:25 PM, Raghavendra K T wrote:
> >From: Raghavendra K T<raghavendra.kt@linux.vnet.ibm.com>
> >
> >Patch simplifies current INLINE_SPIN_UNLOCK. compile tested on x86_64
> >
> >Change log:
> >get rid of INLINE_SPIN_UNLOCK entirely replacing it with UNINLINE_SPIN_UNLOCK
> >instead with the reverse meaning.
> >
> >whover wants to uninline the spinlocks (like spinlock debugging, paravirt etc
> >all just do select UNINLINE_SPIN_UNLOCK
> typo:
> Whoever wants to uninline the spinlocks (like spinlock debugging,
> paravirt etc) just do select UNINLINE_SPIN_UNLOCK.
> 
> >
> >Suggested-by: Linus Torvalds<torvalds@linux-foundation.org>
> >Signed-off-by: Raghavendra K T<raghavendra.kt@linux.vnet.ibm.com>
> >---
> >  Please refer : https://lkml.org/lkml/2012/3/21/357
> 
> Linus, Please let me know if this is what you were looking for or
> Did I really mess it up :(

Looks sane to me at first sight - will process it once the merge 
window calms down a bit.

Thanks,

	Ingo

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

* Re: [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK
  2012-03-23  6:24 ` Raghavendra K T
  2012-03-23  8:43   ` Ingo Molnar
@ 2012-03-23 15:53   ` Linus Torvalds
  1 sibling, 0 replies; 5+ messages in thread
From: Linus Torvalds @ 2012-03-23 15:53 UTC (permalink / raw)
  To: Raghavendra K T
  Cc: Ingo Molnar, H. Peter Anvin, Ralf Baechle, Chris Metcalf,
	Thomas Gleixner, x86, Chris Zankel, linux-mips, linux-kernel

On Thu, Mar 22, 2012 at 11:24 PM, Raghavendra K T
<raghavendra.kt@linux.vnet.ibm.com> wrote:
>
> Linus, Please let me know if this is what you were looking for or Did I
> really mess it up :(

Yeah, this was what I was looking for. It seems much simpler to me,
and allows the individual odd config options to just do the "select
uninline" instead of having to have some complex logic about other
config options in the inlining option itself.

                   Linus

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

* [tip:x86/urgent] locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage
  2012-03-22  9:55 [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK Raghavendra K T
  2012-03-23  6:24 ` Raghavendra K T
@ 2012-03-23 19:44 ` tip-bot for Raghavendra K T
  1 sibling, 0 replies; 5+ messages in thread
From: tip-bot for Raghavendra K T @ 2012-03-23 19:44 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, torvalds, cmetcalf, chris,
	raghavendra.kt, ralf, tglx

Commit-ID:  e335e3eb82dada2765297f6ba501afc7555aba10
Gitweb:     http://git.kernel.org/tip/e335e3eb82dada2765297f6ba501afc7555aba10
Author:     Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
AuthorDate: Thu, 22 Mar 2012 15:25:08 +0530
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 23 Mar 2012 13:18:57 +0100

locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage

Get rid of INLINE_SPIN_UNLOCK entirely replacing it with
UNINLINE_SPIN_UNLOCK instead of the reverse meaning.

Whoever wants to change the default spinlock inlining
behavior and uninline the spinlocks for some weird reason,
such as spinlock debugging, paravirt etc. can now all just
select UNINLINE_SPIN_UNLOCK

Original discussion at: https://lkml.org/lkml/2012/3/21/357

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: linux-mips@linux-mips.org
Link: http://lkml.kernel.org/r/20120322095502.30866.75756.sendpatchset@codeblue
[ tidied up the changelog a bit ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/mips/configs/db1300_defconfig |    2 +-
 arch/xtensa/configs/iss_defconfig  |    2 +-
 include/linux/spinlock_api_smp.h   |    2 +-
 kernel/Kconfig.locks               |    4 ++--
 kernel/Kconfig.preempt             |    1 +
 kernel/spinlock.c                  |    2 +-
 lib/Kconfig.debug                  |    1 +
 7 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/mips/configs/db1300_defconfig b/arch/mips/configs/db1300_defconfig
index c38b190..3590ab5 100644
--- a/arch/mips/configs/db1300_defconfig
+++ b/arch/mips/configs/db1300_defconfig
@@ -133,7 +133,7 @@ CONFIG_BLK_DEV_BSG=y
 CONFIG_IOSCHED_NOOP=y
 CONFIG_DEFAULT_NOOP=y
 CONFIG_DEFAULT_IOSCHED="noop"
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
diff --git a/arch/xtensa/configs/iss_defconfig b/arch/xtensa/configs/iss_defconfig
index f932b30..ddab37b 100644
--- a/arch/xtensa/configs/iss_defconfig
+++ b/arch/xtensa/configs/iss_defconfig
@@ -113,7 +113,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
 # CONFIG_INLINE_SPIN_LOCK_BH is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQ is not set
 # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set
 # CONFIG_INLINE_SPIN_UNLOCK_BH is not set
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h
index e253ccd..51df117 100644
--- a/include/linux/spinlock_api_smp.h
+++ b/include/linux/spinlock_api_smp.h
@@ -67,7 +67,7 @@ _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags)
 #define _raw_spin_trylock_bh(lock) __raw_spin_trylock_bh(lock)
 #endif
 
-#ifdef CONFIG_INLINE_SPIN_UNLOCK
+#ifndef CONFIG_UNINLINE_SPIN_UNLOCK
 #define _raw_spin_unlock(lock) __raw_spin_unlock(lock)
 #endif
 
diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks
index 5068e2a..2251882 100644
--- a/kernel/Kconfig.locks
+++ b/kernel/Kconfig.locks
@@ -124,8 +124,8 @@ config INLINE_SPIN_LOCK_IRQSAVE
 	def_bool !DEBUG_SPINLOCK && !GENERIC_LOCKBREAK && \
 		 ARCH_INLINE_SPIN_LOCK_IRQSAVE
 
-config INLINE_SPIN_UNLOCK
-	def_bool !DEBUG_SPINLOCK && (!PREEMPT || ARCH_INLINE_SPIN_UNLOCK)
+config UNINLINE_SPIN_UNLOCK
+	bool
 
 config INLINE_SPIN_UNLOCK_BH
 	def_bool !DEBUG_SPINLOCK && ARCH_INLINE_SPIN_UNLOCK_BH
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 24e7cb0..3f9c974 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -36,6 +36,7 @@ config PREEMPT_VOLUNTARY
 config PREEMPT
 	bool "Preemptible Kernel (Low-Latency Desktop)"
 	select PREEMPT_COUNT
+	select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK
 	help
 	  This option reduces the latency of the kernel by making
 	  all kernel code (that is not executing in a critical section)
diff --git a/kernel/spinlock.c b/kernel/spinlock.c
index 84c7d96..5cdd806 100644
--- a/kernel/spinlock.c
+++ b/kernel/spinlock.c
@@ -163,7 +163,7 @@ void __lockfunc _raw_spin_lock_bh(raw_spinlock_t *lock)
 EXPORT_SYMBOL(_raw_spin_lock_bh);
 #endif
 
-#ifndef CONFIG_INLINE_SPIN_UNLOCK
+#ifdef CONFIG_UNINLINE_SPIN_UNLOCK
 void __lockfunc _raw_spin_unlock(raw_spinlock_t *lock)
 {
 	__raw_spin_unlock(lock);
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 05037dc..f32a41f 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -499,6 +499,7 @@ config RT_MUTEX_TESTER
 config DEBUG_SPINLOCK
 	bool "Spinlock and rw-lock debugging: basic checks"
 	depends on DEBUG_KERNEL
+	select UNINLINE_SPIN_UNLOCK
 	help
 	  Say Y here and build SMP to catch missing spinlock initialization
 	  and certain other kinds of spinlock errors commonly made.  This is

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

end of thread, other threads:[~2012-03-23 19:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-22  9:55 [PATCH 1/1] config: simplify INLINE_SPIN_UNLOCK Raghavendra K T
2012-03-23  6:24 ` Raghavendra K T
2012-03-23  8:43   ` Ingo Molnar
2012-03-23 15:53   ` Linus Torvalds
2012-03-23 19:44 ` [tip:x86/urgent] locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage tip-bot for Raghavendra K T

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.