Skip site navigation (1)Skip section navigation (2)
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>