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)