All of lore.kernel.org
 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 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.