Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Feb 2017 13:36:29 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-virtualization@FreeBSD.org
Subject:   [Bug 211746] [Hyper-V] UEFI VM can't boot from the iso installation disk
Message-ID:  <bug-211746-27103-yomxUTZnxv@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-211746-27103@https.bugs.freebsd.org/bugzilla/>
References:  <bug-211746-27103@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D211746

--- Comment #4 from Dexuan Cui <decui@microsoft.com> ---
(In reply to Marcel Moolenaar from comment #3)

Hi Marcel,
Thank you for the quick help!

Yes, I checked all the AllocatePages() calls and they all succeeded, i.e.
returning 0.

I found the crash happened in=20
elf64_exec() -> trampoline() -> efi_copy_finish -> *dst++ =3D *src++;

In efi_copy_finish(), I added some printf's to dump the values of the
varilables:

/boot/kernel/kernel text=3D0xfe3048 data=3D0x128b68+0x207fa0
syms=3D[0x8+0x146f88+0x8+
Booting...
Start @ 0xffffffff802e2640 ...
EFI framebuffer information:
addr, size     0xf8000000, 0x800000
dimensions     1024 x 768
stride         1024
masks          0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000
efi_copy_finish : staging=3D0xf37cb000
efi_copy_finish : staging_end=3D0xf67cb000
efi_copy_finish : staging_offset=3D0xf35cb000
efi_copy_finish : src=3D0xf37cb000, dst=3D0x200000, last=3D0xf67cb000

If I change the line
last =3D (uint64_t *)staging_end;
to=20
last =3D (uint64_t *)staging + (1024*1024*45);

The crash won't happen and the kernel can boot fine.

I'm using the releng/10.3 branch, where EFI_STAGING_SIZE is 48MB.
This is to say, the kernel can boot fine if I use EFI_STAGING_SIZE=3D45MB.

Any idea?

Why do you think is it a Hyper-V firmware bug in AllocatePages()? I'm not
familar with UEFI Boot Services. :-)

I'll check the memory map before/after the call to AllocatePages().
I'm going to use sys/boot/efi/loader/main.c: command_memmap() as an example=
 to
call GetMemoryMap.

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-211746-27103-yomxUTZnxv>