[edk2-devel] HTTP boot failed on timeout

doron.bleiberg at ecitele.com doron.bleiberg at ecitele.com
Mon Feb 17 08:17:43 UTC 2020


Hi Community,

I've also opened same topic at general discussion group, but after digging more into this issue I think the relevant group is here where all the technical stuff happens.
A short introduction to my problem:
I'm trying to boot QEMU VM using HTTP boot.
I've modified Conf/target.txt as follows:
ACTIVE_PLATFORM       = OvmfPkg/OvmfPkgX64.dsc
TARGET_ARCH           = X64
TOOL_CHAIN_TAG        = GCC48
TARGET                = RELEASE

and OvmfPkg/OvmfPkgX64.dsc as follows:
DEFINE NETWORK_HTTP_BOOT_ENABLE     = TRUE
DEFINE SECURE_BOOT_ENABLE      = TRUE
BUILD_TARGETS                  = RELEASE

and compiled compiled OvmfPkg/OvmfPkgX64.dsc

I'm loading the OVMF.fd to QEMU VM in this way:
/usr/bin/qemu-system-x86_64 -name UEFI-HTTP-VM
-m 8192M -smp cpus=1
-enable-kvm -machine smm=off
-boot order=c *-bios /opt/gns3/images/QEMU/Ovmf.fd*
-drive file=/opt/gns3/projects/1a83274a-c57f-4337-8a0d-1e68a9312e9a/project-files/qemu/d8f37f0b-2b63-455f-b536-b309b9020e36/hda_disk.qcow2,if=ide,index=0,media=disk
-uuid d8f37f0b-2b63-455f-b536-b309b9020e36
-vnc 0.0.0.0:3
-monitor tcp:127.0.0.1:33919,server,nowait
-net none -device virtio-net-pci,mac=0c:2e:9a:0e:36:00,netdev=gns3-0 -netdev socket,id=gns3-0,udp=127.0.0.1:10017,localaddr=127.0.0.1:10016
-nographic

The VM starts and boots, the HTTP boot is kicking in and the download is starting. However, after few seconds the download is stopped and the boot terminates with 'Error: Server response timeout'.
The process is repeatable and always terminates at the same point (42% upload completed in my case).

I've drilled down the code and located the 'offending' code here:
file: NetworkPkg/HttpBootDxe/HttpBootSupport.c
line#: 1012
Offending Code: while (!HttpIo->IsRxDone && ((HttpIo->TimeoutEvent == NULL) || EFI_ERROR (gBS->CheckEvent (HttpIo->TimeoutEvent))))
Error Handler at line #1022: if (!HttpIo-> IsRxDone )

What I did i order to investigate:
I've also tried to add HTTP header: "Connection": "Keep-Alive" hoping it will result the HTTP server keeping sessions open.
Used Wireshark to capture and analyze the packets during download - I could not spot anything unusual. Eventually the packed transfer just stops
Raised HTTP server debug level - could not find anything valuable in the logs. As far as I can tell from the logs, the HTTP server works correctly and it seems the problem is in the client side (UEFI)
I'm downloading large file, so I've checked I have enough RAM to hold the image - seems OK. No complains regarding buffer size

Few inputs:
My HTTP server version: Apache httpd/2.4.6 (CentOS)
File size is I'm trying to download and boot: ~420MB

Error observed in the UEFI log when download terminates:
Error: Server response timeout.
BdsDxe: failed to load Boot0005 "UEFI HTTPv4 (MAC:0C2E9A0E3600)" from PciRoot(0x0)/Pci(0x3,0x0)/MAC(0C2E9A0E3600,0x1)/IPv4(0.0.0.0,0x0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0)/Uri(): Not Found

For me it seems like a potential problem on the UEFI side, maybe related to Poll or other networking stuff.

I'll appreciate any help.

Doron

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#54548): https://edk2.groups.io/g/devel/message/54548
Mute This Topic: https://groups.io/mt/71346285/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20200217/4c9e204a/attachment.htm>


More information about the edk2-devel-archive mailing list