[libvirt] How to enable vhost for virtIO NIC?

Laine Stump laine at laine.org
Wed May 19 16:22:56 UTC 2010


On 05/19/2010 01:49 AM, Huang, Zhiteng wrote:
> Hi gurus on the list,
>
> I'm trying to bring up a Linux with virtio vhost backend.  My system is running on kernel 2.6.34-rc7, libvirt 0.8.0.
>
> Two questions regarding to vhost:
>
> 1) XML format for vhost
> I didn't find any documents on libvirt.org description the XML or QMU argument format for vhost.

If you're using virtio networking, and vhost-net support is available on 
your system, libvirt will automatically alter the qemu commandline 
arguments to take advantage of it. libvirt checks for two things:

1) it runs "qemu-kvm --help" and looks for ",vhost=" in the output 
(demonstrating that this build of qemu supports vhost)

2) it attempts to open "/dev/vhost-net" in rw mode (demonstrating that 
the kernel support is there, either built into the kernel or loaded as a 
module).

You can verify libvirt has enabled vhost by looking at the generated 
commandline in /var/log/libvirt/qemu/<domain>.log for 
"vhost=on,vhostfd=<some number>"


> According to http://www.linux-kvm.org/page/VhostNet#vhost-net_driver_projects, I tried *domxml-from-native* to convert following qemu argument to XML
>
> qemu-system-x86_64 -m 1G disk-c.qcow2 \
> -net nic,model=virtio,netdev=foo \
> -netdev tap,id=foo,ifname=msttap0,script=/home/mst/ifup,downscript=no,vhost=on
>
> But the output clearly ignore the network.
> <domain type='qemu'>
>    <name>unnamed</name>
>    <uuid>9cc877c1-7ac2-463d-3d3f-fa8f8918fe23</uuid>
>    <memory>1048576</memory>
>    <currentMemory>1048576</currentMemory>
>    <vcpu>1</vcpu>
>    <os>
>      <type arch='x86_64'>hvm</type>
>    </os>
>    <features>
>      <acpi/>
>    </features>
>    <clock offset='utc'/>
>    <on_poweroff>destroy</on_poweroff>
>    <on_reboot>restart</on_reboot>
>    <on_crash>destroy</on_crash>
>    <devices>
>      <emulator>qemu-system-x86_64</emulator>
>      <input type='mouse' bus='ps2'/>
>      <graphics type='sdl'/>
>      <video>
>        <model type='cirrus' vram='9216' heads='1'/>
>      </video>
>    </devices>
> </domain>
>
> What's the problem here?
>    

I haven't used domxml-from-native, so I can't help you there.

> 2) Virtio driver.
> It's said that vhost require guest kernel version>  2.6.31 because vhost requires MSI-X.  How about frontend of virtio driver?  Say I'm running a Windows 2008 (with MSI-X support) + virtio NIC, is it necessary to upgrade frontend driver too?
>
>    

a vhost virtio NIC appears to the guest driver identically to a 
user-space virtio NIC, so the same guest-side driver should work fine. 
(Actually, the vhost NIC doesn't (yet) support shared buffers that the 
user-space NIC does, but the guest's driver can deal with that)




More information about the libvir-list mailing list