[libvirt] vhost-net configuration

Laine Stump laine at laine.org
Fri May 20 20:52:58 UTC 2011


On 05/20/2011 01:12 PM, Cal Heldenbrand wrote:
>
>
>     First look in /var/log/libvirt/qemu/<domainname>.log and see which
>     qemu binary is being executed by libvirt - it may not be the one
>     you've built.
>
>
> It looks correct...  I pulled out the driver tag from my config and 
> fired it up.  Here is the full command line for it:
>
> LC_ALL=C 
> PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin 
> QEMU_AUDIO_DRV=none /usr/local/bin/qemu-system-x86_64 -S -M pc-0.14 
> -enable-kvm -m 4096 -smp 7,sockets=7,cores=1,threads=1 -name web101 
> -uuid bda63821-ccc4-6607-67c0-db6712526cbd -nodefconfig -nodefaults 
> -chardev 
> socket,id=charmonitor,path=/var/lib/libvirt/qemu/web101.monitor,server,nowait 
> -mon chardev=charmonitor,id=monitor,mode=readline -rtc base=utc -boot 
> c -drive 
> file=/var/lib/libvirt/images/web101.img,if=none,id=drive-virtio-disk0,format=raw,cache=writethrough 
> -device 
> virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0 
> -drive 
> file=/home/httpd.img,if=none,id=drive-virtio-disk1,format=raw,cache=writethrough 
> -device 
> virtio-blk-pci,bus=pci.0,addr=0x7,drive=drive-virtio-disk1,id=virtio-disk1 
> -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw 
> -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 
> -fsdev local,security_model=passthrough,id=fsdev-fs0,path=/home/httpd 
> -device 
> virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/home/httpd,bus=pci.0,addr=0x8 
> -netdev tap,fd=15,id=hostnet0 -device 
> virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:6f:51:43,bus=pci.0,addr=0x3 
> -chardev pty,id=charserial0 -device 
> isa-serial,chardev=charserial0,id=serial0 -usb -device 
> usb-tablet,id=input0 -vnc 127.0.0.1:0 <http://127.0.0.1:0> -vga cirrus 
> -device AC97,id=sound0,bus=pci.0,addr=0x4 -device 
> virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
>
>
>     Then, run "qemu-kvm --help" (replacing "qemu-kvm" with the path to
>     the binary that libvirt is executing, found in the previous
>     paragraph), and search through that output for the string
>     ",vhost=" - if it's not there, then your qemu doesn't support
>     vhost-net.
>
>
> This also looks correct.  Is it wrong that my qemu compilation didn't 
> create a binary named "qemu-kvm"?  (Even though it said "KVM support 
> yes" on the configure output?)

Not exactly, but close. In the qemu capabilities code, there is a 
variable called "is_kvm" that is only set if it finds the string 
"(qemu-kvm-" or "(kvm-" in the help output. It seems to me that this 
used to be used for a lot more things, but when I look now I see that 
it's used for very few things (maybe a result of the capabilities code 
refactoring, or maybe my memory is faulty :-). However, one of the 
things still in place is that QEMU_CAPS_VNET_HOST isn't set unless 
is_kvm is true.

I believe this dependency on is_kvm is there because someone said that 
the feature was only in kvm, but retrospectively that doesn't make 
sense. Can you try building with the following patch, and see if that works?

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index ea55df5..71a54a5 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -982,7 +982,7 @@ qemuCapsComputeCmdFlags(const char *help,
      if (is_kvm && (version >= 10000 || kvm_version >= 74))
          qemuCapsSet(flags, QEMU_CAPS_VNET_HDR);

-    if (is_kvm && strstr(help, ",vhost=")) {
+    if (strstr(help, ",vhost=")) {
          qemuCapsSet(flags, QEMU_CAPS_VNET_HOST);
      }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110520/990a20cf/attachment-0001.htm>


More information about the libvir-list mailing list