All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: stefanha@redhat.com, qemu-devel@nongnu.org
Cc: "Eugenio Pérez" <eperezma@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>
Subject: [PULL 08/26] vhost: toggle device callbacks using used event idx
Date: Fri, 28 Oct 2022 13:48:17 +0800	[thread overview]
Message-ID: <20221028054835.29674-9-jasowang@redhat.com> (raw)
In-Reply-To: <20221028054835.29674-1-jasowang@redhat.com>

From: Eugenio Pérez <eperezma@redhat.com>

Actually use the new field of the used ring and tell the device if SVQ
wants to be notified.

The code is not reachable at the moment.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 hw/virtio/vhost-shadow-virtqueue.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c
index a518f84..f5c0fad 100644
--- a/hw/virtio/vhost-shadow-virtqueue.c
+++ b/hw/virtio/vhost-shadow-virtqueue.c
@@ -369,15 +369,27 @@ static bool vhost_svq_more_used(VhostShadowVirtqueue *svq)
  */
 static bool vhost_svq_enable_notification(VhostShadowVirtqueue *svq)
 {
-    svq->vring.avail->flags &= ~cpu_to_le16(VRING_AVAIL_F_NO_INTERRUPT);
-    /* Make sure the flag is written before the read of used_idx */
+    if (virtio_vdev_has_feature(svq->vdev, VIRTIO_RING_F_EVENT_IDX)) {
+        uint16_t *used_event = (uint16_t *)&svq->vring.avail->ring[svq->vring.num];
+        *used_event = svq->shadow_used_idx;
+    } else {
+        svq->vring.avail->flags &= ~cpu_to_le16(VRING_AVAIL_F_NO_INTERRUPT);
+    }
+
+    /* Make sure the event is enabled before the read of used_idx */
     smp_mb();
     return !vhost_svq_more_used(svq);
 }
 
 static void vhost_svq_disable_notification(VhostShadowVirtqueue *svq)
 {
-    svq->vring.avail->flags |= cpu_to_le16(VRING_AVAIL_F_NO_INTERRUPT);
+    /*
+     * No need to disable notification in the event idx case, since used event
+     * index is already an index too far away.
+     */
+    if (!virtio_vdev_has_feature(svq->vdev, VIRTIO_RING_F_EVENT_IDX)) {
+        svq->vring.avail->flags |= cpu_to_le16(VRING_AVAIL_F_NO_INTERRUPT);
+    }
 }
 
 static uint16_t vhost_svq_last_desc_of_chain(const VhostShadowVirtqueue *svq,
-- 
2.7.4



  parent reply	other threads:[~2022-10-28  5:54 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-28  5:48 [PULL 00/26] Net patches Jason Wang
2022-10-28  5:48 ` [PULL 01/26] virtio-net: fix bottom-half packet TX on asynchronous completion Jason Wang
2022-10-28  5:48 ` [PULL 02/26] virtio-net: fix TX timer with tx_burst Jason Wang
2022-10-28  5:48 ` [PULL 03/26] vdpa: Delete duplicated vdpa_feature_bits entry Jason Wang
2022-10-28  5:48 ` [PULL 04/26] vdpa: Remove shadow CVQ command check Jason Wang
2022-10-28  5:48 ` [PULL 05/26] vhost-vdpa: allow passing opened vhostfd to vhost-vdpa Jason Wang
2022-10-31 13:22   ` Peter Maydell
2022-10-28  5:48 ` [PULL 06/26] net: improve error message for missing netdev backend Jason Wang
2022-10-28  5:48 ` [PULL 07/26] vhost: allocate event_idx fields on vring Jason Wang
2022-10-28  5:48 ` Jason Wang [this message]
2022-10-28  5:48 ` [PULL 09/26] vhost: use avail event idx on vhost_svq_kick Jason Wang
2022-10-28  5:48 ` [PULL 10/26] vhost: Accept event idx flag Jason Wang
2022-10-28  5:48 ` [PULL 11/26] net: introduce convert_host_port() Jason Wang
2022-10-28  5:48 ` [PULL 12/26] net: remove the @errp argument of net_client_inits() Jason Wang
2022-10-28  5:48 ` [PULL 13/26] net: simplify net_client_parse() error management Jason Wang
2022-10-28  5:48 ` [PULL 14/26] qapi: net: introduce a way to bypass qemu_opts_parse_noisily() Jason Wang
2022-10-28  5:48 ` [PULL 15/26] net: introduce qemu_set_info_str() function Jason Wang
2022-10-28  5:48 ` [PULL 16/26] qapi: net: add stream and dgram netdevs Jason Wang
2022-10-28  5:48 ` [PULL 17/26] net: socket: Don't ignore EINVAL on netdev socket connection Jason Wang
2022-10-28  5:48 ` [PULL 18/26] net: stream: " Jason Wang
2022-10-28  5:48 ` [PULL 19/26] net: stream: add unix socket Jason Wang
2022-10-28  5:48 ` [PULL 20/26] net: dgram: make dgram_dst generic Jason Wang
2022-10-28  5:48 ` [PULL 21/26] net: dgram: move mcast specific code from net_socket_fd_init_dgram() Jason Wang
2022-10-28  5:48 ` [PULL 22/26] net: dgram: add unix socket Jason Wang
2022-10-28  5:48 ` [PULL 23/26] qemu-sockets: move and rename SocketAddress_to_str() Jason Wang
2022-10-28  5:48 ` [PULL 24/26] qemu-sockets: update socket_uri() and socket_parse() to be consistent Jason Wang
2022-10-28  5:48 ` [PULL 25/26] net: stream: move to QIO to enable additional parameters Jason Wang
2022-10-28  5:48 ` [PULL 26/26] net: stream: add QAPI events to report connection state Jason Wang
2022-10-31 10:13 ` [PULL 00/26] Net patches Stefan Hajnoczi

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=20221028054835.29674-9-jasowang@redhat.com \
    --to=jasowang@redhat.com \
    --cc=eperezma@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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 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.