public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: LKML <linux-kernel@vger.kernel.org>, Tim Abbott <tabbott@MIT.EDU>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH/RFT 0/13] x86: unify vmlinux.lds
Date: Wed, 29 Apr 2009 09:57:30 +0200	[thread overview]
Message-ID: <20090429075730.GD22129@elte.hu> (raw)
In-Reply-To: <20090429073510.GA26386@uranus.ravnborg.org>


* Sam Ravnborg <sam@ravnborg.org> wrote:

> Following patchset is on top of the x86/kbuild branch of tip. It 
> unifies vmlinux.lds so we end up with a single file.

Cool!

> The patchset has been build tested on 32bit and 64 bit but has not 
> been boot tested. (Lacking time/resources atm).

No problem, we can test it for you.

> The steps were made minimal to make it simpler to track 
> regressions using bisect (if any) and to make review easier.

Thanks, that's really helpful.

> The unified vmlinux.lds shows some questionable differences 
> between 32 bit and 64 bit.
> 
> o  64 bit uses PHDRS more extensively than 32 bit. Could they be the same?

Hm, PHDRS content really matters mostly for the vDSO, so that gdb 
can treat the vsyscall entry page(s) more as a normal DSO.

for the kernel image itself it does not matter much how standard of 
an ELF binary it is: the boot loader does not care about the PHDR 
description of linker segments and we dont execute the binary.

UML and lguest has its own ELF-binary creation methods.

I think the only relevancy it has on the kernel image is on readonly 
symbols: the PHDRS command gives a reasonable default flags value to 
various segments. We _usually_ give all segments their proper 
permission explicitly - but it was not unheard of to have mixups 
there and to see supposedly-readonly sections end up in a rw area or 
for rw sections to end up in the readonly section.

The latter will be found quickly because it triggers a kernel crash 
- the former kind of bug can linger for a long time.

So i think we should generate proper PHDRS (i.e. use the 64-bit 
linker script portion to also include percpu and init-data bits), 
for consistency.

Do you know what the linker does if the PHDRS and the section flags 
collide? Does the local flag override the PHDRS flag? I havent 
checked.

> o  _stext does not cover all text for 32 bit - a bug? For 64b bit it does.
>    It is only the .code16 wakeup stuff that is not covered but anyway.

that's a bug that should be fixed. Harmless - but needs some testing 
- there are tools (profilers, etc.) that might have assumptions 
about _stext so this needs some test-time.

Also, _stext is the start address for the readonly section - so by 
moving it down a bit on 32-bit we extend readonly to that .code16 
suspend code. If it contains any self-modifying code it will crash.

> o  _edata covers much more on 32 bit

32-bit is corret there. We do use _edata in a couple of places, such 
as in resource ranges - so there could be side-effects, but any such 
side effects would likely show some real hidden bug or uncleanliness 
so it's good to fix that.

> o  The nosave stuff differs (but that is due to the PHDRS stuff anyway)

nosavedata is a really ancient construct used almost nowhere. That's 
a question to Rafael and Linus: can we just get rid of it? The only 
user seems to be:

  int in_suspend __nosavedata = 0;

> o  Different alignmnet requirements in several spots

do you have a list of them? There's hpa's fix from yesterday that 
shows that we have real bugs there.

> o  All the stuff added to support relocable kernels

hpa found a bug (well, misfeature) in the relocatable kernel code 
too.

	Ingo

  parent reply	other threads:[~2009-04-29  7:58 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-29  7:35 [PATCH/RFT 0/13] x86: unify vmlinux.lds Sam Ravnborg
2009-04-29  7:47 ` [PATCH 01/13] x86: beautify vmlinux_32.lds.S Sam Ravnborg
2009-04-29  9:03   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 02/13] x86, vmlinux.lds: unify header/footer Sam Ravnborg
2009-04-29  8:04   ` Ingo Molnar
2009-04-29  8:14     ` Ingo Molnar
2009-04-29  8:25       ` Sam Ravnborg
2009-04-29  8:37         ` Ingo Molnar
2009-04-29  8:51           ` Sam Ravnborg
2009-04-29  9:03   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  9:05   ` [tip:x86/kbuild] x86, vmlinux.lds: add copyright tip-bot for Ingo Molnar
2009-04-29  7:47 ` [PATCH 03/13] x86, vmlinux.lds: unify PHDRS Sam Ravnborg
2009-04-29  9:03   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 04/13] x86, vmlinux.lds: unify start/end of SECTIONS Sam Ravnborg
2009-04-29  9:04   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 05/13] x86, vmlinux.lds: unify .text output sections Sam Ravnborg
2009-04-29  9:04   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 06/13] x86, vmlinux.lds: unify exceptiontable Sam Ravnborg
2009-04-29  9:04   ` [tip:x86/kbuild] x86, vmlinux.lds: unify exception table tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 07/13] x86, vmlinux.lds: unify data output sections Sam Ravnborg
2009-04-29  9:04   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 08/13] x86, vmlinux.lds: move vsyscall " Sam Ravnborg
2009-04-29  9:04   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 09/13] x86, vmlinux.lds: unify first part of initdata Sam Ravnborg
2009-04-29  9:04   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 10/13] x86, vmlinux.lds: unify parainstructions Sam Ravnborg
2009-04-29  9:05   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 11/13] x86, vmlinux.lds: unify .exit.* and .init.ramfs Sam Ravnborg
2009-04-29  9:05   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 12/13] x86, vmlinux.lds: unify percpu Sam Ravnborg
2009-04-29  9:05   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:47 ` [PATCH 13/13] x86, vmlinux.lds: unify remaining parts Sam Ravnborg
2009-04-29  9:05   ` [tip:x86/kbuild] " tip-bot for Sam Ravnborg
2009-04-29  7:57 ` Ingo Molnar [this message]
2009-04-29  8:23   ` [PATCH/RFT 0/13] x86: unify vmlinux.lds Sam Ravnborg
2009-04-29  8:31     ` Ingo Molnar
2009-04-29  9:04       ` Ingo Molnar
2009-04-29 10:00   ` Ingo Molnar
2009-04-29 10:50     ` Sam Ravnborg
2009-04-29 10:59       ` Ingo Molnar
2009-04-29 11:05       ` [tip:x86/kbuild] x86, vmlinux.lds: fix relocatable symbols tip-bot for Ingo Molnar
2009-04-29 11:34         ` Ingo Molnar

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=20090429075730.GD22129@elte.hu \
    --to=mingo@elte.hu \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=sam@ravnborg.org \
    --cc=tabbott@MIT.EDU \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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