[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] qemu 2.7.0 incompatible with host kernel < 3.19
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] qemu 2.7.0 incompatible with host kernel < 3.19 |
Date: |
Wed, 14 Sep 2016 07:35:36 +0300 |
On Tue, Sep 13, 2016 at 11:09:27PM +0200, Laszlo Ersek wrote:
> Hi,
>
> (CC Michael and Cornelia,)
>
> On 09/13/16 21:10, Brian Rak wrote:
> > I have some KVM hosts that I just upgraded to qemu 2.7.0. When the host
> > is running a kernel newer then 3.19, everything works fine.
> >
> > If the host is running on something lower then 3.19, some guests fail to
> > start. I noticed this on a Ubuntu 16.04 guest, it fails to find the
> > virtio NIC, and this is printed to dmesg:
> >
> > virtio_net virtio0: virtio: device uses modern interface but does not
> > have VIRTIO_F_VERSION_1
> >
> > Looking around, I found
> > https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg00373.html ,
> > but this does not appear to fully resolve the issue. Any suggestions
> > here? I'm currently just rolling back the upgrade until we can get the
> > kernel upgraded on the rest of the hosts.
>
> let me begin with saying that I probably don't know what I'm talking
> about :)
>
> So, based on your report and the message you linked from the archive, I
> think the problem is that vhost-net, in host kernels strictly older than
> v3.19, doesn't set VIRTIO_F_VERSION_1.
>
> See this kernel commit:
>
> commit 41e3e42108bc5ebc77d40d6fe1216c483a6b1f9d
> Author: Michael S. Tsirkin <address@hidden>
> Date: Fri Oct 24 14:25:03 2014 +0300
>
> vhost/net: enable virtio 1.0
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
>
> This was first released in v3.19. (See "git tag --contains 41e3e42108bc".)
>
> (
>
> Later this would be moved to a more central location, with:
>
> commit 4e9fa50c6ccbebef0c4a4aae84090badf81359e6
> Author: Michael S. Tsirkin <address@hidden>
> Date: Wed Sep 9 22:24:56 2015 +0300
>
> vhost: move features to core
>
> virtio 1 and any layout are core features, move them
> there. This fixes vhost test.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
>
> but this commit was released in v4.3, and I don't think it should make a
> visible difference to your use case.
>
> )
>
> I *guess* that with qemu-2.7.0, any lack of VIRTIO_F_VERSION_1 in the
> host kernel's device model has become visible to the guest, and then the
> guest driver bails out. (I don't know what exactly brought about this
> change in qemu-2.7.0.)
>
> Now, the libvirt documentation says,
>
> http://libvirt.org/formatdomain.html#elementsDriverBackendOptions
>
> [...] Currently the following attributes are available for the
> "virtio" NIC driver:
>
> name
>
> The optional name attribute forces which type of backend driver
> to use. The value can be either 'qemu' (a user-space backend)
> or 'vhost' (a kernel backend, which requires the vhost module
> to be provided by the kernel); an attempt to require the vhost
> driver without kernel support will be rejected. If this
> attribute is not present, then the domain defaults to 'vhost'
> if present, but silently falls back to 'qemu' without error.
>
> So, rather than rolling back the QEMU upgrade, can you test turning off
> vhost in your domain XMLs (or, on the qemu command line, with
>
> -netdev tap,...,vhost=off
>
> ) until you can upgrade the host kernels?
>
> Alternatively, you could rmmod / blacklist the "vhost_net" module on
> your affected hosts. (This would only work if the domain XML doesn't
> explicitly ask for vhost, see above.)
>
> Again, this is just a guess.
>
> Thanks
> Laszlo
This patch:
virtio-bus: Plug devices after features are negotiated
should help I think.
Could you try it please?
--
MST