[Bug 192324] [uefi] 2014-07-14 11.0-CURRENT snapshot doesn't boot

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Sep 25 21:18:03 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192324

--- Comment #3 from Matt Smith <mgsmith at netgate.com> ---
I attempted to debug it a little further. I added debugging statements around
the code where the last messages get printed:

Index: sys/boot/amd64/efi/copy.c
===================================================================
--- sys/boot/amd64/efi/copy.c    (revision 272035)
+++ sys/boot/amd64/efi/copy.c    (working copy)
@@ -91,6 +91,7 @@
 void
 x86_efi_copy_finish(void)
 {
+    printf("BEGIN %s\n", __func__);
     uint64_t    *src, *dst, *last;

     src = (uint64_t *)staging;
@@ -99,4 +100,5 @@

     while (src < last)
         *dst++ = *src++;
+    printf("END %s\n", __func__);
 }
Index: sys/boot/amd64/efi/elf64_freebsd.c
===================================================================
--- sys/boot/amd64/efi/elf64_freebsd.c    (revision 272035)
+++ sys/boot/amd64/efi/elf64_freebsd.c    (working copy)
@@ -167,8 +167,10 @@
     err = bi_load(fp->f_args, &modulep, &kernend);
     if (err != 0)
         return(err);
+    printf("after bi_load\n");

     status = BS->ExitBootServices(IH, x86_efi_mapkey);
+    printf("after ExitBootServices\n");
     if (EFI_ERROR(status)) {
         printf("%s: ExitBootServices() returned 0x%lx\n", __func__,
             (long)status);
@@ -176,9 +178,13 @@
     }

     dev_cleanup();
+    printf("after dev_cleanup\n");

+    printf("kernend is %u, modulep is %u, PT4 is %u, ehdr->e_entry is %u\n",
+        kernend, modulep, PT4, ehdr->e_entry);
     trampoline(trampstack, x86_efi_copy_finish, kernend, modulep, PT4,
         ehdr->e_entry);
+    printf("after trampoline\n");

     panic("exec returned");
 }

Here's the output:

Loading /boot/defaults/loader.conf 
/boot/kernel/kernel text=0xfd1f00 data=0x12a530+0x608630
syms=[0x8+0x142c80+0x8+0x15dc80]

Hit [Enter] to boot immediately, or any other key for command prompt.


Type '?' for a list of commands, 'help' for more detailed help.
OK set kern.vty=vt
OK set comconsole_speed=115200
OK set console=comconsole
OK set hw.textmode=1
OK boot -v
Booting...
Start @ 0xffffffff802dd000 ...
EFI framebuffer information:
addr, size     0x80000000, 0x7e9000
dimensions     1920 x 1080
stride         1920
masks          0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000
after bi_load
after ExitBootServices
after dev_cleanup
kernend is 31100928, modulep is 31092736, PT4 is 1073725440, ehdr->e_entry is
2150486016
BEGIN x86_efi_copy_finish
END x86_efi_copy_finish

After that, there is no further output. So the trampoline call is invoked and
runs at least to the point where it invokes x68_efi_copy_finish. I'm not too
familiar with assembly code & hardware registers so I can't tell anything
beyond that.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list