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, mark.cave-ayland@ilande.co.uk,
	jasowang@redhat.com, "Alex Bennée" <alex.bennee@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: [PATCH v3 20/21] tests/qtest: add a get_features op to vhost-user-test
Date: Tue, 26 Jul 2022 20:21:49 +0100	[thread overview]
Message-ID: <20220726192150.2435175-21-alex.bennee@linaro.org> (raw)
In-Reply-To: <20220726192150.2435175-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 d546721f5d..28b4cf28ec 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:
@@ -990,8 +993,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) {
@@ -1020,6 +1036,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-07-26 19:57 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-26 19:21 [PATCH v3 for 7.2 00/21] virtio-gpio and various virtio cleanups Alex Bennée
2022-07-26 19:21 ` [PATCH v3 01/21] include/hw/virtio: more comment for VIRTIO_F_BAD_FEATURE Alex Bennée
2022-07-26 19:21 ` [PATCH v3 02/21] include/hw: document vhost_dev feature life-cycle Alex Bennée
2022-07-28  6:06   ` Jason Wang
2022-07-28 10:34     ` Alex Bennée
2022-07-26 19:21 ` [PATCH v3 03/21] hw/virtio: fix some coding style issues Alex Bennée
2022-07-28  6:07   ` Jason Wang
2022-07-26 19:21 ` [PATCH v3 04/21] hw/virtio: log potentially buggy guest drivers Alex Bennée
2022-07-28  6:09   ` Jason Wang
2022-07-26 19:21 ` [PATCH v3 05/21] block/vhost-user-blk-server: don't expose VHOST_USER_F_PROTOCOL_FEATURES Alex Bennée
2022-07-27 16:32   ` Kevin Wolf
2022-07-28  6:13   ` Jason Wang
2022-07-28 10:41     ` Alex Bennée
2022-07-26 19:21 ` [PATCH v3 06/21] hw/virtio: incorporate backend features in features Alex Bennée
2022-07-26 19:21 ` [PATCH v3 07/21] hw/virtio: gracefully handle unset vhost_dev vdev Alex Bennée
2022-07-26 19:21 ` [PATCH v3 08/21] hw/virtio: handle un-configured shutdown in virtio-pci Alex Bennée
2022-07-28  6:23   ` Jason Wang
2022-07-26 19:21 ` [PATCH v3 09/21] hw/virtio: fix vhost_user_read tracepoint Alex Bennée
2022-07-28  6:28   ` Jason Wang
2022-07-26 19:21 ` [PATCH v3 10/21] hw/virtio: add some vhost-user trace events Alex Bennée
2022-07-26 19:21 ` [PATCH v3 11/21] hw/virtio: add boilerplate for vhost-user-gpio device Alex Bennée
2022-07-26 19:21 ` [PATCH v3 12/21] hw/virtio: add vhost-user-gpio-pci boilerplate Alex Bennée
2022-07-26 19:21 ` [PATCH v3 13/21] tests/qtest: pass stdout/stderr down to subtests Alex Bennée
2022-07-26 19:21 ` [PATCH v3 14/21] tests/qtest: add a timeout for subprocess_run_one_test Alex Bennée
2022-07-27  6:24   ` Thomas Huth
2022-07-26 19:21 ` [PATCH v3 15/21] tests/qtest: use qos_printf instead of g_test_message Alex Bennée
2022-07-26 19:21 ` [PATCH v3 16/21] tests/qtest: catch unhandled vhost-user messages Alex Bennée
2022-07-26 19:21 ` [PATCH v3 17/21] tests/qtest: plain g_assert for VHOST_USER_F_PROTOCOL_FEATURES Alex Bennée
2022-07-26 19:21 ` [PATCH v3 18/21] tests/qtest: add assert to catch bad features Alex Bennée
2022-07-26 19:21 ` [PATCH v3 19/21] tests/qtest: implement stub for VHOST_USER_GET_CONFIG Alex Bennée
2022-07-26 19:21 ` Alex Bennée [this message]
2022-07-26 19:21 ` [PATCH v3 21/21] tests/qtest: enable tests for virtio-gpio Alex Bennée
2022-07-26 19:46 ` [PATCH v3 for 7.2 00/21] virtio-gpio and various virtio cleanups 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=20220726192150.2435175-21-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=jasowang@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --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).