Bug 1257882

Summary: FEAT: support to boot from virtio 1.0 modern devices
Product: Red Hat Enterprise Linux 7 Reporter: Xiaoqing Wei <xwei>
Component: ovmfAssignee: Laszlo Ersek <lersek>
Status: CLOSED ERRATA QA Contact: aihua liang <aliang>
Severity: low Docs Contact:
Priority: low    
Version: 7.2CC: chayang, huding, juzhang, mrezanin, pezhang, sherold, weliao, xfu, xiywang
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: ovmf-20160608-1.git988715a.el7 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-04 08:39:42 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:

Description Xiaoqing Wei 2015-08-28 10:14:42 UTC
Description of problem:

virtio-1.0 has finalized spec, and drivers are already included in RHEL kernel.
while booting still no possible due to firmware dont recognize them yet.


Version-Release number of selected component (if applicable):
OVMF-20150414-2.gitc9e5618.el7.noarch
qemu-kvm-rhev-2.3.0-18.el7.x86_64


How reproducible:
1/1

Steps to Reproduce:
1. boot a vm with virtio-1.0 modern mode only
-netdev tap,id=hostnet0,vhost=on \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:17:89:55,bus=pci.2,addr=0x1,disable-legacy=on,disable-modern=off
2.
3.

Actual results:
              dev: virtio-net-pci, id "net0"
                ioeventfd = false
                vectors = 3 (0x3)
                virtio-pci-bus-master-bug-migration = false
                disable-legacy = true
                disable-modern = false
OVMF just no able to boot from it.

Expected results:

OVMF able to boot from virtio-1.0 modern devices.
Additional info:

Comment 2 Xiaoqing Wei 2015-08-28 10:18:31 UTC
As neither virtio-1.0 nor OVMF would be promoted to fully support in 7.2 GA,

setting M/M.

Comment 3 Laszlo Ersek 2015-08-28 10:28:58 UTC
I acknowledge this as a feature request, so I'm leaving the BZ open. But, this feature would require immense work in OVMF, with absolutely minimal benefit. Simply remove the "disable-legacy=on" device property from the QEMU command line, and everything will work (the firmware will use the pre-1.0 virtio protocol, while the kernel will use the 1.0 protocol).

I recommend checking out Michael Tsirkin's virtio presentation from the KVM Forum 2015:

http://events.linuxfoundation.org/sites/events/files/slides/misha2015-v1.pdf

I attended that presentation and looked very carefully for signs that would require OVMF to support this. I found none. See especially slide #20 (-> compatibility is guaranteed) and slide #27 (-> the only reason for doing it is "improved robustness", which does not justify the immense amount of work it would take.)

So, just drop "disable-legacy=on". The expected result ("OVMF able to boot from virtio-1.0 modern devices") is ensured by default, using the parallel legacy interface, *unless* you explicitly prevent OVMF from doing that.

Setting Prio / Sev to Low, and Devel Cond-NAK to Capacity.

Comment 5 Laszlo Ersek 2016-03-14 12:55:58 UTC
Posted upstream patches:
http://thread.gmane.org/gmane.comp.bios.edk2.devel/9150

Comment 6 Laszlo Ersek 2016-04-06 12:42:07 UTC
Posted the v2 upstream series:
http://thread.gmane.org/gmane.comp.bios.edk2.devel/10264

Comment 7 Laszlo Ersek 2016-04-06 17:24:44 UTC
V2 committed to upstream edk2: b1bb6f5961d8..3898f4922879.

Comment 11 aihua liang 2016-09-07 11:21:06 UTC
Has verified, virtio1.0 work normally.

Verified Version:
 Kernel version:3.10.0-504.el7.x86_64
 qemu-kvm-rhev version:qemu-kvm-rhev-2.6.0-22.el7.x86_64
 OVMF version:OVMF-20160608-3.git988715a.el7.noarch

Comment 13 errata-xmlrpc 2016-11-04 08:39:42 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://rhn.redhat.com/errata/RHBA-2016-2608.html