[libvirt] How to enable vhost for virtIO NIC?

Laine Stump laine at laine.org
Thu May 20 16:09:48 UTC 2010


On 05/20/2010 10:30 AM, Ruben Kerkhof wrote:
> Hi all,
>
> On Wed, May 19, 2010 at 18:22, Laine Stump<laine at laine.org>  wrote:
>    
>> 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).
>>      
> I just tried this with libvirt 0.8.1, on a 2.6.34 kernel, and it
> doesn't seem to work for me.
> Setting a breakpoint on the qemudOpenVhostNet function shows that it
> returns -1, because QEMUD_CMD_FLAG_NETDEV isn't set.
>
> -netdev is disabled on qemu 0.12
>    

Sigh. Yes, you are correct. I had forgotten that I had locally modify 
the libvirt source to force the use of the qemu -netdev commandline 
option (rather than -net). -netdev is required for vhost-net because 
qemu purposefully ignores vhost= in the -net options (I don't recall the 
reason behind this, but do remember that it somehow made sense when it 
was explained).

Also, I just noticed that F13 is still serving up libvirt 0.7.7, and the 
vhost-net patch went in just after that, so it would require at least 
libvirt 0.8.0.

If you don't care about network device hotplug, you can grab the latest 
sources and enable -netdev - just remove the "#if 0" around the block 
testing for presence of -netdev in qemudComputeCmdFlags, and 
appropriately modify the qemu version number it's looking for.

If you're not that adventurous, you'll have to play the waiting game. 
When support is enabled, though, you won't need to do anything with your 
config; just restart your guests.




More information about the libvir-list mailing list