I think we should pass it. Two reasons:
1. in none hotplug, we will pass it. We can see from libvirt function 
qemuBuildVhostuserCommandLine, it will pass queue num as vhostfdSize
2. If we don't pass vectors, qemu will use default value. Now default value is 
3, (qemu codes: DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3))
So that qemu init msix table with 3 vectors(qemu function: 
msix_init_exclusive_bar), this will cause Guest can only use 3 interrupts at 
most. Actually, it use
Two, one for config one for other virtqueues.


> On 30.11.2016 08:41, Gaohaifeng (A) wrote:
> > Hi ALL:
> > Recently I review the vhost-user hotplug codes, when attach a vhost-user 
> > nic with multiqueue, it seems that it doesn't pass mq=on and vectors num to 
> > qemu.
> > Is there any special consideration or just a small mistake? Parts of codes:
> > 
> > qemuDomainAttachNetDevice(vhostfdSize is 0 when type is vhost-user)
> > qemuBuildNicDevStr:
> >              if (usingVirtio && vhostfdSize > 1) {
> >         if (net->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) {
> >             /* ccw provides a one to one relation of fds to queues and
> >              * does not support the vectors option
> >              */
> >             virBufferAddLit(&buf, ",mq=on");
> >         } else {
> >             /* As advised at http://www.linux-kvm.org/page/Multiqueue
> >              * we should add vectors=2*N+2 where N is the vhostfdSize
> >              */
> >             virBufferAsprintf(&buf, ",mq=on,vectors=%zu", 2 * vhostfdSize + 
> > 2);
> >         }
> > }
> 
> Ah, probably the latter. Frankly, I don't have idea whether we should pass 
> vectors= too. Do you?
> 
> Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to