Separate the logic of attach vring, the subsequent patch will call it
separately.

Signed-off-by: Xuan Zhuo <xuanz...@linux.alibaba.com>
---
 drivers/virtio/virtio_ring.c | 47 +++++++++++++++++++++++++-----------
 1 file changed, 33 insertions(+), 14 deletions(-)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 5b5976c5742e..80d446fa8d16 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -1904,6 +1904,35 @@ static int vring_alloc_state_extra_packed(u32 num,
        return -ENOMEM;
 }
 
+static void vring_virtqueue_attach_packed(struct vring_virtqueue *vq,
+                                         u32 num,
+                                         struct vring_packed_desc *ring,
+                                         struct vring_packed_desc_event 
*driver,
+                                         struct vring_packed_desc_event 
*device,
+                                         dma_addr_t ring_dma_addr,
+                                         dma_addr_t driver_event_dma_addr,
+                                         dma_addr_t device_event_dma_addr,
+                                         size_t ring_size_in_bytes,
+                                         size_t event_size_in_bytes,
+                                         struct vring_desc_state_packed *state,
+                                         struct vring_desc_extra *extra)
+{
+       vq->packed.ring_dma_addr = ring_dma_addr;
+       vq->packed.driver_event_dma_addr = driver_event_dma_addr;
+       vq->packed.device_event_dma_addr = device_event_dma_addr;
+
+       vq->packed.ring_size_in_bytes = ring_size_in_bytes;
+       vq->packed.event_size_in_bytes = event_size_in_bytes;
+
+       vq->packed.vring.num = num;
+       vq->packed.vring.desc = ring;
+       vq->packed.vring.driver = driver;
+       vq->packed.vring.device = device;
+
+       vq->packed.desc_state = state;
+       vq->packed.desc_extra = extra;
+}
+
 static struct virtqueue *vring_create_virtqueue_packed(
        unsigned int index,
        unsigned int num,
@@ -1962,18 +1991,6 @@ static struct virtqueue *vring_create_virtqueue_packed(
        if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
                vq->weak_barriers = false;
 
-       vq->packed.ring_dma_addr = ring_dma_addr;
-       vq->packed.driver_event_dma_addr = driver_event_dma_addr;
-       vq->packed.device_event_dma_addr = device_event_dma_addr;
-
-       vq->packed.ring_size_in_bytes = ring_size_in_bytes;
-       vq->packed.event_size_in_bytes = event_size_in_bytes;
-
-       vq->packed.vring.num = num;
-       vq->packed.vring.desc = ring;
-       vq->packed.vring.driver = driver;
-       vq->packed.vring.device = device;
-
        vq->packed.next_avail_idx = 0;
        vq->packed.avail_wrap_counter = 1;
        vq->packed.used_wrap_counter = 1;
@@ -1984,8 +2001,10 @@ static struct virtqueue *vring_create_virtqueue_packed(
        if (err)
                goto err_state_extra;
 
-       vq->packed.desc_state = state;
-       vq->packed.desc_extra = extra;
+       vring_virtqueue_attach_packed(vq, num, ring, driver, device,
+                                     ring_dma_addr, driver_event_dma_addr,
+                                     device_event_dma_addr, ring_size_in_bytes,
+                                     event_size_in_bytes, state, extra);
 
        /* Put everything in free lists. */
        vq->free_head = 0;
-- 
2.31.0


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um

Reply via email to