The vq setup code is repeated several times and can be easily factorized. Signed-off-by: Eric Auger <eric.au...@redhat.com> Reviewed-by: Thomas Huth <th...@redhat.com> --- tests/qtest/vhost-user-blk-test.c | 33 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/tests/qtest/vhost-user-blk-test.c b/tests/qtest/vhost-user-blk-test.c index 2606428df3..9567f3dc42 100644 --- a/tests/qtest/vhost-user-blk-test.c +++ b/tests/qtest/vhost-user-blk-test.c @@ -211,6 +211,19 @@ static void test_invalid_discard_write_zeroes(QVirtioDevice *dev, guest_free(alloc, req_addr); } +static QVirtQueue *setup_vq(QVirtioDevice *dev, QGuestAllocator *alloc) +{ + QVirtioPCIDevice *vpcidev = container_of(dev, QVirtioPCIDevice, vdev); + QVirtQueue *vq; + + qpci_msix_enable(vpcidev->pdev); + qvirtio_pci_set_msix_configuration_vector(vpcidev, alloc, 0); + + vq = qvirtqueue_setup(dev, alloc, 0); + qvirtqueue_pci_msix_setup(vpcidev, (QVirtQueuePCI *)vq, alloc, 1); + return vq; +} + /* Returns the request virtqueue so the caller can perform further tests */ static QVirtQueue *test_basic(QVirtioDevice *dev, QGuestAllocator *alloc) { @@ -223,10 +236,6 @@ static QVirtQueue *test_basic(QVirtioDevice *dev, QGuestAllocator *alloc) char *data; QTestState *qts = global_qtest; QVirtQueue *vq; - QVirtioPCIDevice *vpcidev = container_of(dev, QVirtioPCIDevice, vdev); - - qpci_msix_enable(vpcidev->pdev); - qvirtio_pci_set_msix_configuration_vector(vpcidev, alloc, 0); features = qvirtio_get_features(dev); features = features & ~(QVIRTIO_F_BAD_FEATURE | @@ -238,8 +247,7 @@ static QVirtQueue *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); - qvirtqueue_pci_msix_setup(vpcidev, (QVirtQueuePCI *)vq, alloc, 1); + vq = setup_vq(dev, alloc); qvirtio_set_driver_ok(dev); @@ -474,10 +482,6 @@ static void indirect(void *obj, void *u_data, QGuestAllocator *t_alloc) uint8_t status; char *data; QTestState *qts = global_qtest; - QVirtioPCIDevice *vpcidev = container_of(dev, QVirtioPCIDevice, vdev); - - qpci_msix_enable(vpcidev->pdev); - qvirtio_pci_set_msix_configuration_vector(vpcidev, t_alloc, 0); features = qvirtio_get_features(dev); g_assert_cmphex(features & (1u << VIRTIO_RING_F_INDIRECT_DESC), !=, 0); @@ -489,8 +493,7 @@ static void indirect(void *obj, void *u_data, QGuestAllocator *t_alloc) capacity = qvirtio_config_readq(dev, 0); g_assert_cmpint(capacity, ==, TEST_IMAGE_SIZE / 512); - vq = qvirtqueue_setup(dev, t_alloc, 0); - qvirtqueue_pci_msix_setup(vpcidev, (QVirtQueuePCI *)vq, t_alloc, 1); + vq = setup_vq(dev, t_alloc); qvirtio_set_driver_ok(dev); @@ -576,9 +579,6 @@ static void idx(void *obj, void *u_data, QGuestAllocator *t_alloc) return; } - qpci_msix_enable(pdev->pdev); - qvirtio_pci_set_msix_configuration_vector(pdev, t_alloc, 0); - features = qvirtio_get_features(dev); features = features & ~(QVIRTIO_F_BAD_FEATURE | (1u << VIRTIO_RING_F_INDIRECT_DESC) | @@ -589,8 +589,7 @@ static void idx(void *obj, void *u_data, QGuestAllocator *t_alloc) capacity = qvirtio_config_readq(dev, 0); g_assert_cmpint(capacity, ==, TEST_IMAGE_SIZE / 512); - vq = qvirtqueue_setup(dev, t_alloc, 0); - qvirtqueue_pci_msix_setup(pdev, (QVirtQueuePCI *)vq, t_alloc, 1); + vq = setup_vq(dev, t_alloc); qvirtio_set_driver_ok(dev); -- 2.26.3