From: Andi Kleen <andi@firstfloor.org>
To: "Keith A. Prickett" <keithp@marvell.com>
Cc: Adrian Bunk <bunk@kernel.org>, linux-kernel@vger.kernel.org
Subject: Re: Building Kernel with -O0
Date: Tue, 09 Sep 2008 21:24:58 +0200 [thread overview]
Message-ID: <87vdx5ruk5.fsf@basil.nowhere.org> (raw)
In-Reply-To: <1220980240.17292.15.camel@CV-LAB2> (Keith A. Prickett's message of "Tue, 09 Sep 2008 10:10:40 -0700")
"Keith A. Prickett" <keithp@marvell.com> writes:
>
> All of this could, potentially be changed by a configuration parameter
> and added into the kernel release. Does someone have a primer on why
> this kind of behavior is not desired or "possible"?
Traditionally it was not allowed because -O0 didn't inline and
the kernel relied on inlining in some cases. But with always_inline
that is obsolete -- all functions that rely on inlining should be
marked __always_inline.
I think a few more cases crept in where it was common to write
build time asserts as
if (some condition the compiler evaluates at runtime)
__error_condition_xyz_is_false();
and this obviously relies on the optimizer to build. But these
are all slowly moving over the BUILD_BUG_ON() which also doesn't
rely on the optimizer, so it's also obsolete.
Then there's the issue that some of the kernel macros will
generate absolutely terrible code without optimizer
(good examples are the macros in asm-x86/uaccess.h). But I guess
that could be tolerated too.
Then another reason was that traditionally no source level
debugger was included and if you do assembly level debugging
optimized code is typically easier to read and debug because
the unoptimized gcc code is so terrible.
And with kgdb now being a standard option that has also changed.
And I agree with you that sometimes stepping through code
is very educational. And gdb tends to be a lot happier
with -O0 code indeed.
So if you can make it all work cleanly, ideally tested on
other architectures too and a bit broader (e.g. with allyesconfig)
and track down whatever the mm/* issue
is correctly I don't see any real reason to not submit
a mainline patch that enables this as a CONFIG. Of course
it has to be very clean and not contain hacks.
If you're not familiar with submitting kernel patches
please read Documentation/{SubmittingPatches,SubmitChecklist}
first.
Hope this helps,
-Andi
--
ak@linux.intel.com
next prev parent reply other threads:[~2008-09-09 19:25 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-04 17:50 Building Kernel with -O0 Keith A. Prickett
2008-09-09 16:04 ` Adrian Bunk
2008-09-09 17:10 ` Keith A. Prickett
2008-09-09 18:55 ` linux-os (Dick Johnson)
2008-09-09 19:24 ` Andi Kleen [this message]
2008-09-09 19:43 ` Adrian Bunk
2008-09-09 20:05 ` Andi Kleen
2008-09-09 22:24 ` David Howells
2008-09-25 13:31 ` Adrian Bunk
2008-09-25 13:51 ` David Howells
[not found] <fa.NLANnOwj/8iuI5QjLt63gFrBDJA@ifi.uio.no>
2008-09-04 23:40 ` Robert Hancock
[not found] <b8rB2-6BM-1@gated-at.bofh.it>
[not found] ` <badXc-7gl-21@gated-at.bofh.it>
[not found] ` <baf2M-bE-7@gated-at.bofh.it>
[not found] ` <bagBJ-20J-7@gated-at.bofh.it>
2008-09-10 11:52 ` Bodo Eggert
2008-09-12 5:21 ` emin ak
2008-09-12 13:23 ` linux-os (Dick Johnson)
2008-09-12 14:45 ` linux-os (Dick Johnson)
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=87vdx5ruk5.fsf@basil.nowhere.org \
--to=andi@firstfloor.org \
--cc=bunk@kernel.org \
--cc=keithp@marvell.com \
--cc=linux-kernel@vger.kernel.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