From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpmfK-0000Vp-PP for qemu-devel@nongnu.org; Thu, 29 Sep 2016 21:31:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bpmfH-0002Rr-Ix for qemu-devel@nongnu.org; Thu, 29 Sep 2016 21:31:06 -0400 Date: Fri, 30 Sep 2016 11:27:20 +1000 From: David Gibson Message-ID: <20160930012720.GQ30519@umbus.fritz.box> References: <1475169307-1510-1-git-send-email-lvivier@redhat.com> <1475169307-1510-2-git-send-email-lvivier@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="1WN/MJ7JJGqVzwIW" Content-Disposition: inline In-Reply-To: <1475169307-1510-2-git-send-email-lvivier@redhat.com> Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/3] tests: use qtest_pc_boot()/qtest_pc_shutdown() in virtio tests List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier Cc: qemu-devel@nongnu.org, dgibson@redhat.com, thuth@redhat.com, qemu-ppc@nongnu.org, Greg Kurz --1WN/MJ7JJGqVzwIW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Sep 29, 2016 at 07:15:05PM +0200, Laurent Vivier wrote: > Signed-off-by: Laurent Vivier This could do with a commit message, even if it's just to say that this is supposed to be a refactor without behavioural change. > --- > tests/virtio-9p-test.c | 53 ++++++++-------- > tests/virtio-blk-test.c | 154 +++++++++++++++++++++--------------------= ------ > tests/virtio-net-test.c | 40 +++++------- > tests/virtio-scsi-test.c | 70 ++++++++++----------- > 4 files changed, 140 insertions(+), 177 deletions(-) >=20 > diff --git a/tests/virtio-9p-test.c b/tests/virtio-9p-test.c > index e8b2196..28d7f5b 100644 > --- a/tests/virtio-9p-test.c > +++ b/tests/virtio-9p-test.c > @@ -10,62 +10,57 @@ > #include "qemu/osdep.h" > #include "libqtest.h" > #include "qemu-common.h" > -#include "libqos/pci-pc.h" > +#include "libqos/libqos-pc.h" > #include "libqos/virtio.h" > #include "libqos/virtio-pci.h" > -#include "libqos/malloc.h" > -#include "libqos/malloc-pc.h" > #include "standard-headers/linux/virtio_ids.h" > #include "standard-headers/linux/virtio_pci.h" > =20 > static const char mount_tag[] =3D "qtest"; > static char *test_share; > =20 > -static void qvirtio_9p_start(void) > -{ > - char *args; > =20 > +static QOSState *qvirtio_9p_start(void) > +{ > test_share =3D g_strdup("/tmp/qtest.XXXXXX"); > g_assert_nonnull(mkdtemp(test_share)); > + const char *cmd =3D "-fsdev local,id=3Dfsdev0,security_model=3Dnone,= path=3D%s " > + "-device virtio-9p-pci,fsdev=3Dfsdev0,mount_tag=3D= %s"; > =20 > - args =3D g_strdup_printf("-fsdev local,id=3Dfsdev0,security_model=3D= none,path=3D%s " > - "-device virtio-9p-pci,fsdev=3Dfsdev0,mount_t= ag=3D%s", > - test_share, mount_tag); > - > - qtest_start(args); > - g_free(args); > + return qtest_pc_boot(cmd, test_share, mount_tag); > } > =20 > -static void qvirtio_9p_stop(void) > +static void qvirtio_9p_stop(QOSState *qs) > { > - qtest_end(); > + qtest_pc_shutdown(qs); Shouldn't this be the generic shutdown call you added in the other series? > rmdir(test_share); > g_free(test_share); > } > =20 > static void pci_nop(void) > { > - qvirtio_9p_start(); > - qvirtio_9p_stop(); > + QOSState *qs; > + > + qs =3D qvirtio_9p_start(); > + g_assert(qs); > + qvirtio_9p_stop(qs); > } > =20 > typedef struct { > QVirtioDevice *dev; > - QGuestAllocator *alloc; > - QPCIBus *bus; > + QOSState *qs; > QVirtQueue *vq; > } QVirtIO9P; > =20 > -static QVirtIO9P *qvirtio_9p_pci_init(void) > +static QVirtIO9P *qvirtio_9p_pci_init(QOSState *qs) > { > QVirtIO9P *v9p; > QVirtioPCIDevice *dev; > =20 > v9p =3D g_new0(QVirtIO9P, 1); > - v9p->alloc =3D pc_alloc_init(); > - v9p->bus =3D qpci_init_pc(NULL); > =20 > - dev =3D qvirtio_pci_device_find(v9p->bus, VIRTIO_ID_9P); > + v9p->qs =3D qs; > + dev =3D qvirtio_pci_device_find(v9p->qs->pcibus, VIRTIO_ID_9P); > g_assert_nonnull(dev); > g_assert_cmphex(dev->vdev.device_type, =3D=3D, VIRTIO_ID_9P); > v9p->dev =3D (QVirtioDevice *) dev; > @@ -75,17 +70,15 @@ static QVirtIO9P *qvirtio_9p_pci_init(void) > qvirtio_set_acknowledge(&qvirtio_pci, v9p->dev); > qvirtio_set_driver(&qvirtio_pci, v9p->dev); > =20 > - v9p->vq =3D qvirtqueue_setup(&qvirtio_pci, v9p->dev, v9p->alloc, 0); > + v9p->vq =3D qvirtqueue_setup(&qvirtio_pci, v9p->dev, v9p->qs->alloc,= 0); > return v9p; > } > =20 > static void qvirtio_9p_pci_free(QVirtIO9P *v9p) > { > - qvirtqueue_cleanup(&qvirtio_pci, v9p->vq, v9p->alloc); > - pc_alloc_uninit(v9p->alloc); > + qvirtqueue_cleanup(&qvirtio_pci, v9p->vq, v9p->qs->alloc); > qvirtio_pci_device_disable(container_of(v9p->dev, QVirtioPCIDevice, = vdev)); > g_free(v9p->dev); > - qpci_free_pc(v9p->bus); > g_free(v9p); > } > =20 > @@ -96,9 +89,11 @@ static void pci_basic_config(void) > size_t tag_len; > char *tag; > int i; > + QOSState *qs; > =20 > - qvirtio_9p_start(); > - v9p =3D qvirtio_9p_pci_init(); > + qs =3D qvirtio_9p_start(); > + g_assert(qs); > + v9p =3D qvirtio_9p_pci_init(qs); > =20 > addr =3D ((QVirtioPCIDevice *) v9p->dev)->addr + VIRTIO_PCI_CONFIG_O= FF(false); > tag_len =3D qvirtio_config_readw(&qvirtio_pci, v9p->dev, > @@ -115,7 +110,7 @@ static void pci_basic_config(void) > g_free(tag); > =20 > qvirtio_9p_pci_free(v9p); > - qvirtio_9p_stop(); > + qvirtio_9p_stop(qs); > } > =20 > int main(int argc, char **argv) > diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c > index 3c4fecc..8cf62f6 100644 > --- a/tests/virtio-blk-test.c > +++ b/tests/virtio-blk-test.c > @@ -10,12 +10,10 @@ > =20 > #include "qemu/osdep.h" > #include "libqtest.h" > +#include "libqos/libqos-pc.h" > #include "libqos/virtio.h" > #include "libqos/virtio-pci.h" > #include "libqos/virtio-mmio.h" > -#include "libqos/pci-pc.h" > -#include "libqos/malloc.h" > -#include "libqos/malloc-pc.h" > #include "libqos/malloc-generic.h" > #include "qemu/bswap.h" > #include "standard-headers/linux/virtio_ids.h" > @@ -58,24 +56,21 @@ static char *drive_create(void) > return tmp_path; > } > =20 > -static QPCIBus *pci_test_start(void) > +static QOSState *pci_test_start(void) > { > - char *cmdline; > + QOSState *qs =3D NULL; > char *tmp_path; > + const char *cmd =3D "-drive if=3Dnone,id=3Ddrive0,file=3D%s,format= =3Draw " > + "-drive if=3Dnone,id=3Ddrive1,file=3D/dev/null,for= mat=3Draw " > + "-device virtio-blk-pci,id=3Ddrv0,drive=3Ddrive0," > + "addr=3D%x.%x"; > =20 > tmp_path =3D drive_create(); > =20 > - cmdline =3D g_strdup_printf("-drive if=3Dnone,id=3Ddrive0,file=3D%s,= format=3Draw " > - "-drive if=3Dnone,id=3Ddrive1,file=3D/dev/null,f= ormat=3Draw " > - "-device virtio-blk-pci,id=3Ddrv0,drive=3Ddrive0= ," > - "addr=3D%x.%x", > - tmp_path, PCI_SLOT, PCI_FN); > - qtest_start(cmdline); > + qs =3D qtest_pc_boot(cmd, tmp_path, PCI_SLOT, PCI_FN); > unlink(tmp_path); > g_free(tmp_path); > - g_free(cmdline); > - > - return qpci_init_pc(NULL); > + return qs; > } > =20 > static void arm_test_start(void) > @@ -279,39 +274,35 @@ static void test_basic(const QVirtioBus *bus, QVirt= ioDevice *dev, > static void pci_basic(void) > { > QVirtioPCIDevice *dev; > - QPCIBus *bus; > + QOSState *qs; > QVirtQueuePCI *vqpci; > - QGuestAllocator *alloc; > void *addr; > =20 > - bus =3D pci_test_start(); > - dev =3D virtio_blk_pci_init(bus, PCI_SLOT); > + qs =3D pci_test_start(); > + g_assert(qs); > + dev =3D virtio_blk_pci_init(qs->pcibus, PCI_SLOT); > =20 > - alloc =3D pc_alloc_init(); > vqpci =3D (QVirtQueuePCI *)qvirtqueue_setup(&qvirtio_pci, &dev->vdev, > - allo= c, 0); > + qs->alloc, 0); > =20 > /* MSI-X is not enabled */ > addr =3D dev->addr + VIRTIO_PCI_CONFIG_OFF(false); > =20 > - test_basic(&qvirtio_pci, &dev->vdev, alloc, &vqpci->vq, > + test_basic(&qvirtio_pci, &dev->vdev, qs->alloc, &vqpci->vq, > (uint64_t)(uintptr_t= )addr); > =20 > /* End test */ > - qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, alloc); > - pc_alloc_uninit(alloc); > + qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, qs->alloc); > qvirtio_pci_device_disable(dev); > g_free(dev); > - qpci_free_pc(bus); > - test_end(); > + qtest_shutdown(qs); > } > =20 > static void pci_indirect(void) > { > QVirtioPCIDevice *dev; > - QPCIBus *bus; > QVirtQueuePCI *vqpci; > - QGuestAllocator *alloc; > + QOSState *qs; > QVirtioBlkReq req; > QVRingIndirectDesc *indirect; > void *addr; > @@ -322,9 +313,10 @@ static void pci_indirect(void) > uint8_t status; > char *data; > =20 > - bus =3D pci_test_start(); > + qs =3D pci_test_start(); > + g_assert(qs); > =20 > - dev =3D virtio_blk_pci_init(bus, PCI_SLOT); > + dev =3D virtio_blk_pci_init(qs->pcibus, PCI_SLOT); > =20 > /* MSI-X is not enabled */ > addr =3D dev->addr + VIRTIO_PCI_CONFIG_OFF(false); > @@ -340,9 +332,8 @@ static void pci_indirect(void) > (1u << VIRTIO_BLK_F_SCSI)); > qvirtio_set_features(&qvirtio_pci, &dev->vdev, features); > =20 > - alloc =3D pc_alloc_init(); > vqpci =3D (QVirtQueuePCI *)qvirtqueue_setup(&qvirtio_pci, &dev->vdev, > - allo= c, 0); > + qs->alloc, 0); > qvirtio_set_driver_ok(&qvirtio_pci, &dev->vdev); > =20 > /* Write request */ > @@ -352,11 +343,11 @@ static void pci_indirect(void) > req.data =3D g_malloc0(512); > strcpy(req.data, "TEST"); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > - indirect =3D qvring_indirect_desc_setup(&dev->vdev, alloc, 2); > + indirect =3D qvring_indirect_desc_setup(&dev->vdev, qs->alloc, 2); > qvring_indirect_desc_add(indirect, req_addr, 528, false); > qvring_indirect_desc_add(indirect, req_addr + 528, 1, true); > free_head =3D qvirtqueue_add_indirect(&vqpci->vq, indirect); > @@ -368,7 +359,7 @@ static void pci_indirect(void) > g_assert_cmpint(status, =3D=3D, 0); > =20 > g_free(indirect); > - guest_free(alloc, req_addr); > + guest_free(qs->alloc, req_addr); > =20 > /* Read request */ > req.type =3D VIRTIO_BLK_T_IN; > @@ -377,11 +368,11 @@ static void pci_indirect(void) > req.data =3D g_malloc0(512); > strcpy(req.data, "TEST"); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > - indirect =3D qvring_indirect_desc_setup(&dev->vdev, alloc, 2); > + indirect =3D qvring_indirect_desc_setup(&dev->vdev, qs->alloc, 2); > qvring_indirect_desc_add(indirect, req_addr, 16, false); > qvring_indirect_desc_add(indirect, req_addr + 16, 513, true); > free_head =3D qvirtqueue_add_indirect(&vqpci->vq, indirect); > @@ -398,28 +389,27 @@ static void pci_indirect(void) > g_free(data); > =20 > g_free(indirect); > - guest_free(alloc, req_addr); > + guest_free(qs->alloc, req_addr); > =20 > /* End test */ > - qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, alloc); > - pc_alloc_uninit(alloc); > + qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, qs->alloc); > qvirtio_pci_device_disable(dev); > g_free(dev); > - qpci_free_pc(bus); > - test_end(); > + qtest_shutdown(qs); > } > =20 > static void pci_config(void) > { > QVirtioPCIDevice *dev; > - QPCIBus *bus; > + QOSState *qs; > int n_size =3D TEST_IMAGE_SIZE / 2; > void *addr; > uint64_t capacity; > =20 > - bus =3D pci_test_start(); > + qs =3D pci_test_start(); > + g_assert(qs); > =20 > - dev =3D virtio_blk_pci_init(bus, PCI_SLOT); > + dev =3D virtio_blk_pci_init(qs->pcibus, PCI_SLOT); > =20 > /* MSI-X is not enabled */ > addr =3D dev->addr + VIRTIO_PCI_CONFIG_OFF(false); > @@ -440,16 +430,15 @@ static void pci_config(void) > =20 > qvirtio_pci_device_disable(dev); > g_free(dev); > - qpci_free_pc(bus); > - test_end(); > + > + qtest_shutdown(qs); > } > =20 > static void pci_msix(void) > { > QVirtioPCIDevice *dev; > - QPCIBus *bus; > + QOSState *qs; > QVirtQueuePCI *vqpci; > - QGuestAllocator *alloc; > QVirtioBlkReq req; > int n_size =3D TEST_IMAGE_SIZE / 2; > void *addr; > @@ -460,13 +449,13 @@ static void pci_msix(void) > uint8_t status; > char *data; > =20 > - bus =3D pci_test_start(); > - alloc =3D pc_alloc_init(); > + qs =3D pci_test_start(); > + g_assert(qs); > =20 > - dev =3D virtio_blk_pci_init(bus, PCI_SLOT); > + dev =3D virtio_blk_pci_init(qs->pcibus, PCI_SLOT); > qpci_msix_enable(dev->pdev); > =20 > - qvirtio_pci_set_msix_configuration_vector(dev, alloc, 0); > + qvirtio_pci_set_msix_configuration_vector(dev, qs->alloc, 0); > =20 > /* MSI-X is enabled */ > addr =3D dev->addr + VIRTIO_PCI_CONFIG_OFF(true); > @@ -483,8 +472,8 @@ static void pci_msix(void) > qvirtio_set_features(&qvirtio_pci, &dev->vdev, features); > =20 > vqpci =3D (QVirtQueuePCI *)qvirtqueue_setup(&qvirtio_pci, &dev->vdev, > - allo= c, 0); > - qvirtqueue_pci_msix_setup(dev, vqpci, alloc, 1); > + qs->alloc, 0); > + qvirtqueue_pci_msix_setup(dev, vqpci, qs->alloc, 1); > =20 > qvirtio_set_driver_ok(&qvirtio_pci, &dev->vdev); > =20 > @@ -504,7 +493,7 @@ static void pci_msix(void) > req.data =3D g_malloc0(512); > strcpy(req.data, "TEST"); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > @@ -519,7 +508,7 @@ static void pci_msix(void) > status =3D readb(req_addr + 528); > g_assert_cmpint(status, =3D=3D, 0); > =20 > - guest_free(alloc, req_addr); > + guest_free(qs->alloc, req_addr); > =20 > /* Read request */ > req.type =3D VIRTIO_BLK_T_IN; > @@ -527,7 +516,7 @@ static void pci_msix(void) > req.sector =3D 0; > req.data =3D g_malloc0(512); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > @@ -549,24 +538,21 @@ static void pci_msix(void) > g_assert_cmpstr(data, =3D=3D, "TEST"); > g_free(data); > =20 > - guest_free(alloc, req_addr); > + guest_free(qs->alloc, req_addr); > =20 > /* End test */ > - qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, alloc); > - pc_alloc_uninit(alloc); > + qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, qs->alloc); > qpci_msix_disable(dev->pdev); > qvirtio_pci_device_disable(dev); > g_free(dev); > - qpci_free_pc(bus); > - test_end(); > + qtest_shutdown(qs); > } > =20 > static void pci_idx(void) > { > QVirtioPCIDevice *dev; > - QPCIBus *bus; > + QOSState *qs; > QVirtQueuePCI *vqpci; > - QGuestAllocator *alloc; > QVirtioBlkReq req; > void *addr; > uint64_t req_addr; > @@ -576,13 +562,13 @@ static void pci_idx(void) > uint8_t status; > char *data; > =20 > - bus =3D pci_test_start(); > - alloc =3D pc_alloc_init(); > + qs =3D pci_test_start(); > + g_assert(qs); > =20 > - dev =3D virtio_blk_pci_init(bus, PCI_SLOT); > + dev =3D virtio_blk_pci_init(qs->pcibus, PCI_SLOT); > qpci_msix_enable(dev->pdev); > =20 > - qvirtio_pci_set_msix_configuration_vector(dev, alloc, 0); > + qvirtio_pci_set_msix_configuration_vector(dev, qs->alloc, 0); > =20 > /* MSI-X is enabled */ > addr =3D dev->addr + VIRTIO_PCI_CONFIG_OFF(true); > @@ -599,8 +585,8 @@ static void pci_idx(void) > qvirtio_set_features(&qvirtio_pci, &dev->vdev, features); > =20 > vqpci =3D (QVirtQueuePCI *)qvirtqueue_setup(&qvirtio_pci, &dev->vdev, > - allo= c, 0); > - qvirtqueue_pci_msix_setup(dev, vqpci, alloc, 1); > + qs->alloc, 0); > + qvirtqueue_pci_msix_setup(dev, vqpci, qs->alloc, 1); > =20 > qvirtio_set_driver_ok(&qvirtio_pci, &dev->vdev); > =20 > @@ -611,7 +597,7 @@ static void pci_idx(void) > req.data =3D g_malloc0(512); > strcpy(req.data, "TEST"); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > @@ -630,7 +616,7 @@ static void pci_idx(void) > req.data =3D g_malloc0(512); > strcpy(req.data, "TEST"); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > @@ -647,7 +633,7 @@ static void pci_idx(void) > QVIRTIO_BLK_TIMEOUT_US); > g_assert_cmpint(status, =3D=3D, 0); > =20 > - guest_free(alloc, req_addr); > + guest_free(qs->alloc, req_addr); > =20 > /* Read request */ > req.type =3D VIRTIO_BLK_T_IN; > @@ -655,7 +641,7 @@ static void pci_idx(void) > req.sector =3D 1; > req.data =3D g_malloc0(512); > =20 > - req_addr =3D virtio_blk_request(alloc, &req, 512); > + req_addr =3D virtio_blk_request(qs->alloc, &req, 512); > =20 > g_free(req.data); > =20 > @@ -676,38 +662,36 @@ static void pci_idx(void) > g_assert_cmpstr(data, =3D=3D, "TEST"); > g_free(data); > =20 > - guest_free(alloc, req_addr); > + guest_free(qs->alloc, req_addr); > =20 > /* End test */ > - qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, alloc); > - pc_alloc_uninit(alloc); > + qvirtqueue_cleanup(&qvirtio_pci, &vqpci->vq, qs->alloc); > qpci_msix_disable(dev->pdev); > qvirtio_pci_device_disable(dev); > g_free(dev); > - qpci_free_pc(bus); > - test_end(); > + qtest_shutdown(qs); > } > =20 > static void pci_hotplug(void) > { > - QPCIBus *bus; > QVirtioPCIDevice *dev; > + QOSState *qs; > =20 > - bus =3D pci_test_start(); > + qs =3D pci_test_start(); > + g_assert(qs); > =20 > /* plug secondary disk */ > qpci_plug_device_test("virtio-blk-pci", "drv1", PCI_SLOT_HP, > "'drive': 'drive1'"); > =20 > - dev =3D virtio_blk_pci_init(bus, PCI_SLOT_HP); > + dev =3D virtio_blk_pci_init(qs->pcibus, PCI_SLOT_HP); > g_assert(dev); > qvirtio_pci_device_disable(dev); > g_free(dev); > =20 > /* unplug secondary disk */ > qpci_unplug_acpi_device_test("drv1", PCI_SLOT_HP); > - qpci_free_pc(bus); > - test_end(); > + qtest_shutdown(qs); > } > =20 > static void mmio_basic(void) > @@ -746,8 +730,8 @@ static void mmio_basic(void) > =20 > /* End test */ > qvirtqueue_cleanup(&qvirtio_mmio, vq, alloc); > - generic_alloc_uninit(alloc); > g_free(dev); > + generic_alloc_uninit(alloc); > test_end(); > } > =20 > diff --git a/tests/virtio-net-test.c b/tests/virtio-net-test.c > index a343a6b..3e83685 100644 > --- a/tests/virtio-net-test.c > +++ b/tests/virtio-net-test.c > @@ -12,12 +12,9 @@ > #include "qemu-common.h" > #include "qemu/sockets.h" > #include "qemu/iov.h" > -#include "libqos/pci-pc.h" > +#include "libqos/libqos-pc.h" > #include "libqos/virtio.h" > #include "libqos/virtio-pci.h" > -#include "libqos/malloc.h" > -#include "libqos/malloc-pc.h" > -#include "libqos/malloc-generic.h" > #include "qemu/bswap.h" > #include "hw/virtio/virtio-net.h" > #include "standard-headers/linux/virtio_ids.h" > @@ -53,16 +50,12 @@ static QVirtioPCIDevice *virtio_net_pci_init(QPCIBus = *bus, int slot) > return dev; > } > =20 > -static QPCIBus *pci_test_start(int socket) > +static QOSState *pci_test_start(int socket) > { > - char *cmdline; > + const char *cmd =3D "-netdev socket,fd=3D%d,id=3Dhs0 -device " > + "virtio-net-pci,netdev=3Dhs0"; > =20 > - cmdline =3D g_strdup_printf("-netdev socket,fd=3D%d,id=3Dhs0 -device= " > - "virtio-net-pci,netdev=3Dhs0", socket); > - qtest_start(cmdline); > - g_free(cmdline); > - > - return qpci_init_pc(NULL); > + return qtest_pc_boot(cmd, socket); > } > =20 > static void driver_init(const QVirtioBus *bus, QVirtioDevice *dev) > @@ -205,9 +198,8 @@ static void stop_cont_test(const QVirtioBus *bus, QVi= rtioDevice *dev, > static void pci_basic(gconstpointer data) > { > QVirtioPCIDevice *dev; > - QPCIBus *bus; > + QOSState *qs; > QVirtQueuePCI *tx, *rx; > - QGuestAllocator *alloc; > void (*func) (const QVirtioBus *bus, > QVirtioDevice *dev, > QGuestAllocator *alloc, > @@ -219,28 +211,26 @@ static void pci_basic(gconstpointer data) > ret =3D socketpair(PF_UNIX, SOCK_STREAM, 0, sv); > g_assert_cmpint(ret, !=3D, -1); > =20 > - bus =3D pci_test_start(sv[1]); > - dev =3D virtio_net_pci_init(bus, PCI_SLOT); > + qs =3D pci_test_start(sv[1]); > + g_assert(qs); > + dev =3D virtio_net_pci_init(qs->pcibus, PCI_SLOT); > =20 > - alloc =3D pc_alloc_init(); > rx =3D (QVirtQueuePCI *)qvirtqueue_setup(&qvirtio_pci, &dev->vdev, > - alloc, 0); > + qs->alloc, 0); > tx =3D (QVirtQueuePCI *)qvirtqueue_setup(&qvirtio_pci, &dev->vdev, > - alloc, 1); > + qs->alloc, 1); > =20 > driver_init(&qvirtio_pci, &dev->vdev); > - func(&qvirtio_pci, &dev->vdev, alloc, &rx->vq, &tx->vq, sv[0]); > + func(&qvirtio_pci, &dev->vdev, qs->alloc, &rx->vq, &tx->vq, sv[0]); > =20 > /* End test */ > close(sv[0]); > - qvirtqueue_cleanup(&qvirtio_pci, &tx->vq, alloc); > - qvirtqueue_cleanup(&qvirtio_pci, &rx->vq, alloc); > - pc_alloc_uninit(alloc); > + qvirtqueue_cleanup(&qvirtio_pci, &tx->vq, qs->alloc); > + qvirtqueue_cleanup(&qvirtio_pci, &rx->vq, qs->alloc); > qvirtio_pci_device_disable(dev); > g_free(dev->pdev); > g_free(dev); > - qpci_free_pc(bus); > - test_end(); > + qtest_shutdown(qs); > } > #endif > =20 > diff --git a/tests/virtio-scsi-test.c b/tests/virtio-scsi-test.c > index 79088bb..721ae1f 100644 > --- a/tests/virtio-scsi-test.c > +++ b/tests/virtio-scsi-test.c > @@ -11,12 +11,9 @@ > #include "qemu/osdep.h" > #include "libqtest.h" > #include "block/scsi.h" > +#include "libqos/libqos-pc.h" > #include "libqos/virtio.h" > #include "libqos/virtio-pci.h" > -#include "libqos/pci-pc.h" > -#include "libqos/malloc.h" > -#include "libqos/malloc-pc.h" > -#include "libqos/malloc-generic.h" > #include "standard-headers/linux/virtio_ids.h" > #include "standard-headers/linux/virtio_pci.h" > #include "standard-headers/linux/virtio_scsi.h" > @@ -29,28 +26,23 @@ > =20 > typedef struct { > QVirtioDevice *dev; > - QGuestAllocator *alloc; > - QPCIBus *bus; > + QOSState *qs; > int num_queues; > QVirtQueue *vq[MAX_NUM_QUEUES + 2]; > } QVirtIOSCSI; > =20 > -static void qvirtio_scsi_start(const char *extra_opts) > +static QOSState *qvirtio_scsi_start(const char *extra_opts) > { > - char *cmdline; > - > - cmdline =3D g_strdup_printf( > - "-drive id=3Ddrv0,if=3Dnone,file=3D/dev/null,format=3Dra= w " > - "-device virtio-scsi-pci,id=3Dvs0 " > - "-device scsi-hd,bus=3Dvs0.0,drive=3Ddrv0 %s", > - extra_opts ? : ""); > - qtest_start(cmdline); > - g_free(cmdline); > + const char *cmd =3D "-drive id=3Ddrv0,if=3Dnone,file=3D/dev/null,for= mat=3Draw " > + "-device virtio-scsi-pci,id=3Dvs0 " > + "-device scsi-hd,bus=3Dvs0.0,drive=3Ddrv0 %s"; > + > + return qtest_pc_boot(cmd, extra_opts ? : ""); > } > =20 > -static void qvirtio_scsi_stop(void) > +static void qvirtio_scsi_stop(QOSState *qs) > { > - qtest_end(); > + qtest_shutdown(qs); > } > =20 > static void qvirtio_scsi_pci_free(QVirtIOSCSI *vs) > @@ -58,12 +50,10 @@ static void qvirtio_scsi_pci_free(QVirtIOSCSI *vs) > int i; > =20 > for (i =3D 0; i < vs->num_queues + 2; i++) { > - qvirtqueue_cleanup(&qvirtio_pci, vs->vq[i], vs->alloc); > + qvirtqueue_cleanup(&qvirtio_pci, vs->vq[i], vs->qs->alloc); > } > - pc_alloc_uninit(vs->alloc); > qvirtio_pci_device_disable(container_of(vs->dev, QVirtioPCIDevice, v= dev)); > g_free(vs->dev); > - qpci_free_pc(vs->bus); > } > =20 > static uint64_t qvirtio_scsi_alloc(QVirtIOSCSI *vs, size_t alloc_size, > @@ -71,7 +61,7 @@ static uint64_t qvirtio_scsi_alloc(QVirtIOSCSI *vs, siz= e_t alloc_size, > { > uint64_t addr; > =20 > - addr =3D guest_alloc(vs->alloc, alloc_size); > + addr =3D guest_alloc(vs->qs->alloc, alloc_size); > if (data) { > memwrite(addr, data, alloc_size); > } > @@ -128,10 +118,10 @@ static uint8_t virtio_scsi_do_command(QVirtIOSCSI *= vs, const uint8_t *cdb, > memread(resp_addr, resp_out, sizeof(*resp_out)); > } > =20 > - guest_free(vs->alloc, req_addr); > - guest_free(vs->alloc, resp_addr); > - guest_free(vs->alloc, data_in_addr); > - guest_free(vs->alloc, data_out_addr); > + guest_free(vs->qs->alloc, req_addr); > + guest_free(vs->qs->alloc, resp_addr); > + guest_free(vs->qs->alloc, data_in_addr); > + guest_free(vs->qs->alloc, data_out_addr); > return response; > } > =20 > @@ -145,10 +135,12 @@ static QVirtIOSCSI *qvirtio_scsi_pci_init(int slot) > int i; > =20 > vs =3D g_new0(QVirtIOSCSI, 1); > - vs->alloc =3D pc_alloc_init(); > - vs->bus =3D qpci_init_pc(NULL); > =20 > - dev =3D qvirtio_pci_device_find(vs->bus, VIRTIO_ID_SCSI); > + vs->qs =3D qvirtio_scsi_start("-drive file=3Dblkdebug::null-co://," > + "if=3Dnone,id=3Ddr1,format=3Draw,file.al= ign=3D4k " > + "-device scsi-disk,drive=3Ddr1,lun=3D0,s= csi-id=3D1"); > + g_assert(vs->qs); > + dev =3D qvirtio_pci_device_find(vs->qs->pcibus, VIRTIO_ID_SCSI); > vs->dev =3D (QVirtioDevice *)dev; > g_assert(dev !=3D NULL); > g_assert_cmphex(vs->dev->device_type, =3D=3D, VIRTIO_ID_SCSI); > @@ -165,7 +157,7 @@ static QVirtIOSCSI *qvirtio_scsi_pci_init(int slot) > g_assert_cmpint(vs->num_queues, <, MAX_NUM_QUEUES); > =20 > for (i =3D 0; i < vs->num_queues + 2; i++) { > - vs->vq[i] =3D qvirtqueue_setup(&qvirtio_pci, vs->dev, vs->alloc,= i); > + vs->vq[i] =3D qvirtqueue_setup(&qvirtio_pci, vs->dev, vs->qs->al= loc, i); > } > =20 > /* Clear the POWER ON OCCURRED unit attention */ > @@ -184,15 +176,20 @@ static QVirtIOSCSI *qvirtio_scsi_pci_init(int slot) > /* Tests only initialization so far. TODO: Replace with functional tests= */ > static void pci_nop(void) > { > - qvirtio_scsi_start(NULL); > - qvirtio_scsi_stop(); > + QOSState *qs; > + > + qs =3D qvirtio_scsi_start(NULL); > + g_assert(qs); > + qvirtio_scsi_stop(qs); > } > =20 > static void hotplug(void) > { > QDict *response; > + QOSState *qs; > =20 > - qvirtio_scsi_start("-drive id=3Ddrv1,if=3Dnone,file=3D/dev/null,form= at=3Draw"); > + qs =3D qvirtio_scsi_start("-drive id=3Ddrv1,if=3Dnone,file=3D/dev/nu= ll,format=3Draw"); > + g_assert(qs); > response =3D qmp("{\"execute\": \"device_add\"," > " \"arguments\": {" > " \"driver\": \"scsi-hd\"," > @@ -214,7 +211,7 @@ static void hotplug(void) > g_assert(qdict_haskey(response, "event")); > g_assert(!strcmp(qdict_get_str(response, "event"), "DEVICE_DELETED")= ); > QDECREF(response); > - qvirtio_scsi_stop(); > + qvirtio_scsi_stop(qs); > } > =20 > /* Test WRITE SAME with the lba not aligned */ > @@ -230,9 +227,6 @@ static void test_unaligned_write_same(void) > 0x41, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x33, 0x00, 0x00 > }; > =20 > - qvirtio_scsi_start("-drive file=3Dblkdebug::null-co://,if=3Dnone,id= =3Ddr1" > - ",format=3Draw,file.align=3D4k " > - "-device scsi-disk,drive=3Ddr1,lun=3D0,scsi-id=3D= 1"); > vs =3D qvirtio_scsi_pci_init(PCI_SLOT); > =20 > g_assert_cmphex(0, =3D=3D, > @@ -242,7 +236,7 @@ static void test_unaligned_write_same(void) > virtio_scsi_do_command(vs, write_same_cdb_2, NULL, 0, buf2, 512,= NULL)); > =20 > qvirtio_scsi_pci_free(vs); > - qvirtio_scsi_stop(); > + qvirtio_scsi_stop(vs->qs); > } > =20 > int main(int argc, char **argv) --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --1WN/MJ7JJGqVzwIW Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJX7b91AAoJEGw4ysog2bOSLQ8P/2P9TaL1nJRNFhyi4ixMBklr fL7X6kMfiUx9Cm+WNIx4fO14JU9gkbYzNdcGeiK/cGognTfM/6uozdoD/BIm2kle XrlThzAAUPjuZh6zhoP7mXCsU8de13ZonQ5v5sNYHNUopbrCAp4hRN9pRavsatY+ VRf1iSM+C/dSCQdcCdyZW1PKwV5reaBbh3cKS7i1bGgnBGY43WQxwnEfE0v/A+xZ dq5jnGXSlLggJoFji8wsMBSf0uEv88WW650YDJnJB+Kab+z9Iod4M3iwSlb5mC0M kDPnkx0Q3MSBHBFy8sIn5m9f+61rFt4JrY4/AoFzr3qAyqwLnO7y4xQbOA97mUIp fTY2x7Wkafjtekjh+9fLo2kbwp+7Uy2OJpndL1BDN01/lEpRJXvdoB2+8K12hT4+ NuEmDrxKysZOZuELQQWpnfAMk4AOp1iEG/O7I8dew7MDnAJ3CrVFsgRd3SC/xseO dVBRCyugzWBhDViSEltSmRNUWTMOEZWcs5rIU52FaxVHVHI6xsQ+/ErObkFcBVc9 PKtk8KFDY8HKZy20OjFiDAxohi2IKTDbQIQm5E0qyD51AO0+MzwvMuZgNVzDbuHe WwKh3Dz6PBkcRhVqmOWXHv/vz2KjimX5oePzrHy99H6IwjCVBhvObOHBr34Lc9zd yAZpJnZksMkBGUmA5X60 =YW6q -----END PGP SIGNATURE----- --1WN/MJ7JJGqVzwIW--