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

Tan, Jianfeng jianfeng.tan at intel.com
Wed Jan 6 06:56:41 CET 2016



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





More information about the dev mailing list