From: Andi Kleen <ak@suse.de>
To: Mikael Pettersson <mikpe@csd.uu.se>
Cc: linux-kernel@vger.kernel.org, pluto@pld-linux.org
Subject: Re: unit-at-a-time...
Date: 01 Nov 2004 02:39:41 +0100 [thread overview]
Message-ID: <p73hdoaibz6.fsf@verdi.suse.de> (raw)
In-Reply-To: <200410311541.i9VFf0ah023857@harpo.it.uu.se.suse.lists.linux.kernel>
Mikael Pettersson <mikpe@csd.uu.se> writes:
> On Sun, 31 Oct 2004 15:57:00 +0100, pluto@pld-linux.org wrote:
> >/i386/Makefile:# Disable unit-at-a-time mode, it makes gcc use a lot morestack
> >/i386/Makefile:CFLAGS += $(call cc-option,-fno-unit-at-a-time)
> >
> >/x86_64/Makefile:# -funit-at-a-time shrinks the kernel .text considerably
> >/x86_64/Makefile:CFLAGS += $(call cc-option,-funit-at-a-time)
> >
> >Which solution is correct?
It shrinks the .text on i386 considerably too. One reason
is that it automatically enables regparms for static functions.
With global CONFIG_REGPARM the shrink is a bit less, but still
noticeable.
One drawback is that oopses are harder to read because
of the more aggressive inlining, but it's not too bad.
>
> Disabling unit-at-a-time for i386 is definitely correct.
> I've personally observed horrible runtime corruption bugs
> in early 2.6 kernels when they were compiled with gcc-3.4
> without the -fno-unit-at-a-time fix.
Maybe you got a buggy gcc version. The 2.6.5 based SLES9/i386
kernel is shipping with -funit-at-a-time compiled with a 3.3-hammer
compiler and I am not aware of any reports of stack overflow
(and that kernel is extremly well tested)
IMHO it should be enabled on i386 in mainline, and if some gcc version
is determined to break it then it should be only explicitely
disabled for that version. With the commonly used 3.3-hammer
compiler it seems to work fine.
>
> x86-64 is a different architecture. It's possible its larger
> number of registers reduces spills enough that gcc's failure
> to merge stack slots doesn't matter.
The only reports of stack overflows on x86-64 were clear programmer
bugs (too large arrays/structures on the stack).
-Andi
next parent reply other threads:[~2004-11-01 1:42 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200410311541.i9VFf0ah023857@harpo.it.uu.se.suse.lists.linux.kernel>
2004-11-01 1:39 ` Andi Kleen [this message]
2004-11-01 11:02 unit-at-a-time Mikael Pettersson
2004-11-01 11:10 ` unit-at-a-time Andi Kleen
-- strict thread matches above, loose matches on Subject: below --
2004-10-31 15:41 unit-at-a-time Mikael Pettersson
2004-10-31 16:18 ` unit-at-a-time Jan Engelhardt
2004-10-31 19:05 ` unit-at-a-time Roland Dreier
2004-10-31 21:33 ` unit-at-a-time Arjan van de Ven
2004-10-31 14:57 unit-at-a-time Paweł Sikora
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=p73hdoaibz6.fsf@verdi.suse.de \
--to=ak@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mikpe@csd.uu.se \
--cc=pluto@pld-linux.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 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.