Re: [virtio-dev] Re: [PATCH v1 2/2] virtio-mmio: add features for virtio-mmio specification version 3

From: Liu, Jiang
Date: Fri Jan 03 2020 - 01:15:59 EST




> On Jan 3, 2020, at 11:24 AM, Jason Wang <jasowang@xxxxxxxxxx> wrote:
>
>
> On 2020/1/2 äå5:13, Liu, Jing2 wrote:
>> [...]
>>
>>>>>
>>>>>> +
>>>>>> +/* RO: MSI feature enabled mask */
>>>>>> +#define VIRTIO_MMIO_MSI_ENABLE_MASK 0x8000
>>>>>> +/* RO: Maximum queue size available */
>>>>>> +#define VIRTIO_MMIO_MSI_STATUS_QMASK 0x07ff
>>>>>> +/* Reserved */
>>>>>> +#define VIRTIO_MMIO_MSI_STATUS_RESERVED 0x7800
>>>>>> +
>>>>>> +#define VIRTIO_MMIO_MSI_CMD_UPDATE 0x1
>>>>>
>>>>>
>>>>> I believe we need a command to read the number of vectors supported by the device, or 2048 is assumed to be a fixed size here?
>>>>
>>>> For not bringing much complexity, we proposed vector per queue and fixed relationship between events and vectors.
>>>
>>>
>>> It's a about the number of MSIs not the mapping between queues to MSIs.And it looks to me it won't bring obvious complexity, just need a register to read the #MSIs. Device implementation may stick to a fixed size.
>>
>> Based on that assumption, the device supports #MSIs = #queues + #config. Then driver need not read the register.
>>
>> We're trying to make such kind of agreement on spec level.
>
>
> Ok, I get you now.
>
> But still, having fixed number of MSIs is less flexible. E.g:
>
> - for x86, processor can only deal with about 250 interrupt vectors.
> - driver may choose to share MSI vectors [1] (which is not merged but we will for sure need it)
Thanks for the info:)
X86 systems roughly have NCPU * 200 vectors available for device interrupts.
The proposed patch tries to map multiple event sources to an interrupt vector, to avoid running out of x86 CPU vectors.
Many virtio mmio devices may have several or tens of event sources, and itâs rare to have hundreds of event sources.
So could we treat the dynamic mapping between event sources and interrupt vectors as an advanced optional feature?

>
> [1] https://lkml.org/lkml/2014/12/25/169
>
>
>>
>>>
>>> Having few pages for a device that only have one queue is kind of a waste.
>>
>> Could I ask what's the meaning of few pages here? BTW, we didn't define MSIx-like tables for virtio-mmio.
>
>
> I thought you're using a fixed size (2048) for each device. But looks not :)
>
> Thanks
>
>
>>
>> Thanks,
>>
>> Jing
>>
>>>
>>> Thanks
>>>
>>>
>>>>
>>>>
>>>> So the number of vectors supported by device is equal to the total number of vqs and config.
>>>>
>>>> We will try to explicitly highlight this point in spec for later version.
>>>>
>>>>
>>>> Thanks!
>>>>
>>>> Jing
>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: virtio-dev-unsubscribe@xxxxxxxxxxxxxxxxxxxx
>>>>> For additional commands, e-mail: virtio-dev-help@xxxxxxxxxxxxxxxxxxxx
>>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: virtio-dev-unsubscribe@xxxxxxxxxxxxxxxxxxxx
>> For additional commands, e-mail: virtio-dev-help@xxxxxxxxxxxxxxxxxxxx