lkml.org 
[lkml]   [2008]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] prepare kconfig inline optimization for all architectures
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@ravnborg.org>
Cc: David Miller <davem@davemloft.net>
Cc: Ingo Molnar <mingo@elte.hu>
---
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


\
 
 \ /
  Last update: 2008-04-27 12:53    [W:0.071 / U:0.488 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site