From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org
Subject: Re: [PATCH net-next RFC 3/5] vhost: introduce vhost_add_used_idx()
Date: Tue, 26 Sep 2017 22:13:09 +0300 [thread overview]
Message-ID: <20170926170047-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1506067355-5771-4-git-send-email-jasowang@redhat.com>
On Fri, Sep 22, 2017 at 04:02:33PM +0800, Jason Wang wrote:
> This patch introduces a helper which just increase the used idx. This
> will be used in pair with vhost_prefetch_desc_indices() by batching
> code.
>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
> drivers/vhost/vhost.c | 33 +++++++++++++++++++++++++++++++++
> drivers/vhost/vhost.h | 1 +
> 2 files changed, 34 insertions(+)
>
> diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
> index 8424166d..6532cda 100644
> --- a/drivers/vhost/vhost.c
> +++ b/drivers/vhost/vhost.c
> @@ -2178,6 +2178,39 @@ int vhost_add_used(struct vhost_virtqueue *vq, unsigned int head, int len)
> }
> EXPORT_SYMBOL_GPL(vhost_add_used);
>
> +int vhost_add_used_idx(struct vhost_virtqueue *vq, int n)
> +{
> + u16 old, new;
> +
> + old = vq->last_used_idx;
> + new = (vq->last_used_idx += n);
> + /* If the driver never bothers to signal in a very long while,
> + * used index might wrap around. If that happens, invalidate
> + * signalled_used index we stored. TODO: make sure driver
> + * signals at least once in 2^16 and remove this.
> + */
> + if (unlikely((u16)(new - vq->signalled_used) < (u16)(new - old)))
> + vq->signalled_used_valid = false;
> +
> + /* Make sure buffer is written before we update index. */
> + smp_wmb();
> + if (vhost_put_user(vq, cpu_to_vhost16(vq, vq->last_used_idx),
> + &vq->used->idx)) {
> + vq_err(vq, "Failed to increment used idx");
> + return -EFAULT;
> + }
> + if (unlikely(vq->log_used)) {
> + /* Log used index update. */
> + log_write(vq->log_base,
> + vq->log_addr + offsetof(struct vring_used, idx),
> + sizeof(vq->used->idx));
> + if (vq->log_ctx)
> + eventfd_signal(vq->log_ctx, 1);
> + }
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(vhost_add_used_idx);
> +
> static int __vhost_add_used_n(struct vhost_virtqueue *vq,
> struct vring_used_elem *heads,
> unsigned count)
> diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
> index 16c2cb6..5dd6c05 100644
> --- a/drivers/vhost/vhost.h
> +++ b/drivers/vhost/vhost.h
> @@ -199,6 +199,7 @@ int __vhost_get_vq_desc(struct vhost_virtqueue *vq,
> void vhost_discard_vq_desc(struct vhost_virtqueue *, int n);
>
> int vhost_vq_init_access(struct vhost_virtqueue *);
> +int vhost_add_used_idx(struct vhost_virtqueue *vq, int n);
> int vhost_add_used(struct vhost_virtqueue *, unsigned int head, int len);
> int vhost_add_used_n(struct vhost_virtqueue *, struct vring_used_elem *heads,
> unsigned count);
Please change the API to hide the fact that there's an index that needs
to be updated.
> --
> 2.7.4
next prev parent reply other threads:[~2017-09-26 19:13 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-22 8:02 [PATCH net-next RFC 0/5] batched tx processing in vhost_net Jason Wang
2017-09-22 8:02 ` [PATCH net-next RFC 1/5] vhost: split out ring head fetching logic Jason Wang
2017-09-22 8:02 ` Jason Wang
2017-09-22 8:31 ` Stefan Hajnoczi
2017-09-25 2:03 ` Jason Wang
2017-09-25 2:03 ` Jason Wang
2017-09-22 8:31 ` Stefan Hajnoczi
2017-09-22 8:02 ` [PATCH net-next RFC 2/5] vhost: introduce helper to prefetch desc index Jason Wang
2017-09-22 9:02 ` Stefan Hajnoczi
2017-09-22 9:02 ` Stefan Hajnoczi
2017-09-25 2:04 ` Jason Wang
2017-09-25 2:04 ` Jason Wang
2017-09-26 19:19 ` Michael S. Tsirkin
2017-09-26 19:19 ` Michael S. Tsirkin
2017-09-27 0:35 ` Jason Wang
2017-09-27 22:57 ` Michael S. Tsirkin
2017-09-27 22:57 ` Michael S. Tsirkin
2017-09-28 7:18 ` Jason Wang
2017-09-28 7:18 ` Jason Wang
2017-09-27 0:35 ` Jason Wang
2017-09-28 0:47 ` Willem de Bruijn
2017-09-28 7:44 ` Jason Wang
2017-09-28 7:44 ` Jason Wang
2017-09-28 0:47 ` Willem de Bruijn
2017-09-22 8:02 ` Jason Wang
2017-09-22 8:02 ` [PATCH net-next RFC 3/5] vhost: introduce vhost_add_used_idx() Jason Wang
2017-09-22 9:07 ` Stefan Hajnoczi
2017-09-22 9:07 ` Stefan Hajnoczi
2017-09-26 19:13 ` Michael S. Tsirkin [this message]
2017-09-27 0:38 ` Jason Wang
2017-09-27 0:38 ` Jason Wang
2017-09-27 22:58 ` Michael S. Tsirkin
2017-09-27 22:58 ` Michael S. Tsirkin
2017-09-28 0:59 ` Willem de Bruijn
2017-09-28 0:59 ` Willem de Bruijn
2017-09-28 7:19 ` Jason Wang
2017-09-28 7:19 ` Jason Wang
2017-09-26 19:13 ` Michael S. Tsirkin
2017-09-22 8:02 ` [PATCH net-next RFC 4/5] vhost_net: rename VHOST_RX_BATCH to VHOST_NET_BATCH Jason Wang
2017-09-22 8:02 ` Jason Wang
2017-09-22 8:02 ` [PATCH net-next RFC 5/5] vhost_net: basic tx virtqueue batched processing Jason Wang
2017-09-26 19:25 ` Michael S. Tsirkin
2017-09-27 2:04 ` Jason Wang
2017-09-27 22:19 ` Michael S. Tsirkin
2017-09-28 7:02 ` Jason Wang
2017-09-28 7:02 ` Jason Wang
2017-09-28 7:52 ` Jason Wang
2017-09-28 7:52 ` Jason Wang
2017-09-27 22:19 ` Michael S. Tsirkin
2017-09-27 2:04 ` Jason Wang
2017-09-26 19:25 ` Michael S. Tsirkin
2017-09-28 0:55 ` Willem de Bruijn
2017-09-28 0:55 ` Willem de Bruijn
2017-09-28 7:50 ` Jason Wang
2017-09-28 7:50 ` Jason Wang
2017-09-22 8:02 ` Jason Wang
2017-09-26 13:45 ` [PATCH net-next RFC 0/5] batched tx processing in vhost_net Michael S. Tsirkin
2017-09-26 13:45 ` Michael S. Tsirkin
2017-09-27 0:27 ` Jason Wang
2017-09-27 0:27 ` Jason Wang
2017-09-27 22:28 ` Michael S. Tsirkin
2017-09-27 22:28 ` Michael S. Tsirkin
2017-09-28 7:16 ` Jason Wang
2017-09-28 7:16 ` Jason Wang
2017-09-26 19:26 ` Michael S. Tsirkin
2017-09-26 19:26 ` Michael S. Tsirkin
2017-09-27 2:06 ` Jason Wang
2017-09-27 2:06 ` Jason Wang
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=20170926170047-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=jasowang@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=virtualization@lists.linux-foundation.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.