mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: "Magnus Damm" <magnus.damm@gmail.com>
Cc: fastboot@osdl.org, linux-kernel@vger.kernel.org,
	Horms <horms@verge.net.au>,
	"Jan Kratochvil" <lace@jankratochvil.net>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Vivek Goyal" <vgoyal@in.ibm.com>,
	"Linda Wang" <lwang@redhat.com>
Subject: Re: [RFC] ELF Relocatable x86 and x86_64 bzImages
Date: Wed, 02 Aug 2006 01:09:55 -0600	[thread overview]
Message-ID: <m1lkq7txz0.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <aec7e5c30608012334y42e947e6ge935e5d866f78c84@mail.gmail.com> (Magnus Damm's message of "Wed, 2 Aug 2006 15:34:39 +0900")

"Magnus Damm" <magnus.damm@gmail.com> writes:

> On 8/1/06, Eric W. Biederman <ebiederm@xmission.com> wrote:
>>
>> The problem:
>>
>> We can't always run the kernel at 1MB or 2MB, and so people who need
>> different addresses must build multiple kernels.  The bzImage format
>> can't even represent loading a kernel at other than it's default address.
>> With kexec on panic now starting to be used by distros having a kernel
>> not running at the default load address is starting to become common.
>>
>> The goal of this patch series is to build kernels that are relocatable
>> at run time, and to extend the bzImage format to make it capable of
>> expressing a relocatable kernel.
>
> Nice work. I'd really like to see support for relocatable kernels in
> mainline (and kexec-tools!).

kexec-tools already have initial support for ELF ET_DYN executables.
Vivek posted a fix a day two ago so I expect that the support
should be working.

> Eric, could you please list the advantages of your run-time relocation
> code over my incomplete relocate-in-userspace prototype posted to
> fastboot a few weeks ago?

If you watch an architecture evolve one thing you will notice is that
the kinds of relocations keep growing.  An ever growing list of things
to for the bootloader to do is a pain.  Especially when bootloaders
generally need to be as simple and as fixed as possible because bootloaders
are not something you generally want to update.

Beyond that if you look at head.S the code to process the relocations 
(after I have finished post processing them at build time) is 9 instructions.
Which is absolutely trivial, at least for now.

By keeping the bzImage processing the relocations we have kept the
bootloader/kernel interface simple.

> One thing I know for sure is that your implementation supports bzImage
> while my only supports relocation of vmlinux files. Are there any
> other uses for relocatable bzImage except kdump?

I can't think of any volume users.  A hypervisor that would actually report
the real physical addresses would be a candidate.  It's a general purpose
facility so if it is interesting users will show up.  Static
relocation has already found another use on x86_64.

There are definitely users of an ELF bzImage beyond the kdump case.
Anything that doesn't have a traditional 16bit BIOS on it.  LinuxBIOS,
and Xen, and some others.

Not having to keep track of anything but your bzImage to boot is also
a serious advantage.  It's the one binary to rule them all. :)

Eric

  reply	other threads:[~2006-08-02  7:11 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-01 10:58 Eric W. Biederman
2006-08-01 11:03 ` [PATCH 1/33] i386: vmlinux.lds.S Distinguish absolute symbols Eric W. Biederman
2006-08-01 19:06   ` Sam Ravnborg
2006-08-01 11:03 ` [PATCH 2/33] i386: define __pa_symbol Eric W. Biederman
2006-08-01 19:06   ` Andi Kleen
2006-08-02  2:19     ` Eric W. Biederman
2006-08-02  3:04       ` Andi Kleen
2006-08-01 11:03 ` [PATCH 3/33] i386 setup.c: Reserve kernel memory starting from _text Eric W. Biederman
2006-08-01 11:03 ` [PATCH 4/33] i386: CONFIG_PHYSICAL_START cleanup Eric W. Biederman
2006-08-01 19:08   ` Sam Ravnborg
2006-08-02  2:23     ` Eric W. Biederman
2006-08-02 16:14     ` Eric W. Biederman
2006-08-03 14:05       ` Sam Ravnborg
2006-08-01 11:03 ` [PATCH 5/33] i386 Kconfig: Add a range definition to config PHYSICAL_START Eric W. Biederman
2006-08-01 11:03 ` [PATCH 6/33] Make linux/elf.h safe to be included in assembly files Eric W. Biederman
2006-08-01 11:03 ` [PATCH 7/33] elf: Add ELFOSABI_STANDALONE to elf.h Eric W. Biederman
2006-08-01 11:03 ` [PATCH 8/33] kallsyms.c: Generate relocatable symbols Eric W. Biederman
2006-08-01 11:36   ` Paulo Marques
2006-08-01 11:52     ` Eric W. Biederman
2006-08-01 11:03 ` [PATCH 9/33] i386 boot: Add serial output support to the decompressor Eric W. Biederman
2006-08-01 19:19   ` Andi Kleen
2006-08-02  2:30     ` Eric W. Biederman
2006-08-02  3:07       ` Andi Kleen
2006-08-02  4:57         ` Eric W. Biederman
2006-08-02  5:21           ` Andi Kleen
2006-08-02  6:44             ` Eric W. Biederman
2006-08-02  3:06     ` Eric W. Biederman
2006-08-02  3:10       ` Andi Kleen
2006-08-02  5:27         ` Eric W. Biederman
2006-08-02  5:44           ` Andi Kleen
2006-08-02  7:14             ` Eric W. Biederman
2006-08-01 11:03 ` [PATCH 10/33] i386: Relocatable kernel support Eric W. Biederman
2006-08-01 13:34   ` Mika Penttilä
2006-08-01 18:07     ` Eric W. Biederman
2006-08-01 18:11       ` Sam Ravnborg
2006-08-01 18:16       ` Mika Penttilä
2006-08-01 11:03 ` [PATCH 11/33] i386 boot: Add an ELF header to bzImage Eric W. Biederman
2006-08-01 22:10   ` Jeremy Fitzhardinge
2006-08-02  2:38     ` Eric W. Biederman
2006-08-01 11:03 ` [PATCH 12/33] x86_64: fixup indentation in e820.c Eric W. Biederman
2006-08-01 11:03 ` [PATCH 13/33] x86_64: Remove assumptions about the kernel start address from e820/bad_addr() Eric W. Biederman
2006-08-01 11:03 ` [PATCH 14/33] x86_64: Properly report in /proc/iomem the kernel address Eric W. Biederman
2006-08-01 11:03 ` [PATCH 15/33] x86_64: Fix kernel direct mapping size check Eric W. Biederman
2006-08-01 11:03 ` [PATCH 16/33] x86_64: Assembly safe page.h and pgtable.h Eric W. Biederman
2006-08-01 11:03 ` [PATCH 17/33] x86_64: Separate normal memory map initialization from the hotplug case Eric W. Biederman
2006-08-01 11:03 ` [PATCH 18/33] x86_64: Kill temp_boot_pmds Eric W. Biederman
2006-08-01 19:02   ` Andi Kleen
2006-08-02  2:08     ` Eric W. Biederman
2006-08-01 19:04   ` [PATCH 18/33] x86_64: Kill temp_boot_pmds II Andi Kleen
2006-08-02  2:11     ` Eric W. Biederman
2006-08-02  3:07       ` Andi Kleen
2006-08-02  5:35         ` Eric W. Biederman
2006-08-01 11:03 ` [PATCH 19/33] x86_64: Cleanup the early boot page table Eric W. Biederman
2006-08-01 11:03 ` [PATCH 20/33] x86_64: fix early_printk to use the standard ISA mapping Eric W. Biederman
2006-08-01 11:03 ` [PATCH 21/33] x86_64: modify copy_bootdata to use virtual addresses Eric W. Biederman
2006-08-01 11:03 ` [PATCH 22/33] x86_64: Fix gdt table size in trampoline.S Eric W. Biederman
2006-08-01 18:59   ` Andi Kleen
2006-08-01 11:03 ` [PATCH 23/33] x86_64: cleanup segments Eric W. Biederman
2006-08-01 11:03 ` [PATCH 24/33] x86_64: Add EFER to the set registers saved by save_processor_state Eric W. Biederman
2006-08-01 11:03 ` [PATCH 25/33] x86_64: 64bit PIC SMP trampoline Eric W. Biederman
2006-08-01 19:13   ` Andi Kleen
2006-08-01 11:03 ` [PATCH 26/33] x86_64: 64bit PIC ACPI wakeup Eric W. Biederman
2006-08-01 19:10   ` Andi Kleen
2006-08-01 11:03 ` [PATCH 27/33] x86_64: Modify discover_ebda to use virtual addresses Eric W. Biederman
2006-08-01 11:03 ` [PATCH 28/33] x86_64: Remove the identity mapping as early as possible Eric W. Biederman
2006-08-01 19:15   ` Andi Kleen
2006-08-01 11:03 ` [PATCH 29/33] x86_64: __pa and __pa_symbol address space separation Eric W. Biederman
2006-08-01 11:03 ` [PATCH 30/33] x86_64: Remove CONFIG_PHYSICAL_START Eric W. Biederman
2006-08-01 11:03 ` [PATCH 31/33] x86_64 boot: Add serial output support to the decompressor Eric W. Biederman
2006-08-01 11:03 ` [PATCH 32/33] x86_64: Relocatable kernel support Eric W. Biederman
2006-08-01 19:11   ` Andi Kleen
2006-08-02  2:25     ` Eric W. Biederman
2006-11-05  6:02       ` Yinghai Lu
2006-11-05  6:52         ` Eric W. Biederman
2006-11-05  7:15           ` Yinghai Lu
2006-08-01 11:03 ` [PATCH 33/33] x86_64: Make bzImage a valid 64bit elf executable Eric W. Biederman
2006-08-01 19:26 ` [RFC] ELF Relocatable x86 and x86_64 bzImages Vivek Goyal
2006-08-01 20:13   ` Jan Kratochvil
2006-08-01 20:25   ` H. Peter Anvin
2006-08-02  2:02     ` Eric W. Biederman
2006-08-01 20:40 ` Vivek Goyal
2006-08-02  2:40   ` Eric W. Biederman
2006-08-02  6:34 ` Magnus Damm
2006-08-02  7:09   ` Eric W. Biederman [this message]
2006-08-02  8:34     ` Magnus Damm
2006-08-02  9:59       ` Eric W. Biederman
2006-08-02 18:37 ` [Fastboot] " Don Zickus
2006-08-03  1:00   ` Eric W. Biederman
2006-08-03  4:53     ` H. Peter Anvin
2006-08-04 22:56 ` Vivek Goyal
2006-08-04 23:14   ` Eric W. Biederman
2006-08-04 23:38     ` Dave Jones
2006-08-04 23:47       ` H. Peter Anvin
2006-08-05  8:01         ` Eric W. Biederman
2006-08-08  3:34     ` Horms
2006-08-08  4:32       ` H. Peter Anvin
2006-08-08  4:57         ` Magnus Damm
2006-08-08  5:04         ` Eric W. Biederman
2006-08-08  6:09         ` Horms
2006-08-08  7:23           ` Eric W. Biederman
2006-08-08  7:58             ` Horms
2006-08-09 14:56               ` D. Hazelton
2006-08-17 18:44             ` Vivek Goyal
2006-08-11 13:11   ` [Fastboot] " Rachita Kothiyal
2006-08-11 13:36     ` Vivek Goyal

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=m1lkq7txz0.fsf@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=fastboot@osdl.org \
    --cc=horms@verge.net.au \
    --cc=hpa@zytor.com \
    --cc=lace@jankratochvil.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lwang@redhat.com \
    --cc=magnus.damm@gmail.com \
    --cc=vgoyal@in.ibm.com \
    /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

all inboxes | Powered by JetHome®