qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: slp@redhat.com, mst@redhat.com, marcandre.lureau@redhat.com,
	stefanha@redhat.com, mathieu.poirier@linaro.org,
	viresh.kumar@linaro.org, "Alex Bennée" <alex.bennee@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: [PATCH v4 21/22] tests/qtest: add a get_features op to vhost-user-test
Date: Tue,  2 Aug 2022 10:50:09 +0100	[thread overview]
Message-ID: <20220802095010.3330793-22-alex.bennee@linaro.org> (raw)
In-Reply-To: <20220802095010.3330793-1-alex.bennee@linaro.org>

As we expand this test for more virtio devices we will need to support
different feature sets. Add a mandatory op field to fetch the list of
features needed for the test itself.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 tests/qtest/vhost-user-test.c | 37 +++++++++++++++++++++++++----------
 1 file changed, 27 insertions(+), 10 deletions(-)

diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c
index 61980bfc6a..fe46e28cf2 100644
--- a/tests/qtest/vhost-user-test.c
+++ b/tests/qtest/vhost-user-test.c
@@ -171,10 +171,11 @@ struct vhost_user_ops {
             const char *chr_opts);
 
     /* VHOST-USER commands. */
+    uint64_t (*get_features)(TestServer *s);
     void (*set_features)(TestServer *s, CharBackend *chr,
-            VhostUserMsg *msg);
+                         VhostUserMsg *msg);
     void (*get_protocol_features)(TestServer *s,
-            CharBackend *chr, VhostUserMsg *msg);
+                                  CharBackend *chr, VhostUserMsg *msg);
 };
 
 static const char *init_hugepagefs(void);
@@ -338,20 +339,22 @@ static void chr_read(void *opaque, const uint8_t *buf, int size)
 
     switch (msg.request) {
     case VHOST_USER_GET_FEATURES:
+        /* Mandatory for tests to define get_features */
+        g_assert(s->vu_ops->get_features);
+
         /* send back features to qemu */
         msg.flags |= VHOST_USER_REPLY_MASK;
         msg.size = sizeof(m.payload.u64);
-        msg.payload.u64 = 0x1ULL << VHOST_F_LOG_ALL |
-            0x1ULL << VHOST_USER_F_PROTOCOL_FEATURES;
-        if (s->queues > 1) {
-            msg.payload.u64 |= 0x1ULL << VIRTIO_NET_F_MQ;
-        }
+
         if (s->test_flags >= TEST_FLAGS_BAD) {
             msg.payload.u64 = 0;
             s->test_flags = TEST_FLAGS_END;
+        } else {
+            msg.payload.u64 = s->vu_ops->get_features(s);
         }
-        p = (uint8_t *) &msg;
-        qemu_chr_fe_write_all(chr, p, VHOST_USER_HDR_SIZE + msg.size);
+
+        qemu_chr_fe_write_all(chr, (uint8_t *) &msg,
+                              VHOST_USER_HDR_SIZE + msg.size);
         break;
 
     case VHOST_USER_SET_FEATURES:
@@ -993,8 +996,21 @@ static void test_multiqueue(void *obj, void *arg, QGuestAllocator *alloc)
     wait_for_rings_started(s, s->queues * 2);
 }
 
+
+static uint64_t vu_net_get_features(TestServer *s)
+{
+    uint64_t features = 0x1ULL << VHOST_F_LOG_ALL |
+        0x1ULL << VHOST_USER_F_PROTOCOL_FEATURES;
+
+    if (s->queues > 1) {
+        features |= 0x1ULL << VIRTIO_NET_F_MQ;
+    }
+
+    return features;
+}
+
 static void vu_net_set_features(TestServer *s, CharBackend *chr,
-        VhostUserMsg *msg)
+                                VhostUserMsg *msg)
 {
     g_assert(msg->payload.u64 & (0x1ULL << VHOST_USER_F_PROTOCOL_FEATURES));
     if (s->test_flags == TEST_FLAGS_DISCONNECT) {
@@ -1023,6 +1039,7 @@ static struct vhost_user_ops g_vu_net_ops = {
 
     .append_opts = append_vhost_net_opts,
 
+    .get_features = vu_net_get_features,
     .set_features = vu_net_set_features,
     .get_protocol_features = vu_net_get_protocol_features,
 };
-- 
2.30.2



  parent reply	other threads:[~2022-08-02 10:12 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-02  9:49 [PATCH v4 for 7.2 00/22] virtio-gpio and various virtio cleanups Alex Bennée
2022-08-02  9:49 ` [PATCH v4 01/22] hw/virtio: incorporate backend features in features Alex Bennée
2022-09-22 21:58   ` Philippe Mathieu-Daudé via
2022-08-02  9:49 ` [PATCH v4 02/22] hw/virtio: gracefully handle unset vhost_dev vdev Alex Bennée
2022-09-22 21:59   ` Philippe Mathieu-Daudé via
2022-08-02  9:49 ` [PATCH v4 03/22] hw/virtio: handle un-configured shutdown in virtio-pci Alex Bennée
2022-08-02  9:49 ` [PATCH v4 04/22] hw/virtio: fix vhost_user_read tracepoint Alex Bennée
2022-08-02  9:49 ` [PATCH v4 05/22] include/hw/virtio: more comment for VIRTIO_F_BAD_FEATURE Alex Bennée
2022-08-02  9:49 ` [PATCH v4 06/22] include/hw: document vhost_dev feature life-cycle Alex Bennée
2022-09-22 22:01   ` Philippe Mathieu-Daudé via
2022-08-02  9:49 ` [PATCH v4 07/22] hw/virtio: fix some coding style issues Alex Bennée
2022-09-22 22:01   ` Philippe Mathieu-Daudé via
2022-08-02  9:49 ` [PATCH v4 08/22] hw/virtio: log potentially buggy guest drivers Alex Bennée
2022-08-02  9:49 ` [PATCH v4 09/22] hw/virtio: add some vhost-user trace events Alex Bennée
2022-09-22 22:01   ` Philippe Mathieu-Daudé via
2022-08-02  9:49 ` [PATCH v4 10/22] hw/virtio: move vm_running check to virtio_device_started Alex Bennée
2022-11-03 16:39   ` Michael S. Tsirkin
2022-11-03 19:18     ` Alex Bennée
2022-11-03 20:30       ` Michael S. Tsirkin
2022-11-03 21:35         ` Michael S. Tsirkin
2022-11-04  7:18           ` Michael S. Tsirkin
2022-08-02  9:49 ` [PATCH v4 11/22] hw/virtio: move vhd->started check into helper and add FIXME Alex Bennée
2022-08-07 20:13   ` Raphael Norwitz
2022-11-03 16:39   ` Michael S. Tsirkin
2022-08-02  9:50 ` [PATCH v4 12/22] hw/virtio: add boilerplate for vhost-user-gpio device Alex Bennée
2022-08-02  9:50 ` [PATCH v4 13/22] hw/virtio: add vhost-user-gpio-pci boilerplate Alex Bennée
2022-08-02  9:50 ` [PATCH v4 14/22] tests/qtest: pass stdout/stderr down to subtests Alex Bennée
2022-08-02  9:50 ` [PATCH v4 15/22] tests/qtest: add a timeout for subprocess_run_one_test Alex Bennée
2022-09-22 22:03   ` Philippe Mathieu-Daudé via
2022-08-02  9:50 ` [PATCH v4 16/22] tests/qtest: use qos_printf instead of g_test_message Alex Bennée
2022-08-02  9:50 ` [PATCH v4 17/22] tests/qtest: catch unhandled vhost-user messages Alex Bennée
2022-08-02  9:50 ` [PATCH v4 18/22] tests/qtest: plain g_assert for VHOST_USER_F_PROTOCOL_FEATURES Alex Bennée
2022-08-02  9:50 ` [PATCH v4 19/22] tests/qtest: add assert to catch bad features Alex Bennée
2022-08-02  9:50 ` [PATCH v4 20/22] tests/qtest: implement stub for VHOST_USER_GET_CONFIG Alex Bennée
2022-08-02  9:50 ` Alex Bennée [this message]
2022-08-02  9:50 ` [PATCH v4 22/22] tests/qtest: enable tests for virtio-gpio Alex Bennée
2022-09-16  6:51 ` [PATCH v4 for 7.2 00/22] virtio-gpio and various virtio cleanups Alex Bennée
2022-09-19 16:39   ` Stefan Hajnoczi
2022-09-20 11:30     ` Alex Bennée
2022-09-20 18:25       ` Stefan Hajnoczi
2022-09-20 19:10         ` Michael S. Tsirkin
2022-09-20 21:18           ` Alex Bennée

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=20220802095010.3330793-22-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=lvivier@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=slp@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=thuth@redhat.com \
    --cc=viresh.kumar@linaro.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 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).