Skip to content

Commit

Permalink
virtio_ring: split: introduce virtqueue_reinit_split()
Browse files Browse the repository at this point in the history
Introduce a function to initialize vq without allocating new ring,
desc_state, desc_extra.

Subsequent patches will call this function after reset vq to
reinitialize vq.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-15-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 e1d6a42 commit e5175b4
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions drivers/virtio/virtio_ring.c
Original file line number Diff line number Diff line change
Expand Up @@ -957,6 +957,29 @@ static void virtqueue_vring_init_split(struct vring_virtqueue_split *vring_split
}
}

static void virtqueue_reinit_split(struct vring_virtqueue *vq)
{
int num;

num = vq->split.vring.num;

vq->split.vring.avail->flags = 0;
vq->split.vring.avail->idx = 0;

/* reset avail event */
vq->split.vring.avail->ring[num] = 0;

vq->split.vring.used->flags = 0;
vq->split.vring.used->idx = 0;

/* reset used event */
*(__virtio16 *)&(vq->split.vring.used->ring[num]) = 0;

virtqueue_init(vq, num);

virtqueue_vring_init_split(&vq->split, vq);
}

static void virtqueue_vring_attach_split(struct vring_virtqueue *vq,
struct vring_virtqueue_split *vring_split)
{
Expand Down

0 comments on commit e5175b4

Please sign in to comment.