Meanwhile I've found this thread:

http://sourceforge.net/p/edk2/mailman/message/33236100/

which shows this is probably not a bug but an iPXE "feature". The 
efi-e1000.rom attached to the last message in that thread seems to work 
better and allows syslinux to get further.

Regards,
BALATON Zoltan

On Mon, 6 Apr 2015, BALATON Zoltan wrote:
> Hello,
>
> I'm trying to find out why pxe boot with syslinux is failing on QEMU with 
> OVMF.
> The problem is already described here in detail:
>
> http://www.syslinux.org/archives/2014-November/022804.html
>
> Since it is reported to work on real hardware (presumably with a different 
> UEFI
> implementation) I suspect a bug in OVMF. I've tried to debug it but could not
> get very far. Syslinux starts with this code (the whole function can be seen 
> at
> http://git.kernel.org/cgit/boot/syslinux/syslinux.git/tree/efi/main.c#n1252):
>
> status = uefi_call_wrapper(BS->HandleProtocol, 3, image,
>                          &LoadedImageProtocol, (void **)&info);
> if (status != EFI_SUCCESS) {
>       Print(L"Failed to lookup LoadedImageProtocol\n");
>       goto out;
> }
>
> status = uefi_call_wrapper(BS->HandleProtocol, 3, info->DeviceHandle,
>                          &PxeBaseCodeProtocol, (void **)&pxe);
> if (status != EFI_SUCCESS) {
>       /*
>        * Use device handle to set up the volume root to
>        * proceed with ADV init.
>        */
>       if (EFI_ERROR(efi_set_volroot(info->DeviceHandle))) {
>               Print(L"Failed to locate root device to prep for ");
>               Print(L"file operations & ADV initialization\n");
>               goto out;
>       }
>
>       efi_derivative(SYSLINUX_FS_SYSLINUX);
>       ops[0] = &vfat_fs_ops;
> } else {
>       efi_derivative(SYSLINUX_FS_PXELINUX);
>       ops[0] = &pxe_fs_ops;
> }
>
> but it seems to fail to get the PxeBaseCode and takes the wrong path and 
> trying
> to read from a vfat volume instead of pxe hence the error message about 
> failing
> read blocks. If I force it to always use pxe it will fail at
> http://git.kernel.org/cgit/boot/syslinux/syslinux.git/tree/efi/pxe.c#n51
> when trying to do:
>
> status = LibLocateHandle(ByProtocol, &PxeBaseCodeProtocol,
>                        NULL, &nr_handles, &handles);
>
> Does the above make sense to anyone with better understanding of edk2/Ovmf and
> could hint at why it fails? Any insight is greatly appreciated.
>
> Thank you,
> BALATON Zoltan

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to