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