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
next prev 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).