From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Fam Zheng <fam@euphon.net>, Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
qemu-block@nongnu.org, slp@redhat.com,
"Michael S. Tsirkin" <mst@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Christophe de Dinechin <dinechin@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: [PATCH v4 05/16] tests/virtio-blk-test: set up virtqueue after feature negotiation
Date: Wed, 23 Oct 2019 11:04:14 +0100 [thread overview]
Message-ID: <20191023100425.12168-6-stefanha@redhat.com> (raw)
In-Reply-To: <20191023100425.12168-1-stefanha@redhat.com>
VIRTIO Device Initialization requires that feature negotiation has
completed before virtqueues are set up. This makes sense because the
driver must know whether it is operating in Legacy or VIRTIO 1.0 mode
before it can access vring fields with the correct endianness.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
tests/virtio-blk-test.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
index 31680cc159..fe0dc4a896 100644
--- a/tests/virtio-blk-test.c
+++ b/tests/virtio-blk-test.c
@@ -113,8 +113,8 @@ static uint64_t virtio_blk_request(QGuestAllocator *alloc, QVirtioDevice *d,
return addr;
}
-static void test_basic(QVirtioDevice *dev, QGuestAllocator *alloc,
- QVirtQueue *vq)
+/* Returns the request virtqueue so the caller can perform further tests */
+static QVirtQueue *test_basic(QVirtioDevice *dev, QGuestAllocator *alloc)
{
QVirtioBlkReq req;
uint64_t req_addr;
@@ -124,6 +124,7 @@ static void test_basic(QVirtioDevice *dev, QGuestAllocator *alloc,
uint8_t status;
char *data;
QTestState *qts = global_qtest;
+ QVirtQueue *vq;
features = qvirtio_get_features(dev);
features = features & ~(QVIRTIO_F_BAD_FEATURE |
@@ -135,6 +136,8 @@ static void test_basic(QVirtioDevice *dev, QGuestAllocator *alloc,
capacity = qvirtio_config_readq(dev, 0);
g_assert_cmpint(capacity, ==, TEST_IMAGE_SIZE / 512);
+ vq = qvirtqueue_setup(dev, alloc, 0);
+
qvirtio_set_driver_ok(dev);
/* Write and read with 3 descriptor layout */
@@ -331,14 +334,16 @@ static void test_basic(QVirtioDevice *dev, QGuestAllocator *alloc,
guest_free(alloc, req_addr);
}
+
+ return vq;
}
static void basic(void *obj, void *data, QGuestAllocator *t_alloc)
{
QVirtioBlk *blk_if = obj;
QVirtQueue *vq;
- vq = qvirtqueue_setup(blk_if->vdev, t_alloc, 0);
- test_basic(blk_if->vdev, t_alloc, vq);
+
+ vq = test_basic(blk_if->vdev, t_alloc);
qvirtqueue_cleanup(blk_if->vdev->bus, vq, t_alloc);
}
@@ -746,9 +751,7 @@ static void resize(void *obj, void *data, QGuestAllocator *t_alloc)
QVirtQueue *vq;
QTestState *qts = global_qtest;
- vq = qvirtqueue_setup(dev, t_alloc, 0);
-
- test_basic(dev, t_alloc, vq);
+ vq = test_basic(dev, t_alloc);
qmp_discard_response("{ 'execute': 'block_resize', "
" 'arguments': { 'device': 'drive0', "
--
2.21.0
next prev parent reply other threads:[~2019-10-23 10:18 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-23 10:04 [PATCH v4 00/16] libqos: add VIRTIO PCI 1.0 support Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 01/16] tests/virtio-blk-test: read config space after feature negotiation Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 02/16] libqos: read QVIRTIO_MMIO_VERSION register Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 03/16] libqos: extend feature bits to 64-bit Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 04/16] virtio-scsi-test: add missing feature negotiation Stefan Hajnoczi
2019-10-23 10:19 ` Thomas Huth
2019-10-23 10:04 ` Stefan Hajnoczi [this message]
2019-10-23 10:04 ` [PATCH v4 06/16] libqos: add missing virtio-9p " Stefan Hajnoczi
2019-10-23 10:20 ` Thomas Huth
2019-10-23 10:04 ` [PATCH v4 07/16] libqos: enforce Device Initialization order Stefan Hajnoczi
2019-10-23 11:23 ` Thomas Huth
2019-10-23 10:04 ` [PATCH v4 08/16] libqos: implement VIRTIO 1.0 FEATURES_OK step Stefan Hajnoczi
2019-10-23 11:04 ` Thomas Huth
2019-10-23 10:04 ` [PATCH v4 09/16] libqos: access VIRTIO 1.0 vring in little-endian Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 10/16] libqos: add iteration support to qpci_find_capability() Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 11/16] libqos: pass full QVirtQueue to set_queue_address() Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 12/16] libqos: add MSI-X callbacks to QVirtioPCIDevice Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 13/16] libqos: expose common virtqueue setup/cleanup functions Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 14/16] libqos: make the virtio-pci BAR index configurable Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 15/16] libqos: extract Legacy virtio-pci.c code Stefan Hajnoczi
2019-10-23 10:04 ` [PATCH v4 16/16] libqos: add VIRTIO PCI 1.0 support Stefan Hajnoczi
2019-10-23 11:22 ` Thomas Huth
2019-10-25 11:32 ` [PATCH v4 00/16] " 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=20191023100425.12168-6-stefanha@redhat.com \
--to=stefanha@redhat.com \
--cc=cohuck@redhat.com \
--cc=dinechin@redhat.com \
--cc=fam@euphon.net \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=slp@redhat.com \
--cc=thuth@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 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).