Hello everybody.

I'm actualy experiencing some problem for ordering my VM boot with qemu-kvm / Seabios and gPXE.
I use libvirt's per-device boot option which launch my VM with this options : 

You can find libvirt's xml there :  http://pastebin.com/bqizkLiZ
/usr/bin/kvm -S -M pc-0.14 -enable-kvm -m 2048 -smp 1,maxcpus=3,sockets=3,cores=1,threads=1 -name vm-name
-uuid 32b5bf0d-fe46-2edb-b0d9-c134ba8a7636
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/vm-name.monitor,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control
-rtc base=utc -drive file=/var/lib/libvirt/images/ploop2.img,if=none,id=drive-virtio-disk0,format=raw
-device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0
-drive file=/var/lib/libvirt/images/vm-name.img,if=none,id=drive-virtio-disk1,format=raw
-device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk1,id=virtio-disk1
-netdev tap,fd=23,id=hostnet0
-device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:28:ca:e5,bus=pci.0,addr=0x3,bootindex=2
-netdev tap,fd=24,id=hostnet1
-device rtl8139,netdev=hostnet1,id=net1,mac=52:54:00:28:ca:e6,bus=pci.0,addr=0x4,bootindex=1
-chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0
-usb -vnc
-k en-us -vga cirrus
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7


We see the right bootindex option as I want to boot on gPXE from my second NIC (mac=52:54:00:28:ca:e6).
The problem is that during my VM boot process, seabios initialise gPXE for my 2 NIC. 
But then gPXE try to boot (DHCP request) on the first NIC rather than on the second one. 

It always try to boot first on the first PCI device (00:03.0 instead of 00:04.0).

I don't really know if the problem comes from gPXE or Seabios but I have exactly the same problem when I try with Ubuntu's etherboot rom.

I got this problem with Ubuntu latest qemu-kvm (0.14.1+noroms-0ubuntu3.11.04.1) / seabios (0.6.2-0ubuntu1) and etherboot (5.4.4-7ubuntu2) and Fedora qemu-kvm (qemu-kvm-0.15.0-4.fc15.x86_64) / Seabios (seabios-bin-0.6.2-2.fc15.noarch)  and gPXE (gpxe-roms-qemu-1.0.1-4.fc15.noarch).

I also recompiled latest Seabios (pre-0.6.3-20110929) trunk and gPXE (1.0.1+) from Git : the behaviour is exactly the same. I tried with different NIC driver (virtio and rtl8139) with also same behavior.

Do you have any idea where my problem can come from ?

Thanks in advance for any advice.


Romain Vrignaud