From: Sam Ravnborg <sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
To: Adrian Bunk <bunk-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: linux arch <linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>,
David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
Linus Torvalds
<torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Subject: Re: [PATCH] prepare kconfig inline optimization for all architectures
Date: Sun, 27 Apr 2008 13:56:04 +0200 [thread overview]
Message-ID: <20080427115603.GA23493@uranus.ravnborg.org> (raw)
In-Reply-To: <20080427113158.GY2252-Aar9JVdAhcRoA3hw4S0G5QR5/fbUUdgG@public.gmane.org>
On Sun, Apr 27, 2008 at 02:31:58PM +0300, Adrian Bunk wrote:
> On Sun, Apr 27, 2008 at 12:51:00PM +0200, Sam Ravnborg wrote:
> > 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.
> >...
>
> My opinion on this is still:
> "OPTIMIZE" means "work around bugs in the kernel".
So then let us name it: GCC_INLINING
Suggested patch below.
I named it _GCC_ because this is a gcc specific feature.
Sam
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 49590f8..eec5cee 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_GCC_INLINING
# Identify this as a Sparc32 build
config SPARC32
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index 8acc5cc..98a736c 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -9,6 +9,7 @@ config SPARC
bool
default y
select HAVE_OPROFILE
+ select HAVE_GCC_INLINING
select HAVE_KPROBES
select HAVE_KRETPROBES
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 2fadf79..b6b7795 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_GCC_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..9e1cdd5 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_GCC_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..8d6eb70 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -508,6 +508,25 @@ config CC_OPTIMIZE_FOR_SIZE
If unsure, say N.
+# archs shall "select HAVE_GCC_INLINING" to be offered the
+# possibility to enable GCC_INLINING
+config HAVE_GCC_INLINING
+ def_bool n
+
+config GCC_INLINING
+ bool "Enable gcc 4.0 inline algorithm for functions marked 'inline'"
+ depends on HAVE_GCC_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
WARNING: multiple messages have this Message-ID (diff)
From: Sam Ravnborg <sam@ravnborg.org>
To: Adrian Bunk <bunk@kernel.org>
Cc: linux arch <linux-arch@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
David Miller <davem@davemloft.net>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH] prepare kconfig inline optimization for all architectures
Date: Sun, 27 Apr 2008 13:56:04 +0200 [thread overview]
Message-ID: <20080427115603.GA23493@uranus.ravnborg.org> (raw)
Message-ID: <20080427115604.flki-QcIcYqHU0AzNgv9v1z2JWwAwuvK72oMvvPPQHg@z> (raw)
In-Reply-To: <20080427113158.GY2252@cs181133002.pp.htv.fi>
On Sun, Apr 27, 2008 at 02:31:58PM +0300, Adrian Bunk wrote:
> On Sun, Apr 27, 2008 at 12:51:00PM +0200, Sam Ravnborg wrote:
> > 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.
> >...
>
> My opinion on this is still:
> "OPTIMIZE" means "work around bugs in the kernel".
So then let us name it: GCC_INLINING
Suggested patch below.
I named it _GCC_ because this is a gcc specific feature.
Sam
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 49590f8..eec5cee 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_GCC_INLINING
# Identify this as a Sparc32 build
config SPARC32
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index 8acc5cc..98a736c 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -9,6 +9,7 @@ config SPARC
bool
default y
select HAVE_OPROFILE
+ select HAVE_GCC_INLINING
select HAVE_KPROBES
select HAVE_KRETPROBES
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 2fadf79..b6b7795 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_GCC_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..9e1cdd5 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_GCC_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..8d6eb70 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -508,6 +508,25 @@ config CC_OPTIMIZE_FOR_SIZE
If unsure, say N.
+# archs shall "select HAVE_GCC_INLINING" to be offered the
+# possibility to enable GCC_INLINING
+config HAVE_GCC_INLINING
+ def_bool n
+
+config GCC_INLINING
+ bool "Enable gcc 4.0 inline algorithm for functions marked 'inline'"
+ depends on HAVE_GCC_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
next prev parent reply other threads:[~2008-04-27 11:56 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
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=20080427115603.GA23493@uranus.ravnborg.org \
--to=sam-uyr5n9q2vtjg9huczpvpmw@public.gmane.org \
--cc=bunk-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
--cc=linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mingo-X9Un+BFzKDI@public.gmane.org \
--cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox