Thread (22 messages) 22 messages, 6 authors, 2016-01-11

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

From: Tetsuya Mukawa <hidden>
Date: 2016-01-06 07:27:51

On 2016/01/06 14:56, Tan, Jianfeng wrote:

On 1/6/2016 11:57 AM, Tetsuya Mukawa wrote:
quoted
On 2015/12/28 20:57, Pavel Fedin wrote:
quoted
  Hello!
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help