virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: xuanzhuo@linux.alibaba.com, eperezma@redhat.com,
	virtualization@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH V7 19/19] virtio_ring: add in order support
Date: Tue, 14 Oct 2025 05:13:38 -0400	[thread overview]
Message-ID: <20251014050901-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20250925103708.44589-20-jasowang@redhat.com>

On Thu, Sep 25, 2025 at 06:37:08PM +0800, Jason Wang wrote:
> @@ -683,7 +707,12 @@ static inline int virtqueue_add_split(struct vring_virtqueue *vq,
>  	vq->vq.num_free -= descs_used;
>  
>  	/* Update free pointer */
> -	if (indirect)
> +	if (virtqueue_is_in_order(vq)) {
> +		vq->free_head += descs_used;
> +		if (vq->free_head >= vq->split.vring.num)
> +			vq->free_head -= vq->split.vring.num;
> +		vq->split.desc_state[head].total_len = total_len;;
> +	} else if (indirect)
>  		vq->free_head = vq->split.desc_extra[head].next;
>  	else
>  		vq->free_head = i;

So in order is clearly doing something funky with the free_head.
It's no longer a head of a linked list of free descriptors, is it?
what is it doing and why?  Please add code comments to explain
both where free_list is defined and where it's used.
For example, virtqueue_vring_attach_packed only inits free_list
if not in order. So who will init it for in order? And so on.

-- 
MST


  parent reply	other threads:[~2025-10-14  9:13 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-25 10:36 [PATCH V7 00/19] virtio_ring in order support Jason Wang
2025-09-25 10:36 ` [PATCH V7 01/19] virtio_ring: rename virtqueue_reinit_xxx to virtqueue_reset_xxx() Jason Wang
2025-09-25 10:36 ` [PATCH V7 02/19] virtio_ring: switch to use vring_virtqueue in virtqueue_poll variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 03/19] virtio_ring: unify logic of virtqueue_poll() and more_used() Jason Wang
2025-09-25 10:36 ` [PATCH V7 04/19] virtio_ring: switch to use vring_virtqueue for virtqueue resize variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 05/19] virtio_ring: switch to use vring_virtqueue for virtqueue_kick_prepare variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 06/19] virtio_ring: switch to use vring_virtqueue for virtqueue_add variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 07/19] virtio: switch to use vring_virtqueue for virtqueue_get variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 08/19] virtio_ring: switch to use vring_virtqueue for enable_cb_prepare variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 09/19] virtio_ring: use vring_virtqueue for enable_cb_delayed variants Jason Wang
2025-09-25 10:36 ` [PATCH V7 10/19] virtio_ring: switch to use vring_virtqueue for disable_cb variants Jason Wang
2025-09-25 10:37 ` [PATCH V7 11/19] virtio_ring: switch to use vring_virtqueue for detach_unused_buf variants Jason Wang
2025-09-25 10:37 ` [PATCH V7 12/19] virtio_ring: use u16 for last_used_idx in virtqueue_poll_split() Jason Wang
2025-09-28 18:27   ` David Laight
2025-09-29  8:22     ` Michael S. Tsirkin
2025-10-09  5:55       ` Jason Wang
2025-09-25 10:37 ` [PATCH V7 13/19] virtio_ring: introduce virtqueue ops Jason Wang
2025-09-29  8:23   ` Michael S. Tsirkin
2025-09-25 10:37 ` [PATCH V7 14/19] virtio_ring: determine descriptor flags at one time Jason Wang
2025-09-25 10:37 ` [PATCH V7 15/19] virtio_ring: factor out core logic of buffer detaching Jason Wang
2025-10-20 23:06   ` Michael S. Tsirkin
2025-10-21  3:57     ` Jason Wang
2025-09-25 10:37 ` [PATCH V7 16/19] virtio_ring: factor out core logic for updating last_used_idx Jason Wang
2025-09-25 10:37 ` [PATCH V7 17/19] virtio_ring: factor out split indirect detaching logic Jason Wang
2025-09-25 10:37 ` [PATCH V7 18/19] virtio_ring: factor out split " Jason Wang
2025-09-25 10:37 ` [PATCH V7 19/19] virtio_ring: add in order support Jason Wang
2025-09-26 14:47   ` Michael S. Tsirkin
2025-10-14  3:50     ` Jason Wang
2025-10-14  9:13   ` Michael S. Tsirkin [this message]
2025-10-15  4:42     ` Jason Wang
2025-10-01 11:30 ` [PATCH V7 00/19] virtio_ring " Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251014050901-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=eperezma@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=virtualization@lists.linux.dev \
    --cc=xuanzhuo@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).