summary refs log tree commit diff stats
path: root/tests/libqos/libqos.c
diff options
context:
space:
mode:
authorLaurent Vivier <lvivier@redhat.com>2016-09-29 12:32:45 +0200
committerDavid Gibson <david@gibson.dropbear.id.au>2016-10-06 16:15:53 +1100
commit2ecd7e2f25a57e8966a15ee50a0afacd4ec067da (patch)
tree1b66fc28278e9e2955d67698659309c222bab97c /tests/libqos/libqos.c
parentcf716b31cba278a6dbff585d58fa29d1ae2fe334 (diff)
downloadfocaccia-qemu-2ecd7e2f25a57e8966a15ee50a0afacd4ec067da.tar.gz
focaccia-qemu-2ecd7e2f25a57e8966a15ee50a0afacd4ec067da.zip
libqos: add PCI management in qtest_vboot()/qtest_shutdown()
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'tests/libqos/libqos.c')
-rw-r--r--tests/libqos/libqos.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c
index a852dc5f8e..d842bf5126 100644
--- a/tests/libqos/libqos.c
+++ b/tests/libqos/libqos.c
@@ -20,8 +20,13 @@ QOSState *qtest_vboot(QOSOps *ops, const char *cmdline_fmt, va_list ap)
     cmdline = g_strdup_vprintf(cmdline_fmt, ap);
     qs->qts = qtest_start(cmdline);
     qs->ops = ops;
-    if (ops && ops->init_allocator) {
-        qs->alloc = ops->init_allocator(ALLOC_NO_FLAGS);
+    if (ops) {
+        if (ops->init_allocator) {
+            qs->alloc = ops->init_allocator(ALLOC_NO_FLAGS);
+        }
+        if (ops->qpci_init && qs->alloc) {
+            qs->pcibus = ops->qpci_init(qs->alloc);
+        }
     }
 
     g_free(cmdline);
@@ -49,9 +54,15 @@ QOSState *qtest_boot(QOSOps *ops, const char *cmdline_fmt, ...)
  */
 void qtest_shutdown(QOSState *qs)
 {
-    if (qs->alloc && qs->ops && qs->ops->uninit_allocator) {
-        qs->ops->uninit_allocator(qs->alloc);
-        qs->alloc = NULL;
+    if (qs->ops) {
+        if (qs->pcibus && qs->ops->qpci_free) {
+            qs->ops->qpci_free(qs->pcibus);
+            qs->pcibus = NULL;
+        }
+        if (qs->alloc && qs->ops->uninit_allocator) {
+            qs->ops->uninit_allocator(qs->alloc);
+            qs->alloc = NULL;
+        }
     }
     qtest_quit(qs->qts);
     g_free(qs);