Re: Unable to create more than 1 guest virtio-net device using vhost-net backend

Avi Kivity
2010-03-21T10:31:56Z

On 03/21/2010 12:21 PM, Gleb Natapov wrote:
> On Sun, Mar 21, 2010 at 12:11:33PM +0200, Avi Kivity wrote:
>
>> On 03/21/2010 11:55 AM, Michael S. Tsirkin wrote:
>>
>>> On Fri, Mar 19, 2010 at 03:19:27PM -0700, Sridhar Samudrala wrote:
>>>
>>>> When creating a guest with 2 virtio-net interfaces, i am running
>>>> into a issue causing the 2nd i/f falling back to userpace virtio
>>>> even when vhost is enabled.
>>>>
>>>> After some debugging, it turned out that KVM_IOEVENTFD ioctl()
>>>> call in qemu is failing with ENOSPC.
>>>> This is because of the NR_IOBUS_DEVS(6) limit in kvm_io_bus_register_dev()
>>>> routine in the host kernel.
>>>>
>>>> I think we need to increase this limit if we want to support multiple
>>>> network interfaces using vhost-net.
>>>> Is there an alternate solution?
>>>>
>>>> Thanks
>>>> Sridhar
>>>>
>>> Nothing easy that I can see. Each device needs 2 of these. Avi, Gleb,
>>> any objections to increasing the limit to say 16? That would give us
>>> 5 more devices to the limit of 6 per guest.
>>>
>> Increase it to 200, then.
>>
>>
> Currently on each device read/write we iterate over all registered
> devices. This is not scalable.
>

Yeah. We need first to drop the callback based matching and replace it
with explicit ranges, then to replace the search with a hash table for
small ranges (keeping a linear search for large ranges, can happen for
coalesced mmio).

--
error compiling committee.c: too many arguments to function