[Bug 268418] UEFI boot; i386 VM ; crash before jump to kernel
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 268418] UEFI boot; i386 VM ; crash before jump to kernel"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 268418] UEFI boot; i386 VM ; crash before jump to kernel"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 268418] UEFI boot; i386 VM ; crash before jump to kernel"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 16 Dec 2022 19:36:08 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=268418 Bug ID: 268418 Summary: UEFI boot; i386 VM ; crash before jump to kernel Product: Base System Version: 13.1-RELEASE Hardware: i386 OS: Any Status: New Severity: Affects Some People Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: martin@bxlr.sk Failure to uefi boot i386 VM on various hypervisors: qemu, VMware, VirtualBox. Crash happens when jump to kernel is done. I've created test qemu VM, used the bios from sysutils/edk2. VM: qemu-system-i386 -s -m 2048 -bios QEMU_UEFI-i386.fd -debugcon file:debug.log -global isa-debugcon.iobase=0x402 \ -serial file:serial.log \ -hda FreeBSD-13.1-RELEASE-i386.qcow2 Problem: Loading kernel... /boot/kernel/kernel text=0xfc084 text=0xb39210 text=0x5b5100 data=0xb0 data=0x109290+0x2d5540 syms=[0x4+0xe91c0+0x4+0x17caac] Loading configured modules... /boot/entropy size=0x1000 /etc/hostid size=0x25 Start @ 0x8fd000 ... !!!! IA32 Exception Type - 06(#UD - Invalid Opcode) CPU Apic ID - 00000000 !!!! EIP - 000B0000, CS - 00000010, EFLAGS - 00000082 EAX - 7FED4E40, ECX - 0000000C, EDX - 7FEBF2D4, EBX - 7FEBF2D4 ESP - 7FEBF25C, EBP - 7FEBF298, ESI - 80000007, EDI - 7F347010 DS - 00000008, ES - 00000008, FS - 00000008, GS - 00000008, SS - 00000008 CR0 - 40000033, CR2 - 00000000, CR3 - 00000000, CR4 - 00000640 DR0 - 00000000, DR1 - 00000000, DR2 - 00000000, DR3 - 00000000 DR6 - FFFF0FF0, DR7 - 00000400 GDTR - 7FC7F000 00000047, IDTR - 7F88D010 000007FF LDTR - 00000000, TR - 00000000 FXSAVE_STATE - 7FEBEFA0 !!!! Can't find image information. !!!! With gdb I found the location where jump to kernel it being done: 0x7f463a55: mov eax,ds:0x7f464734 0x7f463a5a: mov ebx,edx 0x7f463a5c: push 0x10 0x7f463a5e: mov esi,0x80000007 => 0x7f463a63: call DWORD PTR [eax+0x18] (gdb) x/16xw $eax 0x7fed4ea0: 0x00000000 0x00000000 0x00000000 0x00000000 0x7fed4eb0: 0x00000000 0x00000000 0x00000000 0x00000000 0x7fed4ec0: 0x00000000 0x00000000 0x00000000 0x00000000 0x7fed4ed0: 0x00000000 0x00000000 0x00000000 0x00000000 (gdb) That explains the #UD exception. Problem is that kernel is not loaded at all: (gdb) x/2xw 0x8fd000 0x8fd000: 0xffffffff 0xffffffff (gdb) I don't have i386 HW capable of UEFI boot, I can test this only in VM. I'm not familiar with the UEFI, debugging this is a bit of challenge for me. If I understand it correctly at this stage (after https://github.com/freebsd/freebsd-src/blob/main/stand/efi/loader/arch/i386/elf32_freebsd.c#L94) I can't call printf any more. I'm trying to get familiar with this but I thought opening PR would be worth it. -- You are receiving this mail because: You are the assignee for the bug.