Date: Mon, 30 Mar 2015 19:19:55 +0200 From: =?UTF-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com> To: <araujo@FreeBSD.org> Cc: freebsd-xen@freebsd.org Subject: Re: Unable to load multiboot kernel. Message-ID: <551985BB.6050706@citrix.com> In-Reply-To: <CAOfEmZh9ypr6qM4RqmxAZvghmOtUR=uoAHkWjMCOzeNmuZJTOg@mail.gmail.com> References: <CAOfEmZgT9nyJfEe5Z39qT9OSWkAa9RVY4xs0b4CjqN=3JJUU1A@mail.gmail.com> <55196D2F.8040203@citrix.com> <CAOfEmZh9ypr6qM4RqmxAZvghmOtUR=uoAHkWjMCOzeNmuZJTOg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello, El 30/03/15 a les 18.45, Marcelo Araujo ha escrit: > Hello Roger, > > Thanks for the prompt reply and for the patch. > > I made a test and now we have a bit more of information. Seems the problem > is because the kernel is too large. > > OK load /boot/kernel/kernel > /boot/kernel/kernel Trying to load a RAW file at 0x80001000 Error reading > /boot/kernel/kernel: file too large > Unable to load /boot/kernel/kernel as a multiboot payload kernel > can't load file '/boot/kernel/kernel': invalid argument. > > Here is the size of my kernel: > root@e550:/usr/src/sys/boot # du /boot/kernel/kernel > 12885 /boot/kernel/kernel Mmmm, that's smaller than mine and should load without problems: # du /boot/kernel/kernel 21537 /boot/kernel/kernel I think the problem might be that your BIOS is not correctly reporting the extended memory size, or that the loader is not fetching it properly. Can you try the following patch to see which values you get? On one of my boxes that is able to load FreeBSD/Xen I get: bios_extmem: 0xd75d8000 memtop_copyin: 0xd76d8000 memtop: 0xd76d8000 You can apply the patch on top of the previous one, or standalone, as you wish. Roger. --- diff --git a/sys/boot/i386/libi386/i386_copy.c b/sys/boot/i386/libi386/i386_copy.c index 3c05241..4d62282 100644 --- a/sys/boot/i386/libi386/i386_copy.c +++ b/sys/boot/i386/libi386/i386_copy.c @@ -67,6 +67,8 @@ i386_readin(const int fd, vm_offset_t dest, const size_t len) { if (dest + len >= memtop_copyin) { + printf("bios_extmem: 0x%x memtop_copyin: 0x%x memtop: 0x%x\n", + bios_extmem, memtop_copyin, memtop); errno = EFBIG; return(-1); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?551985BB.6050706>