Hello,

El 30/03/15 a les 16.27, Marcelo Araujo ha escrit:
> Hi guys,
> 
> I'm attempting to boot FreeBSD as Dom0 on ThinkPad E550 with an i7-5500U
> quad-core and 16G of ram.
> 
> The FreeBSD is in the revision r280848 and Xen is the 4.6-unstable(checkout
> today). The FreeBSD kernel was built as amd64.
> 
> So, the problem that I'm facing is that not possible to load multiboot
> kernel. Right after to load the XEN kernel, its attempt to  load the next
> KERNEL, but I reach out at:
> sys/boot/i386/libi386/multiboot.c
> 167         error = elf32_loadfile_raw(filename, dest, result, 1);
> 168         if (error != 0) {
> 169                 printf(
> 170         "elf32_loadfile_raw failed: %d unable to load multiboot
> kernel\n",
> 171         error);
> 172                 goto out;
> 173         }
> 
> I tried to boot at loader using:
> OK unload OK load /boot/xen dom0_mem=1024M dom0_max_vcpus=2 dom0pvh=1
> console=com1,vga
> boot/xen data=0x1e0090+0x7fd20f70 \
> OK load /boot/kernel/kernel
> /boot/kernel/kernel Unable to load /boot/kernel/kernel as a multiboot
> payload kernel
> /boot/kernel/kernel text=0x104c6a8 data=0x12dbb8+0x3fb0f0
> sysms=[0x8+0x148f98+0x8+0x164832]
> OK boot
> 
> And the system is halted.
> 
> Any idea?

That's something new, I've never seen this before. IMHO it seems like 
arch_readin is failing to load the kernel into memory, but due to the 
lack of messages I'm not sure. Could you try the patch above? It should 
make the errors a little bit more chatty.

Roger.

diff --git a/sys/boot/common/module.c b/sys/boot/common/module.c
index b48b493..53ce358 100644
--- a/sys/boot/common/module.c
+++ b/sys/boot/common/module.c
@@ -380,6 +380,7 @@ file_loadraw(char *name, char *type, int insert)
 
     /* We can't load first */
     if ((file_findfile(NULL, NULL)) == NULL) {
+       printf("Can not load a raw file without a kernel\n");
        command_errmsg = "can't load file before kernel";
        return(NULL);
     }
@@ -387,12 +388,14 @@ file_loadraw(char *name, char *type, int insert)
     /* locate the file on the load path */
     cp = file_search(name, NULL);
     if (cp == NULL) {
+       printf("Cannot find %s file\n", name);
        sprintf(command_errbuf, "can't find '%s'", name);
        return(NULL);
     }
     name = cp;
 
     if ((fd = open(name, O_RDONLY)) < 0) {
+       printf("can't open '%s': %s", name, strerror(errno));
        sprintf(command_errbuf, "can't open '%s': %s", name, strerror(errno));
        free(name);
        return(NULL);
@@ -404,6 +407,7 @@ file_loadraw(char *name, char *type, int insert)
     printf("%s ", name);
 
     laddr = loadaddr;
+    printf("Trying to load a RAW file at 0x%lx ", laddr);
     for (;;) {
        /* read in 4k chunks; size is not really important */
        got = archsw.arch_readin(fd, laddr, 4096);
@@ -411,6 +415,7 @@ file_loadraw(char *name, char *type, int insert)
            break;
        if (got < 0) {                          /* error */
            sprintf(command_errbuf, "error reading '%s': %s", name, 
strerror(errno));
+           printf("Error reading %s: %s\n", name, strerror(errno));
            free(name);
            close(fd);
            return(NULL);
diff --git a/sys/boot/i386/libi386/multiboot.c 
b/sys/boot/i386/libi386/multiboot.c
index 11c35df..a3f3084 100644
--- a/sys/boot/i386/libi386/multiboot.c
+++ b/sys/boot/i386/libi386/multiboot.c
@@ -373,7 +373,7 @@ multiboot_obj_loadfile(char *filename, u_int64_t dest,
                        printf(
                        "Unable to load %s as a multiboot payload kernel\n",
                        filename);
-                       return (EFTYPE);
+                       return (EINVAL);
                }
 
                /* Load kernel metadata... */
@@ -382,7 +382,7 @@ multiboot_obj_loadfile(char *filename, u_int64_t dest,
                if (error) {
                        printf("Unable to load kernel %s metadata error: %d\n",
                            rfp->f_name, error);
-                       return (EFTYPE);
+                       return (EINVAL);
                }
 
                /*


_______________________________________________
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to