public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] prepare kconfig inline optimization for all architectures
@ 2008-04-27 10:51 Sam Ravnborg
  2008-04-27 10:51 ` Sam Ravnborg
       [not found] ` <20080427105100.GA14795-QabhHTsIXMSnlFQ6Q1D1Y0B+6BGkLq7r@public.gmane.org>
  0 siblings, 2 replies; 60+ messages in thread
From: Sam Ravnborg @ 2008-04-27 10:51 UTC (permalink / raw)
  To: linux arch, LKML, Ingo Molnar, David Miller, Linus Torvalds

Fix the OPTIMIZE inline functionality such that it can be used
by all architectures.
To use it the arch maintainers shall add a
"select HAVE_OPTIMIZE_INLINING" in their arch specific
Kconfig file.

This patch enables OPTIMIZE_INLINING for x86, sparc and sparc64.
If all archs by into the approach the requirment for the select
can be dropped.

The indirection with ARCH__SUPPORTS_OPTIMIZED_INLINING was
killed as this is not needed when using select to
decide what archs supports this.

Signed-off-by: Sam Ravnborg <sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
Cc: David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
Cc: Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
---
Largely untested.
This patch was made as a consequence of the CONFIG_OPTIMIZE_INLINING
thread on lkml.

	Sam


diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 49590f8..f08509e 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -68,6 +68,7 @@ config SPARC
 	default y
 	select HAVE_IDE
 	select HAVE_OPROFILE
+	select HAVE_OPTIMIZE_INLINING
 
 # Identify this as a Sparc32 build
 config SPARC32
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index 8acc5cc..01ecd33 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -9,6 +9,7 @@ config SPARC
 	bool
 	default y
 	select HAVE_OPROFILE
+	select HAVE_OPTIMIZE_INLINING
 	select HAVE_KPROBES
 	select HAVE_KRETPROBES
 
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 2fadf79..d5e22ef 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -20,6 +20,7 @@ config X86
 	def_bool y
 	select HAVE_IDE
 	select HAVE_OPROFILE
+	select HAVE_OPTIMIZE_INLINING
 	select HAVE_KPROBES
 	select HAVE_KRETPROBES
 	select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64)
@@ -142,9 +143,6 @@ config AUDIT_ARCH
 config ARCH_SUPPORTS_AOUT
 	def_bool y
 
-config ARCH_SUPPORTS_OPTIMIZED_INLINING
-	def_bool y
-
 # Use the generic interrupt handling code in kernel/irq/:
 config GENERIC_HARDIRQS
 	bool
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index 5b1979a..23956ea 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -258,15 +258,3 @@ config CPA_DEBUG
 
 endmenu
 
-config OPTIMIZE_INLINING
-	bool "Allow gcc to uninline functions marked 'inline'"
-	default y
-	help
-	  This option determines if the kernel forces gcc to inline the functions
-	  developers have marked 'inline'. Doing so takes away freedom from gcc to
-	  do what it thinks is best, which is desirable for the gcc 3.x series of
-	  compilers. The gcc 4.x series have a rewritten inlining algorithm and
-	  disabling this option will generate a smaller kernel there. Hopefully
-	  this algorithm is so good that allowing gcc4 to make the decision can
-	  become the default in the future, until then this option is there to
-	  test gcc for this.
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index b2fd754..79b7a34 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -31,8 +31,7 @@
 /*
  * Force always-inline if the user requests it so via the .config:
  */
-#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \
-    !defined(CONFIG_OPTIMIZE_INLINING) && (__GNUC__ >= 4)
+#if !(defined(CONFIG_OPTIMIZE_INLINING) && (__GNUC__ >= 4))
 # define inline		inline		__attribute__((always_inline))
 # define __inline__	__inline__	__attribute__((always_inline))
 # define __inline	__inline	__attribute__((always_inline))
diff --git a/init/Kconfig b/init/Kconfig
index ba3a389..5d8ef89 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -508,6 +508,25 @@ config CC_OPTIMIZE_FOR_SIZE
 
 	  If unsure, say N.
 
+# archs shall "select HAVE_OPTIMIZE_INLINING" to be offered the
+# possibility to enable OPTIMIZE_INLINING
+config HAVE_OPTIMIZE_INLINING
+	def_bool n
+
+config OPTIMIZE_INLINING
+	bool "Enable gcc 4.0 inline algorithm for functions marked 'inline'"
+	depends on HAVE_OPTIMIZE_INLINING
+	help
+	  This option determines if the kernel forces gcc to inline the
+	  functions developers have marked 'inline'. Doing so takes away
+	  freedom from gcc to do what it thinks is best, which is desirable
+	  for the gcc 3.x series of compilers.
+	  The gcc 4.x series have a rewritten inlining algorithm and
+	  enabling this option will generate a smaller kernel there.
+	  Hopefully this algorithm is so good that allowing gcc4 to
+	  make the decision can become the default in the future,
+	  until then this option is there to test gcc for this.
+
 config SYSCTL
 	bool
 

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

end of thread, other threads:[~2008-04-27 23:41 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-27 10:51 [PATCH] prepare kconfig inline optimization for all architectures Sam Ravnborg
2008-04-27 10:51 ` Sam Ravnborg
     [not found] ` <20080427105100.GA14795-QabhHTsIXMSnlFQ6Q1D1Y0B+6BGkLq7r@public.gmane.org>
2008-04-27 11:31   ` Adrian Bunk
2008-04-27 11:31     ` Adrian Bunk
     [not found]     ` <20080427113158.GY2252-Aar9JVdAhcRoA3hw4S0G5QR5/fbUUdgG@public.gmane.org>
2008-04-27 11:56       ` Sam Ravnborg
2008-04-27 11:56         ` Sam Ravnborg
     [not found]         ` <20080427115603.GA23493-QabhHTsIXMSnlFQ6Q1D1Y0B+6BGkLq7r@public.gmane.org>
2008-04-27 12:36           ` Ingo Molnar
2008-04-27 12:36             ` Ingo Molnar
     [not found]             ` <20080427123642.GA28005-X9Un+BFzKDI@public.gmane.org>
2008-04-27 12:49               ` Ingo Molnar
2008-04-27 12:49                 ` Ingo Molnar
2008-04-27 17:06       ` Linus Torvalds
2008-04-27 17:06         ` Linus Torvalds
     [not found]         ` <alpine.LFD.1.10.0804271002360.2896-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-04-27 17:22           ` Adrian Bunk
2008-04-27 17:22             ` Adrian Bunk
     [not found]             ` <20080427172235.GA2252-Aar9JVdAhcRoA3hw4S0G5QR5/fbUUdgG@public.gmane.org>
2008-04-27 17:32               ` Linus Torvalds
2008-04-27 17:32                 ` Linus Torvalds
     [not found]                 ` <alpine.LFD.1.10.0804271029130.2896-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-04-27 17:47                   ` Adrian Bunk
2008-04-27 17:47                     ` Adrian Bunk
     [not found]                     ` <20080427174714.GB2252-Aar9JVdAhcRoA3hw4S0G5QR5/fbUUdgG@public.gmane.org>
2008-04-27 18:00                       ` Christoph Hellwig
2008-04-27 18:00                         ` Christoph Hellwig
     [not found]                         ` <20080427180007.GB28483-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2008-04-27 18:09                           ` Sam Ravnborg
2008-04-27 18:09                             ` Sam Ravnborg
     [not found]                             ` <20080427180957.GA25964-QabhHTsIXMSnlFQ6Q1D1Y0B+6BGkLq7r@public.gmane.org>
2008-04-27 18:14                               ` Christoph Hellwig
2008-04-27 18:14                                 ` Christoph Hellwig
     [not found]                                 ` <20080427181411.GA31667-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2008-04-27 18:24                                   ` Linus Torvalds
2008-04-27 18:24                                     ` Linus Torvalds
     [not found]                                     ` <alpine.LFD.1.10.0804271118500.2896-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-04-27 18:32                                       ` Christoph Hellwig
2008-04-27 18:32                                         ` Christoph Hellwig
2008-04-27 19:36                                       ` Ingo Molnar
2008-04-27 19:36                                         ` Ingo Molnar
     [not found]                                         ` <20080427193627.GA32654-X9Un+BFzKDI@public.gmane.org>
2008-04-27 19:49                                           ` Adrian Bunk
2008-04-27 19:49                                             ` Adrian Bunk
2008-04-27 23:26                                       ` Arjan van de Ven
2008-04-27 23:26                                         ` Arjan van de Ven
     [not found]                                         ` <20080427162606.3dd82c0c-NIQFrBLA1CpScpXdPBN83iCwEArCW2h5@public.gmane.org>
2008-04-27 23:36                                           ` Linus Torvalds
2008-04-27 23:36                                             ` Linus Torvalds
     [not found]                                             ` <alpine.LFD.1.10.0804271634490.3119-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-04-27 23:41                                               ` Ingo Molnar
2008-04-27 23:41                                                 ` Ingo Molnar
2008-04-27 18:31                                   ` Sam Ravnborg
2008-04-27 18:31                                     ` Sam Ravnborg
     [not found]                                     ` <20080427183131.GA26937-QabhHTsIXMSnlFQ6Q1D1Y0B+6BGkLq7r@public.gmane.org>
2008-04-27 18:36                                       ` Christoph Hellwig
2008-04-27 18:36                                         ` Christoph Hellwig
2008-04-27 18:11                       ` Linus Torvalds
2008-04-27 18:11                         ` Linus Torvalds
     [not found]                         ` <alpine.LFD.1.10.0804271053300.2896-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-04-27 18:25                           ` Christoph Hellwig
2008-04-27 18:25                             ` Christoph Hellwig
     [not found]                             ` <20080427182544.GA23828-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2008-04-27 18:30                               ` Linus Torvalds
2008-04-27 18:30                                 ` Linus Torvalds
2008-04-27 18:41                           ` Adrian Bunk
2008-04-27 18:41                             ` Adrian Bunk
     [not found]                             ` <20080427184106.GD2252-Aar9JVdAhcRoA3hw4S0G5QR5/fbUUdgG@public.gmane.org>
2008-04-27 18:57                               ` Linus Torvalds
2008-04-27 18:57                                 ` Linus Torvalds
2008-04-27 20:51                       ` Mike Galbraith
2008-04-27 20:51                         ` Mike Galbraith
2008-04-27 17:57                   ` Christoph Hellwig
2008-04-27 17:57                     ` Christoph Hellwig
2008-04-27 17:40               ` Matthew Wilcox
2008-04-27 17:40                 ` Matthew Wilcox
     [not found]                 ` <20080427174055.GS14990-6jwH94ZQLHl74goWV3ctuw@public.gmane.org>
2008-04-27 17:59                   ` Adrian Bunk
2008-04-27 17:59                     ` Adrian Bunk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox