Bug 967444

Summary: latest qemu-kvm fail to assign correct order for the boot device in seabios as we specified the bootindex in cli
Product: Red Hat Enterprise Linux 7 Reporter: Sibiao Luo <sluo>
Component: qemu-kvmAssignee: Amos Kong <akong>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: urgent Docs Contact:
Priority: high    
Version: 7.0CC: acathrow, ailan, akong, chayang, juzhang, michen, qzhang, rhod, sluo, virt-maint, xfu
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: QEMU-1.6 QEMU-1.5.1 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-13 12:32:24 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
screenshot for boot device with qemu-kvm-1.5.0-2.el7.x86_64.
none
screenshot for boot device with qemu-kvm-1.4.0-4.el7.x86_64.
none
fixed upstream seabios: bios.bin none

Description Sibiao Luo 2013-05-27 07:32:29 UTC
Description of problem:
the latest qemu-kvm-1.5.0-2.el7.x86_64 fail to assign correct order for the boot device in seabios as we specified the bootindex in cli. IF i download the qemu to qemu-kvm-1.4.0-4.el7.x86_64, it have no such issue, the order of the boot device is correct.
bug 923030 is specified for Q35 machine type.

Version-Release number of selected component (if applicable):
host info:
3.10.0-0.rc2.57.el7.x86_64
qemu-kvm-1.5.0-2.el7.x86_64
seabios-bin-1.7.2-1.el7.noarch
seabios-1.7.2-1.el7.x86_64
guest info:
windows

How reproducible:
100%

Steps to Reproduce:
1.Install guest specified the bootindex in cli.
# /usr/libexec/qemu-kvm -cpu host -M pc-i440fx-1.4 -enable-kvm -S -m 4G -smp 4,sockets=2,cores=2,threads=1 -no-kvm-pit-reinjection -usb -device usb-tablet,id=input0 -name sluo-test -uuid `uuidgen` -rtc base=localtime,clock=host,driftfix=slew -device virtio-serial-pci,id=virtio-serial0,max_ports=16,vectors=0,bus=pci.0,addr=0x3 -chardev socket,id=channel1,path=/tmp/helloworld1,server,nowait -device virtserialport,chardev=channel1,name=com.redhat.rhevm.vdsm,bus=virtio-serial0.0,id=port1 -chardev socket,id=channel2,path=/tmp/helloworld2,server,nowait -device virtserialport,chardev=channel2,name=com.redhat.rhevm.vdsm,bus=virtio-serial0.0,id=port2 -drive file=/home/test.qcow2,if=none,id=drive-system-disk,format=qcow2,cache=none,aio=native,werror=stop,rerror=stop -device virtio-scsi-pci,bus=pci.0,addr=0x4,id=scsi0 -device scsi-hd,drive=drive-system-disk,id=system-disk,bus=scsi0.0,bootindex=1 -netdev tap,id=hostnet0,vhost=on,script=/etc/qemu-ifup -device virtio-net-pci,netdev=hostnet0,id=virtio-net-pci0,mac=08:2e:5f:0a:0d:b2,bus=pci.0,addr=0x5,bootindex=2 -device virtio-balloon-pci,id=ballooning,bus=pci.0,addr=0x6 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -k en-us -vnc :1 -spice port=5931,disable-ticketing -boot menu=on -vga qxl -global qxl-vga.vram_size=67108864 -serial unix:/tmp/ttyS0,server,nowait -monitor stdio -drive file=/home/en_windows_8_enterprise_x86_dvd_917587.iso,if=none,media=cdrom,id=drive-cdrom-disk,format=raw,cache=none,aio=native,werror=stop,rerror=stop -device virtio-scsi-pci,bus=pci.0,addr=0x7,id=scsi1 -device scsi-cd,drive=drive-cdrom-disk,id=cdrom-disk,bus=scsi1.0,bootindex=0 -drive file=/usr/share/virtio-win/virtio-win-1.6.3.iso,if=none,id=drive-ide0-0-0,werror=stop,rerror=stop,cache=none,format=raw,media=cdrom,readonly=on -device ide-drive,drive=drive-ide0-0-0,id=ide0-0-0,bus=ide.0,unit=1 -drive file=/usr/share/virtio-win/virtio-win-1.6.3_x86.vfd,if=none,id=f1,format=raw,cache=none -global isa-fdc.driveA=f1
2.press F12 during POST.

Actual results:
after step 2, we can see the order of boot device as following, i will attach the screenshot later.
Press F12 for boot menu.

Select boot device:

1. iPXE (PCI 00:05.0)
2. virtio-scsi Drive QEMU QEMU HARDDISK 1.5.
3. Legacy option rom
4. Floppy [drive A]
5. DVD/CD [ata0-1: QEMU DVD-ROM ATAPI-4 DVD/CD]
6. DVD/CD [virtio-scsi Drive QEMU QEMU CD-ROM 1.5.]

Expected results:
1. DVD/CD [virtio-scsi Drive QEMU QEMU CD-ROM 1.5.]
2. virtio-scsi Drive QEMU QEMU HARDDISK 1.5.
3. iPXE (PCI 00:05.0)
4. Legacy option rom
5. Floppy [drive A]
6. DVD/CD [ata0-1: QEMU DVD-ROM ATAPI-4 DVD/CD]
 
Additional info:

Comment 1 Sibiao Luo 2013-05-27 07:34:21 UTC
Created attachment 753502 [details]
screenshot for boot device with qemu-kvm-1.5.0-2.el7.x86_64.

Comment 2 Sibiao Luo 2013-05-27 07:35:33 UTC
Created attachment 753503 [details]
screenshot for boot device with qemu-kvm-1.4.0-4.el7.x86_64.

Comment 3 juzhang 2013-05-27 08:05:32 UTC
Since this bug can be reproduced on qemu1.5 but not on qemu1.4. Set this issue as urgent.

Comment 4 Amos Kong 2013-05-28 07:43:51 UTC
It's seabios bug, just post a patch to seabios upstream:
  http://www.seabios.org/pipermail/seabios/2013-May/006264.html

Comment 5 Amos Kong 2013-05-28 07:55:48 UTC
Created attachment 753768 [details]
fixed upstream seabios: bios.bin

Sibiao,

Attached upstream seabios(bios.bin) with my fix[1].
Can you help to test both q35 & pc-i440fx?

qemu-kvm -bios bios.bin ... (remember to use -bios option to use the fixed bios)

[1] http://www.seabios.org/pipermail/seabios/2013-May/006264.html

Comment 6 Sibiao Luo 2013-05-28 09:40:37 UTC
(In reply to Amos Kong from comment #5)
> Created attachment 753768 [details]
> fixed upstream seabios: bios.bin
> 
> Sibiao,
> 
> Attached upstream seabios(bios.bin) with my fix[1].
> Can you help to test both q35 & pc-i440fx?
> 
> qemu-kvm -bios bios.bin ... (remember to use -bios option to use the fixed
> bios)
> 
> [1] http://www.seabios.org/pipermail/seabios/2013-May/006264.html

yes, thanks for your quickly response. I tried your fixed seabios that pc-i440fx machine type is ok now, but the Q35 machine type still fail (maybe bug 923030).

Best Regards,
sluo

Comment 7 Amos Kong 2013-05-28 11:28:28 UTC
The inconsistency is caused by Qemu refactoring, better to change QEMU to keep original style of fw_dev_path.

Move back to qemu component.

[PATCH] qdev: add nothing to fw_dev_path when implemented get_fw_dev_path returns NULL
http://lists.nongnu.org/archive/html/qemu-devel/2013-05/msg03987.html

Comment 10 Sibiao Luo 2013-11-18 05:11:56 UTC
Verify this issue on qemu-kvm-1.5.3-19.el7.x86_64 with the same steps as comment #0. 

host info:
3.10.0-41.el7.x86_64
qemu-kvm-1.5.3-19.el7.x86_64
seabios-1.7.2.2-4.el7.x86_64

Steps:
the same to comment #0, and the same cli.

Results:
after step 2, the boot device same as we specified in cli.
1. DVD/CD [virtio-scsi Drive QEMU QEMU CD-ROM 1.5.]
2. virtio-scsi Drive QEMU QEMU HARDDISK 1.5.
3. iPXE (PCI 00:05.0)
4. Legacy option rom
5. Floppy [drive A]
6. DVD/CD [ata0-1: QEMU DVD-ROM ATAPI-4 DVD/CD]

Best Regards,
sluo

Comment 11 Ludek Smid 2014-06-13 12:32:24 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.