Re: [PATCH RFC V6 2/11] x86/ticketlock: don't inline _spin_unlock when using paravirt spinlocks
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2012-03-21 17:13:27
On Wed, Mar 21, 2012 at 3:21 AM, Raghavendra K T [off-list ref] wrote:
quoted hunk
From: Jeremy Fitzhardinge <redacted> The code size expands somewhat, and its probably better to just call a function rather than inline it. Signed-off-by: Jeremy Fitzhardinge <redacted> Signed-off-by: Raghavendra K T <redacted> --- arch/x86/Kconfig | 3 +++ kernel/Kconfig.locks | 2 +- 2 files changed, 4 insertions(+), 1 deletions(-)diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 5bed94e..10c28ec 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig@@ -623,6 +623,9 @@ config PARAVIRT_SPINLOCKSIf you are unsure how to answer this question, answer N. +config ARCH_NOINLINE_SPIN_UNLOCK + def_bool PARAVIRT_SPINLOCKS + config PARAVIRT_CLOCK booldiff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks index 5068e2a..584637b 100644 --- a/kernel/Kconfig.locks +++ b/kernel/Kconfig.locks@@ -125,7 +125,7 @@ config INLINE_SPIN_LOCK_IRQSAVEARCH_INLINE_SPIN_LOCK_IRQSAVE config INLINE_SPIN_UNLOCK - def_bool !DEBUG_SPINLOCK && (!PREEMPT || ARCH_INLINE_SPIN_UNLOCK) + def_bool !DEBUG_SPINLOCK && (!PREEMPT || ARCH_INLINE_SPIN_UNLOCK) && !ARCH_NOINLINE_SPIN_UNLOCK config INLINE_SPIN_UNLOCK_BH def_bool !DEBUG_SPINLOCK && ARCH_INLINE_SPIN_UNLOCK_BH
Ugh. This is getting really ugly.
Can we just fix it by
- getting rid of INLINE_SPIN_UNLOCK entirely
- replacing it with UNINLINE_SPIN_UNLOCK instead with the reverse
meaning, and no "def_bool" at all, just a simple
config UNINLINE_SPIN_UNLOCK
bool
- make the various people who want to uninline the spinlocks (like
spinlock debugging, paravirt etc) all just do
select UNINLINE_SPIN_UNLOCK
because quite frankly, the whole spinunlock inlining logic is
*already* unreadable, and you just made it worse.
Linus