[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] i386: don't require elf64 for multiboot kernel
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] i386: don't require elf64 for multiboot kernel |
Date: |
Wed, 5 Dec 2018 06:35:32 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 2018-12-04 17:55, Gonzo FWS wrote:
> Right now IncludeOS on x86_64 must use a chainloader for multiboot support.
> The chainloader is an ELF32 kernel that loads the real ELF64 kernel and jumps
> to it. As long as the ELF has the .multiboot section and conforms to the
> spec, meaning _start is be a 32-bit entry, it should be fine.
>
> By removing the extra check in multiboot.c, we can also boot ELF64 files. As
> can be seen here:
> https://cloud.fwsnet.net/index.php/s/XrkBkC8zy7MLa9p
>
> Signed-off-by: Alf-André Walla <address@hidden>
> ---
> hw/i386/multiboot.c | 5 -----
> 1 file changed, 5 deletions(-)
>
> diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c
> index 1a4344f5fc..d07ebf3361 100644
> --- a/hw/i386/multiboot.c
> +++ b/hw/i386/multiboot.c
> @@ -194,11 +194,6 @@ int load_multiboot(FWCfgState *fw_cfg,
> int kernel_size;
> fclose(f);
>
> - if (((struct elf64_hdr*)header)->e_machine == EM_X86_64) {
> - error_report("Cannot load x86-64 image, give a 32bit one.");
> - exit(1);
> - }
> -
Looks like the check has once been introduced explicitly:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=9696846600cac4bd0dfd6835
Maybe we should at least print out a warn_report() instead, so that
people who try to boot 64-bit kernel without 32-bit entry point still
get an idea why it is not working in that case?
Thomas
PS: Please make sure to CC: the i386 maintainers when sending patches
that touch files in the hw/i386/ directory, thanks!