qemu-devel
[Top][All Lists]
Advanced

[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!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]