[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 09/19] vhost: Track number of descs in SVQElement
From: |
Jason Wang |
Subject: |
Re: [PATCH v2 09/19] vhost: Track number of descs in SVQElement |
Date: |
Fri, 15 Jul 2022 12:10:16 +0800 |
On Fri, Jul 15, 2022 at 12:32 AM Eugenio Pérez <eperezma@redhat.com> wrote:
>
> Since CVQ will be able to modify elements, the number of descriptors in
> the guest may not match with the number of descriptors exposed. Track
> separately.
>
> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> ---
> hw/virtio/vhost-shadow-virtqueue.h | 6 ++++++
> hw/virtio/vhost-shadow-virtqueue.c | 10 +++++-----
> 2 files changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/hw/virtio/vhost-shadow-virtqueue.h
> b/hw/virtio/vhost-shadow-virtqueue.h
> index f35d4b8f90..143c86a568 100644
> --- a/hw/virtio/vhost-shadow-virtqueue.h
> +++ b/hw/virtio/vhost-shadow-virtqueue.h
> @@ -17,6 +17,12 @@
>
> typedef struct SVQElement {
> VirtQueueElement elem;
> +
> + /*
> + * Number of descriptors exposed to the device. May or may not match
> + * guest's
> + */
> + unsigned int ndescs;
> } SVQElement;
Can we simplify things furtherly by moving ndscs into a dedicated array at svq?
Then we don't need to bother with introducing SVQElement.
Thanks
>
> /* Shadow virtqueue to relay notifications */
> diff --git a/hw/virtio/vhost-shadow-virtqueue.c
> b/hw/virtio/vhost-shadow-virtqueue.c
> index 442ca3cbd3..3b112c4ec8 100644
> --- a/hw/virtio/vhost-shadow-virtqueue.c
> +++ b/hw/virtio/vhost-shadow-virtqueue.c
> @@ -243,10 +243,10 @@ static int vhost_svq_add(VhostShadowVirtqueue *svq,
> const struct iovec *out_sg,
> size_t in_num, SVQElement *svq_elem)
> {
> unsigned qemu_head;
> - unsigned ndescs = in_num + out_num;
> + svq_elem->ndescs = in_num + out_num;
> bool ok;
>
> - if (unlikely(ndescs > vhost_svq_available_slots(svq))) {
> + if (unlikely(svq_elem->ndescs > vhost_svq_available_slots(svq))) {
> return -ENOSPC;
> }
>
> @@ -393,7 +393,7 @@ static SVQElement *vhost_svq_get_buf(VhostShadowVirtqueue
> *svq,
> SVQElement *elem;
> const vring_used_t *used = svq->vring.used;
> vring_used_elem_t used_elem;
> - uint16_t last_used, last_used_chain, num;
> + uint16_t last_used, last_used_chain;
>
> if (!vhost_svq_more_used(svq)) {
> return NULL;
> @@ -420,8 +420,8 @@ static SVQElement *vhost_svq_get_buf(VhostShadowVirtqueue
> *svq,
> }
>
> elem = svq->ring_id_maps[used_elem.id];
> - num = elem->elem.in_num + elem->elem.out_num;
> - last_used_chain = vhost_svq_last_desc_of_chain(svq, num, used_elem.id);
> + last_used_chain = vhost_svq_last_desc_of_chain(svq, elem->ndescs,
> + used_elem.id);
> svq->desc_next[last_used_chain] = svq->free_head;
> svq->free_head = used_elem.id;
>
> --
> 2.31.1
>
- [PATCH v2 00/19] vdpa net devices Rx filter change notification with Shadow VQ, Eugenio Pérez, 2022/07/14
- [PATCH v2 01/19] vhost: move descriptor translation to vhost_svq_vring_write_descs, Eugenio Pérez, 2022/07/14
- [PATCH v2 02/19] virtio-net: Expose MAC_TABLE_ENTRIES, Eugenio Pérez, 2022/07/14
- [PATCH v2 03/19] virtio-net: Expose ctrl virtqueue logic, Eugenio Pérez, 2022/07/14
- [PATCH v2 07/19] vhost: Decouple vhost_svq_add from VirtQueueElement, Eugenio Pérez, 2022/07/14
- [PATCH v2 08/19] vhost: Add SVQElement, Eugenio Pérez, 2022/07/14
- [PATCH v2 06/19] vhost: Check for queue full at vhost_svq_add, Eugenio Pérez, 2022/07/14
- [PATCH v2 09/19] vhost: Track number of descs in SVQElement, Eugenio Pérez, 2022/07/14
- Re: [PATCH v2 09/19] vhost: Track number of descs in SVQElement,
Jason Wang <=
- [PATCH v2 05/19] vhost: Move vhost_svq_kick call to vhost_svq_add, Eugenio Pérez, 2022/07/14
- [PATCH v2 12/19] vhost: add vhost_svq_poll, Eugenio Pérez, 2022/07/14
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Jason Wang, 2022/07/14
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Eugenio Perez Martin, 2022/07/15
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Jason Wang, 2022/07/15
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Eugenio Perez Martin, 2022/07/15
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Jason Wang, 2022/07/19
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Eugenio Perez Martin, 2022/07/19
- Re: [PATCH v2 12/19] vhost: add vhost_svq_poll, Jason Wang, 2022/07/19