Skip to content

Commit

Permalink
virtio_ring: packed: extract the logic of attach vring
Browse files Browse the repository at this point in the history
Separate the logic of attach vring, the subsequent patch will call it
separately.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-22-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
  • Loading branch information
Xuan Zhuo authored and Michael S. Tsirkin committed Aug 11, 2022
1 parent 1a107c8 commit 51d649f
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions drivers/virtio/virtio_ring.c
Original file line number Diff line number Diff line change
Expand Up @@ -1948,6 +1948,15 @@ static void virtqueue_vring_init_packed(struct vring_virtqueue_packed *vring_pac
}
}

static void virtqueue_vring_attach_packed(struct vring_virtqueue *vq,
struct vring_virtqueue_packed *vring_packed)
{
vq->packed = *vring_packed;

/* Put everything in free lists. */
vq->free_head = 0;
}

static struct virtqueue *vring_create_virtqueue_packed(
unsigned int index,
unsigned int num,
Expand Down Expand Up @@ -1993,28 +2002,14 @@ 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 = vring_packed.ring_dma_addr;
vq->packed.driver_event_dma_addr = vring_packed.driver_event_dma_addr;
vq->packed.device_event_dma_addr = vring_packed.device_event_dma_addr;

vq->packed.ring_size_in_bytes = vring_packed.ring_size_in_bytes;
vq->packed.event_size_in_bytes = vring_packed.event_size_in_bytes;

vq->packed.vring = vring_packed.vring;

err = vring_alloc_state_extra_packed(&vring_packed);
if (err)
goto err_state_extra;

/* Put everything in free lists. */
vq->free_head = 0;

vq->packed.desc_state = vring_packed.desc_state;
vq->packed.desc_extra = vring_packed.desc_extra;

virtqueue_vring_init_packed(&vring_packed, !!callback);

virtqueue_init(vq, num);
virtqueue_vring_attach_packed(vq, &vring_packed);

spin_lock(&vdev->vqs_list_lock);
list_add_tail(&vq->vq.list, &vdev->vqs);
Expand Down

0 comments on commit 51d649f

Please sign in to comment.