Bug 1489800

Summary: q35/ovmf: Machine type compat vs OVMF vs windows
Product: Red Hat Enterprise Linux 7 Reporter: Dr. David Alan Gilbert <dgilbert>
Component: qemu-kvm-rhevAssignee: Dr. David Alan Gilbert <dgilbert>
Status: CLOSED ERRATA QA Contact: jingzhao <jinzhao>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.5CC: chayang, dgilbert, jinzhao, juzhang, lersek, lijin, michen, mrezanin, virt-maint, xfu
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-rhev-2.10.0-3.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-04-11 00:33:01 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:
Bug Depends On:    
Bug Blocks: 1500181    

Description Dr. David Alan Gilbert 2017-09-08 12:08:33 UTC
Description of problem:
2.10 changed the acpi FADT rev (77af8a2), this broke various windows versions booting.   bz 3a3fcc fixed up the upstream i440fx to disable it conditionally,
it didn't disable it for q35.   We should disable it in the rhev-7.x x<5 machine types to keep compatibility

Version-Release number of selected component (if applicable):
7.5

How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:
https://bugs.launchpad.net/qemu/+bug/1714331
https://bugs.launchpad.net/qemu/+bug/1715700

Comment 2 Dr. David Alan Gilbert 2017-09-20 12:21:21 UTC
At the same time fix another windows vs OVMF vs machine type bug;
 lp 1715700, 'make pc.rom readonly when machine has pci enabled' 208fa0e43645
we need to tie that to old machine types only and make sure we have the fix in OVMF.

QA: Test for this one is booting a Windows 7 guest with OVMF (and make sure it can migrate from 7.4->7.5 and do a reboot)

Comment 3 Dr. David Alan Gilbert 2017-10-06 17:21:04 UTC
confirmed that applying these fixes on our downstream 2.10 tree gets win7+old ovmf to boot.

Comment 4 Dr. David Alan Gilbert 2017-10-06 17:57:20 UTC
also confirmed that win10+old ovmf to boot

Comment 5 Dr. David Alan Gilbert 2017-10-10 11:04:52 UTC
acpi: Force rev1 FADT on old q35 machine types
pc: make pc_rom RO only on new machine types

Comment 8 Miroslav Rezanina 2017-10-20 09:33:32 UTC
Fix included in qemu-kvm-rhev-2.10.0-3.el7

Comment 10 jingzhao 2017-11-09 02:38:00 UTC
Hi David

  Failed when QE verifying the bz.

  Migrated failed and the error message of destination 
  ((qemu) qemu-kvm: Machine type received is 'pc-q35-rhel7.4.0' and local is 'pc-q35-rhel7.5.0' qemu-kvm: load of migration failed: Invalid argument)

  detailed steps:
 
  1. Boot guest in src 7.4 host [1]

  2. migrate to the destination 7.5 host

 
Actual Result:

migrate failed 

(qemu) qemu-kvm: Machine type received is 'pc-q35-rhel7.4.0' and local is 'pc-q35-rhel7.5.0'
qemu-kvm: load of migration failed: Invalid argument


7.4 host info:
[root@localhost test]# rpm -qa |grep qemu-kvm-rhev
qemu-kvm-rhev-2.9.0-16.el7_4.10.x86_64
qemu-kvm-rhev-debuginfo-2.9.0-16.el7_4.10.x86_64
[root@localhost test]# rpm -qa |grep OVMF
OVMF-20170228-5.gitc325e41585e3.el7.noarc

7.5 host info:
[root@localhost test]# uname -r
3.10.0-773.el7.x86_64
[root@localhost test]# rpm -qa |grep qemu-kvm-rhev
qemu-kvm-rhev-2.10.0-4.el7.x86_64
qemu-kvm-rhev-debuginfo-2.10.0-4.el7.x86_64
[root@localhost test]# rpm -qa |grep OVMF
OVMF-20171011-1.git92d07e48907f.el7.noarch


qemu command line[1]
/usr/libexec/qemu-kvm \
-M q35,accel=kvm,kernel-irqchip=split \
-device intel-iommu,intremap=on \
-cpu Haswell-noTSX \
-nodefaults -rtc base=utc \
-m 4G \
-smp 4,sockets=4,cores=1,threads=1 \
-enable-kvm \
-uuid 990ea161-6b67-47b2-b803-19fb01d30d12 \
-k en-us \
-nodefaults \
-drive file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on \
-drive file=/home/test/OVMF_VARS.fd,if=pflash,format=raw,unit=1 \
-serial unix:/tmp/serial0,server,nowait \
-debugcon file:/home/test/ovmf.log \
-global isa-debugcon.iobase=0x402 \
-boot menu=on \
-qmp tcp:0:6667,server,nowait \
-usb \
-device usb-tablet \
-vga qxl \
-global driver=cfi.pflash01,property=secure,value=on \
-drive file=/mnt/test/win7-ovmf.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,werror=stop,rerror=stop \
-device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0 \
-device pcie-root-port,bus=pcie.0,id=root0,multifunction=on,chassis=1,addr=0xa.0 \
-device virtio-net-pci,netdev=tap10,mac=9a:6a:6b:6c:6d:6e,bus=root0 -netdev tap,id=tap10 \
-device pcie-root-port,bus=pcie.0,id=root1,chassis=11,addr=0xa.1 \
-device e1000e,netdev=tap11,mac=9a:6a:6b:6c:6d:6a,bus=root1 -netdev tap,id=tap11 \
-device pcie-root-port,bus=pcie.0,id=root2,chassis=12,addr=0xa.2 \
-drive file=/mnt/test/block1.qcow2,if=none,id=drive-virtio-disk1,format=qcow2,cache=none,werror=stop,rerror=stop \
-device virtio-blk-pci,drive=drive-virtio-disk1,id=virtio-disk1,bus=root2 \
-device pcie-root-port,bus=pcie.0,id=root3,chassis=13,addr=0xa.3 \
-device x3130-upstream,bus=root3,id=upstream1 \
-device xio3130-downstream,bus=upstream1,id=downstream1,chassis=2 \
-device pcie-root-port,bus=pcie.0,id=root6,chassis=14,addr=0xa.4 \
-device pcie-root-port,bus=pcie.0,id=root4,chassis=3 \
-device virtio-scsi-pci,id=scsi0,bus=root4 \
-drive file=/mnt/test/block2.raw,if=none,format=raw,id=drive-virtio-scsi \
-device scsi-disk,drive=drive-virtio-scsi,id=virtio-scsi,bus=scsi0.0 \
-device ahci,id=ahci0 \
-drive file=/usr/share/virtio-win/virtio-win-1.9.3.iso,if=none,id=drive-virtio-disk2,format=raw \
-device ide-cd,drive=drive-virtio-disk2,id=virtio-disk2,bus=ahci0.0 \
-device e1000e,netdev=tap12,mac=9a:6a:6b:6c:6d:6b -netdev tap,id=tap12 \
-device pcie-root-port,bus=pcie.0,id=root5,chassis=4 \
-device x3130-upstream,bus=root5,id=upstream2 \
-device xio3130-downstream,bus=upstream2,id=downstream2,chassis=5 \
-device xio3130-downstream,bus=upstream2,id=downstream3,chassis=6 \
-device x3130-upstream,bus=downstream3,id=upstream3 \
-device xio3130-downstream,bus=upstream3,id=downstream4,chassis=7 \
-drive file=/mnt/test/block5.qcow2,if=none,id=drive-virtio-disk5,format=qcow2,cache=none,werror=stop,rerror=stop \
-device virtio-blk-pci,drive=drive-virtio-disk5,id=virtio-disk5,bus=downstream4 \
-device pcie-root-port,bus=pcie.0,id=root7,chassis=8 \
-monitor stdio \
-vnc :1 \


Could you help to confirm it ?

Thanks
Jing

Comment 11 jingzhao 2017-11-14 02:48:30 UTC
(In reply to jingzhao from comment #10)
> Hi David
> 
>   Failed when QE verifying the bz.
> 
>   Migrated failed and the error message of destination 
>   ((qemu) qemu-kvm: Machine type received is 'pc-q35-rhel7.4.0' and local is
> 'pc-q35-rhel7.5.0' qemu-kvm: load of migration failed: Invalid argument)
> 
>   detailed steps:
>  
>   1. Boot guest in src 7.4 host [1]
> 
>   2. migrate to the destination 7.5 host
> 
>  
> Actual Result:
> 
> migrate failed 
> 
> (qemu) qemu-kvm: Machine type received is 'pc-q35-rhel7.4.0' and local is
> 'pc-q35-rhel7.5.0'
> qemu-kvm: load of migration failed: Invalid argument
> 
> 
> 7.4 host info:
> [root@localhost test]# rpm -qa |grep qemu-kvm-rhev
> qemu-kvm-rhev-2.9.0-16.el7_4.10.x86_64
> qemu-kvm-rhev-debuginfo-2.9.0-16.el7_4.10.x86_64
> [root@localhost test]# rpm -qa |grep OVMF
> OVMF-20170228-5.gitc325e41585e3.el7.noarc
> 
> 7.5 host info:
> [root@localhost test]# uname -r
> 3.10.0-773.el7.x86_64
> [root@localhost test]# rpm -qa |grep qemu-kvm-rhev
> qemu-kvm-rhev-2.10.0-4.el7.x86_64
> qemu-kvm-rhev-debuginfo-2.10.0-4.el7.x86_64
> [root@localhost test]# rpm -qa |grep OVMF
> OVMF-20171011-1.git92d07e48907f.el7.noarch
> 
> 
> qemu command line[1]
> /usr/libexec/qemu-kvm \
> -M q35,accel=kvm,kernel-irqchip=split \
> -device intel-iommu,intremap=on \
> -cpu Haswell-noTSX \
> -nodefaults -rtc base=utc \
> -m 4G \
> -smp 4,sockets=4,cores=1,threads=1 \
> -enable-kvm \
> -uuid 990ea161-6b67-47b2-b803-19fb01d30d12 \
> -k en-us \
> -nodefaults \
> -drive
> file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,
> readonly=on \
> -drive file=/home/test/OVMF_VARS.fd,if=pflash,format=raw,unit=1 \
> -serial unix:/tmp/serial0,server,nowait \
> -debugcon file:/home/test/ovmf.log \
> -global isa-debugcon.iobase=0x402 \
> -boot menu=on \
> -qmp tcp:0:6667,server,nowait \
> -usb \
> -device usb-tablet \
> -vga qxl \
> -global driver=cfi.pflash01,property=secure,value=on \
> -drive
> file=/mnt/test/win7-ovmf.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,
> cache=none,werror=stop,rerror=stop \
> -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0 \
> -device
> pcie-root-port,bus=pcie.0,id=root0,multifunction=on,chassis=1,addr=0xa.0 \
> -device virtio-net-pci,netdev=tap10,mac=9a:6a:6b:6c:6d:6e,bus=root0 -netdev
> tap,id=tap10 \
> -device pcie-root-port,bus=pcie.0,id=root1,chassis=11,addr=0xa.1 \
> -device e1000e,netdev=tap11,mac=9a:6a:6b:6c:6d:6a,bus=root1 -netdev
> tap,id=tap11 \
> -device pcie-root-port,bus=pcie.0,id=root2,chassis=12,addr=0xa.2 \
> -drive
> file=/mnt/test/block1.qcow2,if=none,id=drive-virtio-disk1,format=qcow2,
> cache=none,werror=stop,rerror=stop \
> -device virtio-blk-pci,drive=drive-virtio-disk1,id=virtio-disk1,bus=root2 \
> -device pcie-root-port,bus=pcie.0,id=root3,chassis=13,addr=0xa.3 \
> -device x3130-upstream,bus=root3,id=upstream1 \
> -device xio3130-downstream,bus=upstream1,id=downstream1,chassis=2 \
> -device pcie-root-port,bus=pcie.0,id=root6,chassis=14,addr=0xa.4 \
> -device pcie-root-port,bus=pcie.0,id=root4,chassis=3 \
> -device virtio-scsi-pci,id=scsi0,bus=root4 \
> -drive file=/mnt/test/block2.raw,if=none,format=raw,id=drive-virtio-scsi \
> -device scsi-disk,drive=drive-virtio-scsi,id=virtio-scsi,bus=scsi0.0 \
> -device ahci,id=ahci0 \
> -drive
> file=/usr/share/virtio-win/virtio-win-1.9.3.iso,if=none,id=drive-virtio-
> disk2,format=raw \
> -device ide-cd,drive=drive-virtio-disk2,id=virtio-disk2,bus=ahci0.0 \
> -device e1000e,netdev=tap12,mac=9a:6a:6b:6c:6d:6b -netdev tap,id=tap12 \
> -device pcie-root-port,bus=pcie.0,id=root5,chassis=4 \
> -device x3130-upstream,bus=root5,id=upstream2 \
> -device xio3130-downstream,bus=upstream2,id=downstream2,chassis=5 \
> -device xio3130-downstream,bus=upstream2,id=downstream3,chassis=6 \
> -device x3130-upstream,bus=downstream3,id=upstream3 \
> -device xio3130-downstream,bus=upstream3,id=downstream4,chassis=7 \
> -drive
> file=/mnt/test/block5.qcow2,if=none,id=drive-virtio-disk5,format=qcow2,
> cache=none,werror=stop,rerror=stop \
> -device
> virtio-blk-pci,drive=drive-virtio-disk5,id=virtio-disk5,bus=downstream4 \
> -device pcie-root-port,bus=pcie.0,id=root7,chassis=8 \
> -monitor stdio \
> -vnc :1 \
> 
> 
> Could you help to confirm it ?
> 
> Thanks
> Jing

Changed to the same machine type and hit the issue
(qemu) red_dispatcher_loadvm_commands: 
qemu-kvm: Missing section footer for 0000:00:0a.0/pcie-root-port


Please check the bz1511312

Comment 14 errata-xmlrpc 2018-04-11 00:33:01 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2018:1104