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 <[email protected]> > --- > 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!
