[dpdk-dev] [PATCH v1 2/2] virtio: Extend virtio-net PMD to support container environment

Tetsuya Mukawa mukawa at igel.co.jp
Wed Jan 6 08:27:53 CET 2016


On 2016/01/06 14:56, Tan, Jianfeng wrote:
>
>
> On 1/6/2016 11:57 AM, Tetsuya Mukawa wrote:
>> On 2015/12/28 20:57, Pavel Fedin wrote:
>>>   Hello!
>>>
>>>> diff --git a/drivers/net/virtio/virtio_pci.h
>>>> b/drivers/net/virtio/virtio_pci.h
>>>> index 47f722a..d4ede73 100644
>>>> --- a/drivers/net/virtio/virtio_pci.h
>>>> +++ b/drivers/net/virtio/virtio_pci.h
>>>> @@ -165,6 +165,9 @@ struct virtqueue;
>>>>
>>>>   struct virtio_hw {
>>>>       struct virtqueue *cvq;
>>>> +#ifdef RTE_LIBRTE_VIRTIO_HOST_MODE
>>>> +    void        *qsession;
>>>> +#endif
>>>>       uint32_t    io_base;
>>>>       uint32_t    guest_features;
>>>>       uint32_t    max_tx_queues;
>>>> @@ -226,6 +229,26 @@ outl_p(unsigned int data, unsigned int port)
>>>>   }
>>>>   #endif
>>>>
>>>> +#ifdef RTE_LIBRTE_VIRTIO_HOST_MODE
>>>> +
>>>> +uint32_t virtio_ioport_read(struct virtio_hw *, uint64_t, char type);
>>>> +void virtio_ioport_write(struct virtio_hw *, uint64_t, uint64_t,
>>>> char type);
>>>> +
>>>> +#define VIRTIO_READ_REG_1(hw, reg) \
>>>> +    virtio_ioport_read(hw, reg, 'b')
>>>> +#define VIRTIO_WRITE_REG_1(hw, reg, value) \
>>>> +    virtio_ioport_write(hw, reg, value, 'b')
>>>> +#define VIRTIO_READ_REG_2(hw, reg) \
>>>> +    virtio_ioport_read(hw, reg, 'w')
>>>> +#define VIRTIO_WRITE_REG_2(hw, reg, value) \
>>>> +    virtio_ioport_write(hw, reg, value, 'w')
>>>> +#define VIRTIO_READ_REG_4(hw, reg) \
>>>> +    virtio_ioport_read(hw, reg, 'l')
>>>> +#define VIRTIO_WRITE_REG_4(hw, reg, value) \
>>>> +    virtio_ioport_write(hw, reg, value, 'l')
>>>> +
>>>> +#else /* RTE_LIBRTE_VIRTIO_HOST_MODE */
>>>> +
>>>   I have a concern against such compile-time switches. What if we
>>> want the same code to work for both 'real' virtio and socket-based?
>>> Shouldn't we introduce some function pointers here to be able to
>>> switch them at runtime?
>> Hi Pavel,
>>
>> Thanks for commenting.
>> In that case, you will run QEMU, then create containers in the guest.
>> Do you have an use case for this usage?
>>
>> Anyway, such a feature depends on how to allocate share memory.
>> So far, this patch allow you to run both virtio-net 'real' and 'virtual'
>> PMDs on guest, but it will be changed to remove contiguous memory
>> restriction.
>> Could you please see an other thread that we talk about the restriction
>> in? (I will add you to CC.)
>>
>> Thanks,
>> Tetsuya
> Hi Tetsuya,
>
> I prefer to a compiled library to work well in both VM and container.
>
> For this issue, we can address this issue using Yuanhan's way to
> address virtio 1.0 support.
> (He introduces struct virtio_pci_ops)
>
> Thanks,
> Jianfeng
>
>
>

Sounds great!
I will check it.

Tetsuya


More information about the dev mailing list