Re: [libvirt] virtio network problems with kvm guests with 2.6.26 kernel
Daniel P. Berrange wrote: On Tue, Sep 29, 2009 at 02:39:59AM -0400, Jim Paris wrote: Hi, After upgrading libvirt on one system, my kvm guests running a 2.6.26 kernel with virtio networking could no longer communicate with the network. It seems that the problem is caused by newer libvirt versions unconditionally enabling GSO support by setting IFF_VNET_HDR [1]. However, support for this feature is apparently broken in 2.6.26. Ubuntu seems to have also discovered this problem [2] and they currently work around it by removing GSO support from kvm [3]. Currently, I'm running with a patched libvirt that never sets IFF_VNET_HDR, and it's working fine once again. While this is not a libvirt problem per se, it certainly violated the principle of least surprise given that libvirt was the only thing that changed! But I don't know if there's much that libvirt can do to avoid this problem, as it's really something that needs to get fixed in kvm, or the guest needs to be upgraded, or switched away from virtio. libvirt probes to see if IFF_VNET_HDR is supported by the kernel and if so, enables it. If its broken in the kernel, the kernel should have been patch, or had the flag disabled as its not really practical for libvirt to special case this thing further Libvirt probes support in the host kernel. The problem lies with the guest kernel, which fails to communicate with the host when the host has IFF_VNET_HDR enabled. -jim -- Libvir-list mailing list Libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] virtio network problems with kvm guests with 2.6.26 kernel
Jim Paris wrote: Daniel P. Berrange wrote: On Tue, Sep 29, 2009 at 02:39:59AM -0400, Jim Paris wrote: Hi, After upgrading libvirt on one system, my kvm guests running a 2.6.26 kernel with virtio networking could no longer communicate with the network. It seems that the problem is caused by newer libvirt versions unconditionally enabling GSO support by setting IFF_VNET_HDR [1]. However, support for this feature is apparently broken in 2.6.26. Ubuntu seems to have also discovered this problem [2] and they currently work around it by removing GSO support from kvm [3]. Currently, I'm running with a patched libvirt that never sets IFF_VNET_HDR, and it's working fine once again. While this is not a libvirt problem per se, it certainly violated the principle of least surprise given that libvirt was the only thing that changed! But I don't know if there's much that libvirt can do to avoid this problem, as it's really something that needs to get fixed in kvm, or the guest needs to be upgraded, or switched away from virtio. libvirt probes to see if IFF_VNET_HDR is supported by the kernel and if so, enables it. If its broken in the kernel, the kernel should have been patch, or had the flag disabled as its not really practical for libvirt to special case this thing further Libvirt probes support in the host kernel. The problem lies with the guest kernel, which fails to communicate with the host when the host has IFF_VNET_HDR enabled. Nevermind that, my conclusions were bogus. Things still didn't quite add up, so I tracked down what's really going on here: - Libvirt 0.7.1 (as packaged by Debian) has IFF_VNET_HDR support. - Qemu-kvm 0.11.0 (as built by myself) did NOT include IFF_VNET_HDR support, because it was built against the older headers on my system. Libvirt assumes that if it can support IFF_VNET_HDR, and qemu is new enough, then qemu must support IFF_VNET_HDR too. This assumption was wrong in my case, but it seems there's no easy way for libvirt to figure out the correct thing to do. Anyway, after updating the linux-libc-dev package and rebuilding qemu-kvm, things work now. -jim -- Libvir-list mailing list Libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] virtio network problems with kvm guests with 2.6.26 kernel
On Tue, 2009-09-29 at 15:20 -0400, Jim Paris wrote: Nevermind that, my conclusions were bogus. Things still didn't quite add up, so I tracked down what's really going on here: - Libvirt 0.7.1 (as packaged by Debian) has IFF_VNET_HDR support. - Qemu-kvm 0.11.0 (as built by myself) did NOT include IFF_VNET_HDR support, because it was built against the older headers on my system. Libvirt assumes that if it can support IFF_VNET_HDR, and qemu is new enough, then qemu must support IFF_VNET_HDR too. This assumption was wrong in my case, but it seems there's no easy way for libvirt to figure out the correct thing to do. Anyway, after updating the linux-libc-dev package and rebuilding qemu-kvm, things work now. Yeah, that makes some sense - we have no way of knowing whether qemu was compiled with IFF_VNET_HDR support, all we can do is check that that version of qemu would have support if compiled against headers with IFF_VNET_HDR. Thanks, Mark. -- Libvir-list mailing list Libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list