From 3db9f6a324bf0c78fd3dcfc08aff68d267420859 Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Fri, 6 Sep 2019 17:17:24 +0200
Subject: [PATCH 1/8] tests/Makefile: test-char does not need libqtest

No need to link the libqtest objects here.

Message-Id: <20191218103059.11729-2-thuth@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/Makefile.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 7a767bf114..48200d596c 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -543,7 +543,7 @@ tests/check-qlit$(EXESUF): tests/check-qlit.o $(test-util-obj-y)
 tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y)
 tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y)
 
-tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) $(qtest-obj-y) $(test-io-obj-y) $(chardev-obj-y) tests/socket-helpers.o
+tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) $(test-io-obj-y) $(chardev-obj-y) tests/socket-helpers.o
 tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y)
 tests/test-aio$(EXESUF): tests/test-aio.o $(test-block-obj-y)
 tests/test-aio-multithread$(EXESUF): tests/test-aio-multithread.o $(test-block-obj-y)

From 6f5b752e963d39fb86369bc1bdf57374e148cd6d Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Mon, 9 Sep 2019 13:35:39 +0200
Subject: [PATCH 2/8] tests/ptimer: Remove unnecessary inclusion of libqtest.h

ptimer-test is a unit test, not a qtest, so libqtest.h is not
required here.

Message-Id: <20191218103059.11729-3-thuth@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/ptimer-test.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tests/ptimer-test.c b/tests/ptimer-test.c
index e16c30ce57..9176b96c1c 100644
--- a/tests/ptimer-test.c
+++ b/tests/ptimer-test.c
@@ -14,7 +14,6 @@
 #include "qemu/main-loop.h"
 #include "hw/ptimer.h"
 
-#include "libqtest.h"
 #include "ptimer-test.h"
 
 static bool triggered;

From 55e997a724c4be61687cadf0d89dac1d33cce937 Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Fri, 6 Sep 2019 17:09:23 +0200
Subject: [PATCH 3/8] tests/Makefile: Remove 'tests/' and '$(EXESUF)' from the
 check-qtest variables

It's much easier if we simply add the folder prefix and the exe suffix
later via a substitution instead.

Message-Id: <20191218103059.11729-4-thuth@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/Makefile.include | 242 +++++++++++++++++++++--------------------
 1 file changed, 123 insertions(+), 119 deletions(-)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 48200d596c..262f334dfc 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -152,156 +152,160 @@ check-block-$(call land,$(CONFIG_POSIX),$(CONFIG_SOFTMMU)) += tests/check-block.
 # All QTests for now are POSIX-only, but the dependencies are
 # really in libqtest, not in the testcases themselves.
 
-check-qtest-generic-y += tests/qmp-test$(EXESUF)
-check-qtest-generic-y += tests/qmp-cmd-test$(EXESUF)
-check-qtest-generic-$(CONFIG_MODULES) += tests/modules-test$(EXESUF)
+check-qtest-generic-y += qmp-test
+check-qtest-generic-y += qmp-cmd-test
+check-qtest-generic-$(CONFIG_MODULES) += modules-test
+
+check-qtest-generic-y += device-introspect-test
+check-qtest-generic-y += cdrom-test
 
-check-qtest-generic-y += tests/device-introspect-test$(EXESUF)
-check-qtest-generic-y += tests/cdrom-test$(EXESUF)
 DBUS_DAEMON := $(shell which dbus-daemon 2>/dev/null)
 ifneq ($(GDBUS_CODEGEN),)
 ifneq ($(DBUS_DAEMON),)
-check-qtest-pci-$(CONFIG_GIO) += tests/dbus-vmstate-test$(EXESUF)
+check-qtest-pci-$(CONFIG_GIO) += dbus-vmstate-test
 endif
 endif
 
-check-qtest-pci-$(CONFIG_RTL8139_PCI) += tests/rtl8139-test$(EXESUF)
-check-qtest-pci-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
-check-qtest-pci-$(CONFIG_HDA) += tests/intel-hda-test$(EXESUF)
-check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
-check-qtest-i386-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
-check-qtest-i386-y += tests/fdc-test$(EXESUF)
-check-qtest-i386-y += tests/ide-test$(EXESUF)
-check-qtest-i386-$(CONFIG_TOOLS) += tests/ahci-test$(EXESUF)
-check-qtest-i386-y += tests/hd-geo-test$(EXESUF)
-check-qtest-i386-y += tests/boot-order-test$(EXESUF)
-check-qtest-i386-y += tests/bios-tables-test$(EXESUF)
-check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF)
-check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
-check-qtest-i386-y += tests/rtc-test$(EXESUF)
-check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += tests/ipmi-kcs-test$(EXESUF)
+check-qtest-pci-$(CONFIG_RTL8139_PCI) += rtl8139-test
+check-qtest-pci-$(CONFIG_VGA) += display-vga-test
+check-qtest-pci-$(CONFIG_HDA) += intel-hda-test
+check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += ivshmem-test
+
+check-qtest-i386-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-i386-y += fdc-test
+check-qtest-i386-y += ide-test
+check-qtest-i386-$(CONFIG_TOOLS) += ahci-test
+check-qtest-i386-y += hd-geo-test
+check-qtest-i386-y += boot-order-test
+check-qtest-i386-y += bios-tables-test
+check-qtest-i386-$(CONFIG_SGA) += boot-serial-test
+check-qtest-i386-$(CONFIG_SLIRP) += pxe-test
+check-qtest-i386-y += rtc-test
+check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += ipmi-kcs-test
 ifdef CONFIG_LINUX
-check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += tests/ipmi-bt-test$(EXESUF)
+check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += ipmi-bt-test
 endif
-check-qtest-i386-y += tests/i440fx-test$(EXESUF)
-check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
-check-qtest-i386-y += tests/device-plug-test$(EXESUF)
-check-qtest-i386-y += tests/drive_del-test$(EXESUF)
-check-qtest-i386-$(CONFIG_WDT_IB700) += tests/wdt_ib700-test$(EXESUF)
-check-qtest-i386-y += tests/tco-test$(EXESUF)
+check-qtest-i386-y += i440fx-test
+check-qtest-i386-y += fw_cfg-test
+check-qtest-i386-y += device-plug-test
+check-qtest-i386-y += drive_del-test
+check-qtest-i386-$(CONFIG_WDT_IB700) += wdt_ib700-test
+check-qtest-i386-y += tco-test
 check-qtest-i386-y += $(check-qtest-pci-y)
-check-qtest-i386-$(CONFIG_PVPANIC) += tests/pvpanic-test$(EXESUF)
-check-qtest-i386-$(CONFIG_I82801B11) += tests/i82801b11-test$(EXESUF)
-check-qtest-i386-$(CONFIG_IOH3420) += tests/ioh3420-test$(EXESUF)
-check-qtest-i386-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
-check-qtest-i386-$(call land,$(CONFIG_USB_EHCI),$(CONFIG_USB_UHCI)) += tests/usb-hcd-ehci-test$(EXESUF)
-check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
-check-qtest-i386-y += tests/cpu-plug-test$(EXESUF)
-check-qtest-i386-y += tests/q35-test$(EXESUF)
-check-qtest-i386-y += tests/vmgenid-test$(EXESUF)
-check-qtest-i386-$(CONFIG_TPM_CRB) += tests/tpm-crb-swtpm-test$(EXESUF)
-check-qtest-i386-$(CONFIG_TPM_CRB) += tests/tpm-crb-test$(EXESUF)
-check-qtest-i386-$(CONFIG_TPM_TIS) += tests/tpm-tis-swtpm-test$(EXESUF)
-check-qtest-i386-$(CONFIG_TPM_TIS) += tests/tpm-tis-test$(EXESUF)
-check-qtest-i386-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
-check-qtest-i386-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
-check-qtest-i386-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
-check-qtest-i386-y += tests/migration-test$(EXESUF)
-check-qtest-i386-y += tests/test-x86-cpuid-compat$(EXESUF)
-check-qtest-i386-y += tests/numa-test$(EXESUF)
+check-qtest-i386-$(CONFIG_PVPANIC) += pvpanic-test
+check-qtest-i386-$(CONFIG_I82801B11) += i82801b11-test
+check-qtest-i386-$(CONFIG_IOH3420) += ioh3420-test
+check-qtest-i386-$(CONFIG_USB_UHCI) += usb-hcd-uhci-test
+check-qtest-i386-$(call land,$(CONFIG_USB_EHCI),$(CONFIG_USB_UHCI)) += usb-hcd-ehci-test
+check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += usb-hcd-xhci-test
+check-qtest-i386-y += cpu-plug-test
+check-qtest-i386-y += q35-test
+check-qtest-i386-y += vmgenid-test
+check-qtest-i386-$(CONFIG_TPM_CRB) += tpm-crb-swtpm-test
+check-qtest-i386-$(CONFIG_TPM_CRB) += tpm-crb-test
+check-qtest-i386-$(CONFIG_TPM_TIS) += tpm-tis-swtpm-test
+check-qtest-i386-$(CONFIG_TPM_TIS) += tpm-tis-test
+check-qtest-i386-$(CONFIG_SLIRP) += test-netfilter
+check-qtest-i386-$(CONFIG_POSIX) += test-filter-mirror
+check-qtest-i386-$(CONFIG_RTL8139_PCI) += test-filter-redirector
+check-qtest-i386-y += migration-test
+check-qtest-i386-y += test-x86-cpuid-compat
+check-qtest-i386-y += numa-test
+
 check-qtest-x86_64-y += $(check-qtest-i386-y)
 
-check-qtest-alpha-y += tests/boot-serial-test$(EXESUF)
-check-qtest-alpha-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
+check-qtest-alpha-y += boot-serial-test
+check-qtest-alpha-$(CONFIG_VGA) += display-vga-test
 
-check-qtest-hppa-y += tests/boot-serial-test$(EXESUF)
-check-qtest-hppa-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
+check-qtest-hppa-y += boot-serial-test
+check-qtest-hppa-$(CONFIG_VGA) += display-vga-test
 
-check-qtest-m68k-y = tests/boot-serial-test$(EXESUF)
+check-qtest-m68k-y = boot-serial-test
 
-check-qtest-microblaze-y += tests/boot-serial-test$(EXESUF)
+check-qtest-microblaze-y += boot-serial-test
 
-check-qtest-mips-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
-check-qtest-mips-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
+check-qtest-mips-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-mips-$(CONFIG_VGA) += display-vga-test
 
-check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
-check-qtest-mips64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
+check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-mips64-$(CONFIG_VGA) += display-vga-test
 
-check-qtest-mips64el-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
-check-qtest-mips64el-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
+check-qtest-mips64el-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-mips64el-$(CONFIG_VGA) += display-vga-test
 
-check-qtest-moxie-y += tests/boot-serial-test$(EXESUF)
+check-qtest-moxie-y += boot-serial-test
 
-check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
-check-qtest-ppc-y += tests/boot-order-test$(EXESUF)
-check-qtest-ppc-y += tests/prom-env-test$(EXESUF)
-check-qtest-ppc-y += tests/drive_del-test$(EXESUF)
-check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
-check-qtest-ppc-$(CONFIG_M48T59) += tests/m48t59-test$(EXESUF)
+check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-ppc-y += boot-order-test
+check-qtest-ppc-y += prom-env-test
+check-qtest-ppc-y += drive_del-test
+check-qtest-ppc-y += boot-serial-test
+check-qtest-ppc-$(CONFIG_M48T59) += m48t59-test
 
 check-qtest-ppc64-y += $(check-qtest-ppc-y)
-check-qtest-ppc64-$(CONFIG_PSERIES) += tests/device-plug-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_POWERNV) += tests/pnv-xscom-test$(EXESUF)
-check-qtest-ppc64-y += tests/migration-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_PSERIES) += tests/rtas-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
-check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
-check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
-check-qtest-ppc64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
-check-qtest-ppc64-y += tests/numa-test$(EXESUF)
-check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
-check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF)
+check-qtest-ppc64-$(CONFIG_PSERIES) += device-plug-test
+check-qtest-ppc64-$(CONFIG_POWERNV) += pnv-xscom-test
+check-qtest-ppc64-y += migration-test
+check-qtest-ppc64-$(CONFIG_PSERIES) += rtas-test
+check-qtest-ppc64-$(CONFIG_SLIRP) += pxe-test
+check-qtest-ppc64-$(CONFIG_USB_UHCI) += usb-hcd-uhci-test
+check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += usb-hcd-xhci-test
+check-qtest-ppc64-$(CONFIG_SLIRP) += test-netfilter
+check-qtest-ppc64-$(CONFIG_POSIX) += test-filter-mirror
+check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += test-filter-redirector
+check-qtest-ppc64-$(CONFIG_VGA) += display-vga-test
+check-qtest-ppc64-y += numa-test
+check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += ivshmem-test
+check-qtest-ppc64-y += cpu-plug-test
 
-check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
+check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = endianness-test
 
-check-qtest-sh4eb-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
+check-qtest-sh4eb-$(CONFIG_ISA_TESTDEV) = endianness-test
 
-check-qtest-sparc-y += tests/prom-env-test$(EXESUF)
-check-qtest-sparc-y += tests/m48t59-test$(EXESUF)
-check-qtest-sparc-y += tests/boot-serial-test$(EXESUF)
+check-qtest-sparc-y += prom-env-test
+check-qtest-sparc-y += m48t59-test
+check-qtest-sparc-y += boot-serial-test
 
-check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
-check-qtest-sparc64-y += tests/prom-env-test$(EXESUF)
-check-qtest-sparc64-y += tests/boot-serial-test$(EXESUF)
+check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-sparc64-y += prom-env-test
+check-qtest-sparc64-y += boot-serial-test
 
-check-qtest-arm-y += tests/arm-cpu-features$(EXESUF)
-check-qtest-arm-y += tests/microbit-test$(EXESUF)
-check-qtest-arm-y += tests/m25p80-test$(EXESUF)
-check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF)
-check-qtest-arm-y += tests/boot-serial-test$(EXESUF)
-check-qtest-arm-y += tests/hexloader-test$(EXESUF)
-check-qtest-arm-$(CONFIG_PFLASH_CFI02) += tests/pflash-cfi02-test$(EXESUF)
+check-qtest-arm-y += arm-cpu-features
+check-qtest-arm-y += microbit-test
+check-qtest-arm-y += m25p80-test
+check-qtest-arm-y += test-arm-mptimer
+check-qtest-arm-y += boot-serial-test
+check-qtest-arm-y += hexloader-test
+check-qtest-arm-$(CONFIG_PFLASH_CFI02) += pflash-cfi02-test
+
+check-qtest-aarch64-y += arm-cpu-features
+check-qtest-aarch64-y += numa-test
+check-qtest-aarch64-y += boot-serial-test
+check-qtest-aarch64-y += migration-test
 
-check-qtest-aarch64-y += tests/arm-cpu-features$(EXESUF)
-check-qtest-aarch64-y += tests/numa-test$(EXESUF)
-check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
-check-qtest-aarch64-y += tests/migration-test$(EXESUF)
 # TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional
 ifneq ($(ARCH),arm)
-check-qtest-aarch64-y += tests/bios-tables-test$(EXESUF)
+check-qtest-aarch64-y += bios-tables-test
 endif
 
 check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
 
 check-qtest-xtensaeb-y += $(check-qtest-xtensa-y)
 
-check-qtest-s390x-y = tests/boot-serial-test$(EXESUF)
-check-qtest-s390x-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
-check-qtest-s390x-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
-check-qtest-s390x-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
-check-qtest-s390x-$(CONFIG_POSIX) += tests/test-filter-redirector$(EXESUF)
-check-qtest-s390x-y += tests/drive_del-test$(EXESUF)
-check-qtest-s390x-y += tests/device-plug-test$(EXESUF)
-check-qtest-s390x-y += tests/virtio-ccw-test$(EXESUF)
-check-qtest-s390x-y += tests/cpu-plug-test$(EXESUF)
-check-qtest-s390x-y += tests/migration-test$(EXESUF)
+check-qtest-s390x-y = boot-serial-test
+check-qtest-s390x-$(CONFIG_SLIRP) += pxe-test
+check-qtest-s390x-$(CONFIG_SLIRP) += test-netfilter
+check-qtest-s390x-$(CONFIG_POSIX) += test-filter-mirror
+check-qtest-s390x-$(CONFIG_POSIX) += test-filter-redirector
+check-qtest-s390x-y += drive_del-test
+check-qtest-s390x-y += device-plug-test
+check-qtest-s390x-y += virtio-ccw-test
+check-qtest-s390x-y += cpu-plug-test
+check-qtest-s390x-y += migration-test
 
-check-qtest-generic-y += tests/machine-none-test$(EXESUF)
-check-qtest-generic-y += tests/qom-test$(EXESUF)
-check-qtest-generic-y += tests/test-hmp$(EXESUF)
+check-qtest-generic-y += machine-none-test
+check-qtest-generic-y += qom-test
+check-qtest-generic-y += test-hmp
 
 qapi-schema += alternate-any.json
 qapi-schema += alternate-array.json
@@ -797,7 +801,7 @@ qos-test-obj-y += tests/vmxnet3-test.o
 check-unit-y += tests/test-qgraph$(EXESUF)
 tests/test-qgraph$(EXESUF): tests/test-qgraph.o $(libqgraph-obj-y)
 
-check-qtest-generic-y += tests/qos-test$(EXESUF)
+check-qtest-generic-y += qos-test
 tests/qos-test$(EXESUF): $(qos-test-obj-y)
 
 tests/qmp-test$(EXESUF): tests/qmp-test.o
@@ -882,8 +886,8 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
 TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
 ifeq ($(CONFIG_POSIX),y)
 QTEST_TARGETS = $(TARGETS)
-check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
-check-qtest-y += $(check-qtest-generic-y)
+check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y:%=tests/%$(EXESUF)))
+check-qtest-y += $(check-qtest-generic-y:%=tests/%$(EXESUF))
 else
 QTEST_TARGETS =
 endif
@@ -933,7 +937,7 @@ endef
 
 .PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
 $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: %-softmmu/all $(check-qtest-y)
-	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
+	$(call do_test_human,$(check-qtest-$*-y:%=tests/%$(EXESUF)) $(check-qtest-generic-y:%=tests/%$(EXESUF)), \
 	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
 
@@ -946,7 +950,7 @@ check-speed: $(check-speed-y)
 # gtester tests with TAP output
 
 $(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: %-softmmu/all $(check-qtest-y)
-	$(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
+	$(call do_test_tap, $(check-qtest-$*-y:%=tests/%$(EXESUF)) $(check-qtest-generic-y:%=tests/%$(EXESUF)), \
 	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
 
@@ -1212,7 +1216,7 @@ endif
 check: check-block check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
 check-clean:
 	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
-	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
+	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y:%=tests/%$(EXESUF))) $(check-qtest-generic-y:%=tests/%$(EXESUF)))
 	rm -f tests/test-qapi-gen-timestamp
 	rm -f tests/dbus-vmstate1-gen-timestamp
 	rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)

From 10ae5b303a0de07f0659a2c90d9c1266b3908b97 Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Mon, 9 Sep 2019 14:00:55 +0200
Subject: [PATCH 4/8] tests/Makefile: Separate unit test dependencies from
 qtest dependencies

Some of the unit test dependencies are declared right in the block of
the qtest dependencies. Let's move them to the other unit tests instead.

Message-Id: <20191218103059.11729-5-thuth@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/Makefile.include | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 262f334dfc..6bacf14d3f 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -597,6 +597,11 @@ tests/test-vmstate$(EXESUF): tests/test-vmstate.o \
 tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-obj-y)
 tests/test-base64$(EXESUF): tests/test-base64.o $(test-util-obj-y)
 tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o
+tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
+tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
+tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
+tests/test-uuid$(EXESUF): tests/test-uuid.o $(test-util-obj-y)
+tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y)
 
 tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y)
 
@@ -851,9 +856,6 @@ tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
 tests/cpu-plug-test$(EXESUF): tests/cpu-plug-test.o
 tests/migration-test$(EXESUF): tests/migration-test.o tests/migration-helpers.o
 tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
-tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
-tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
-tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
 tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
 tests/test-filter-mirror$(EXESUF): tests/test-filter-mirror.o $(qtest-obj-y)
 tests/test-filter-redirector$(EXESUF): tests/test-filter-redirector.o $(qtest-obj-y)
@@ -861,9 +863,7 @@ tests/test-x86-cpuid-compat$(EXESUF): tests/test-x86-cpuid-compat.o $(qtest-obj-
 tests/ivshmem-test$(EXESUF): tests/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
 tests/dbus-vmstate-test$(EXESUF): tests/dbus-vmstate-test.o tests/migration-helpers.o tests/dbus-vmstate1.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
 tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
-tests/test-uuid$(EXESUF): tests/test-uuid.o $(test-util-obj-y)
 tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o
-tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y)
 tests/numa-test$(EXESUF): tests/numa-test.o
 tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o
 tests/cdrom-test$(EXESUF): tests/cdrom-test.o tests/boot-sector.o $(libqos-obj-y)

From 1e8a1fae7464ef79c9e50aa0f807d2c511be3c8e Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Mon, 9 Sep 2019 12:04:01 +0200
Subject: [PATCH 5/8] test: Move qtests to a separate directory

The tests directory itself is pretty overcrowded, and it's hard to
see which test belongs to which test subsystem (unit, qtest, ...).
Let's move the qtests to a separate folder for more clarity.

Message-Id: <20191218103059.11729-6-thuth@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 .gitlab-ci.yml                                |  11 +-
 MAINTAINERS                                   |  79 +++----
 configure                                     |   4 +-
 tests/Makefile.include                        | 219 +++++++++---------
 tests/{ => qtest}/ac97-test.c                 |   0
 tests/{ => qtest}/acpi-utils.c                |   0
 tests/{ => qtest}/acpi-utils.h                |   0
 tests/{ => qtest}/ahci-test.c                 |   0
 tests/{ => qtest}/arm-cpu-features.c          |   0
 .../bios-tables-test-allowed-diff.h           |   0
 tests/{ => qtest}/bios-tables-test.c          |   0
 tests/{ => qtest}/boot-order-test.c           |   0
 tests/{ => qtest}/boot-sector.c               |   0
 tests/{ => qtest}/boot-sector.h               |   0
 tests/{ => qtest}/boot-serial-test.c          |   0
 tests/{ => qtest}/cdrom-test.c                |   0
 tests/{ => qtest}/cpu-plug-test.c             |   0
 tests/{ => qtest}/dbus-vmstate-test.c         |   0
 tests/{ => qtest}/dbus-vmstate1.xml           |   0
 tests/{ => qtest}/device-introspect-test.c    |   0
 tests/{ => qtest}/device-plug-test.c          |   0
 tests/{ => qtest}/display-vga-test.c          |   0
 tests/{ => qtest}/drive_del-test.c            |   0
 tests/{ => qtest}/ds1338-test.c               |   0
 tests/{ => qtest}/e1000-test.c                |   0
 tests/{ => qtest}/e1000e-test.c               |   0
 tests/{ => qtest}/eepro100-test.c             |   0
 tests/{ => qtest}/endianness-test.c           |   0
 tests/{ => qtest}/es1370-test.c               |   0
 tests/{ => qtest}/fdc-test.c                  |   0
 tests/{ => qtest}/fw_cfg-test.c               |   0
 tests/{ => qtest}/hd-geo-test.c               |   0
 tests/{ => qtest}/hexloader-test.c            |   0
 tests/{ => qtest}/i440fx-test.c               |   0
 tests/{ => qtest}/i82801b11-test.c            |   0
 tests/{ => qtest}/ide-test.c                  |   0
 tests/{ => qtest}/intel-hda-test.c            |   0
 tests/{ => qtest}/ioh3420-test.c              |   0
 tests/{ => qtest}/ipmi-bt-test.c              |   0
 tests/{ => qtest}/ipmi-kcs-test.c             |   0
 tests/{ => qtest}/ipoctal232-test.c           |   0
 tests/{ => qtest}/ivshmem-test.c              |   0
 tests/{ => qtest}/libqtest-single.h           |   0
 tests/{ => qtest}/libqtest.c                  |   0
 tests/{ => qtest}/libqtest.h                  |   0
 tests/{ => qtest}/m25p80-test.c               |   0
 tests/{ => qtest}/m48t59-test.c               |   0
 tests/{ => qtest}/machine-none-test.c         |   0
 tests/{ => qtest}/megasas-test.c              |   0
 tests/{ => qtest}/microbit-test.c             |   0
 tests/{ => qtest}/migration-helpers.c         |   0
 tests/{ => qtest}/migration-helpers.h         |   0
 tests/{ => qtest}/migration-test.c            |   0
 tests/{ => qtest}/modules-test.c              |   0
 tests/{ => qtest}/ne2000-test.c               |   0
 tests/{ => qtest}/numa-test.c                 |   0
 tests/{ => qtest}/nvme-test.c                 |   0
 tests/{ => qtest}/pca9552-test.c              |   0
 tests/{ => qtest}/pci-test.c                  |   0
 tests/{ => qtest}/pcnet-test.c                |   0
 tests/{ => qtest}/pflash-cfi02-test.c         |   0
 tests/{ => qtest}/pnv-xscom-test.c            |   0
 tests/{ => qtest}/prom-env-test.c             |   0
 tests/{ => qtest}/pvpanic-test.c              |   0
 tests/{ => qtest}/pxe-test.c                  |   0
 tests/{ => qtest}/q35-test.c                  |   0
 tests/{ => qtest}/qmp-cmd-test.c              |   0
 tests/{ => qtest}/qmp-test.c                  |   0
 tests/{ => qtest}/qom-test.c                  |   0
 tests/{ => qtest}/qos-test.c                  |   0
 tests/{ => qtest}/rtas-test.c                 |   0
 tests/{ => qtest}/rtc-test.c                  |   0
 tests/{ => qtest}/rtl8139-test.c              |   0
 tests/{ => qtest}/sdhci-test.c                |   0
 tests/{ => qtest}/spapr-phb-test.c            |   0
 tests/{ => qtest}/tco-test.c                  |   0
 tests/{ => qtest}/test-arm-mptimer.c          |   0
 tests/{ => qtest}/test-filter-mirror.c        |   0
 tests/{ => qtest}/test-filter-redirector.c    |   0
 tests/{ => qtest}/test-hmp.c                  |   0
 tests/{ => qtest}/test-netfilter.c            |   0
 tests/{ => qtest}/test-x86-cpuid-compat.c     |   0
 tests/{ => qtest}/tmp105-test.c               |   0
 tests/{ => qtest}/tpm-crb-swtpm-test.c        |   0
 tests/{ => qtest}/tpm-crb-test.c              |   0
 tests/{ => qtest}/tpm-emu.c                   |   0
 tests/{ => qtest}/tpm-emu.h                   |   0
 tests/{ => qtest}/tpm-tests.c                 |   0
 tests/{ => qtest}/tpm-tests.h                 |   0
 tests/{ => qtest}/tpm-tis-swtpm-test.c        |   0
 tests/{ => qtest}/tpm-tis-test.c              |   0
 tests/{ => qtest}/tpm-util.c                  |   0
 tests/{ => qtest}/tpm-util.h                  |   0
 tests/{ => qtest}/usb-hcd-ehci-test.c         |   0
 tests/{ => qtest}/usb-hcd-ohci-test.c         |   0
 tests/{ => qtest}/usb-hcd-uhci-test.c         |   0
 tests/{ => qtest}/usb-hcd-xhci-test.c         |   0
 tests/{ => qtest}/vhost-user-test.c           |   0
 tests/{ => qtest}/virtio-9p-test.c            |   0
 tests/{ => qtest}/virtio-blk-test.c           |   0
 tests/{ => qtest}/virtio-ccw-test.c           |   0
 tests/{ => qtest}/virtio-net-test.c           |   0
 tests/{ => qtest}/virtio-rng-test.c           |   0
 tests/{ => qtest}/virtio-scsi-test.c          |   0
 tests/{ => qtest}/virtio-serial-test.c        |   0
 tests/{ => qtest}/virtio-test.c               |   0
 tests/{ => qtest}/vmgenid-test.c              |   0
 tests/{ => qtest}/vmxnet3-test.c              |   0
 tests/{ => qtest}/wdt_ib700-test.c            |   0
 109 files changed, 156 insertions(+), 157 deletions(-)
 rename tests/{ => qtest}/ac97-test.c (100%)
 rename tests/{ => qtest}/acpi-utils.c (100%)
 rename tests/{ => qtest}/acpi-utils.h (100%)
 rename tests/{ => qtest}/ahci-test.c (100%)
 rename tests/{ => qtest}/arm-cpu-features.c (100%)
 rename tests/{ => qtest}/bios-tables-test-allowed-diff.h (100%)
 rename tests/{ => qtest}/bios-tables-test.c (100%)
 rename tests/{ => qtest}/boot-order-test.c (100%)
 rename tests/{ => qtest}/boot-sector.c (100%)
 rename tests/{ => qtest}/boot-sector.h (100%)
 rename tests/{ => qtest}/boot-serial-test.c (100%)
 rename tests/{ => qtest}/cdrom-test.c (100%)
 rename tests/{ => qtest}/cpu-plug-test.c (100%)
 rename tests/{ => qtest}/dbus-vmstate-test.c (100%)
 rename tests/{ => qtest}/dbus-vmstate1.xml (100%)
 rename tests/{ => qtest}/device-introspect-test.c (100%)
 rename tests/{ => qtest}/device-plug-test.c (100%)
 rename tests/{ => qtest}/display-vga-test.c (100%)
 rename tests/{ => qtest}/drive_del-test.c (100%)
 rename tests/{ => qtest}/ds1338-test.c (100%)
 rename tests/{ => qtest}/e1000-test.c (100%)
 rename tests/{ => qtest}/e1000e-test.c (100%)
 rename tests/{ => qtest}/eepro100-test.c (100%)
 rename tests/{ => qtest}/endianness-test.c (100%)
 rename tests/{ => qtest}/es1370-test.c (100%)
 rename tests/{ => qtest}/fdc-test.c (100%)
 rename tests/{ => qtest}/fw_cfg-test.c (100%)
 rename tests/{ => qtest}/hd-geo-test.c (100%)
 rename tests/{ => qtest}/hexloader-test.c (100%)
 rename tests/{ => qtest}/i440fx-test.c (100%)
 rename tests/{ => qtest}/i82801b11-test.c (100%)
 rename tests/{ => qtest}/ide-test.c (100%)
 rename tests/{ => qtest}/intel-hda-test.c (100%)
 rename tests/{ => qtest}/ioh3420-test.c (100%)
 rename tests/{ => qtest}/ipmi-bt-test.c (100%)
 rename tests/{ => qtest}/ipmi-kcs-test.c (100%)
 rename tests/{ => qtest}/ipoctal232-test.c (100%)
 rename tests/{ => qtest}/ivshmem-test.c (100%)
 rename tests/{ => qtest}/libqtest-single.h (100%)
 rename tests/{ => qtest}/libqtest.c (100%)
 rename tests/{ => qtest}/libqtest.h (100%)
 rename tests/{ => qtest}/m25p80-test.c (100%)
 rename tests/{ => qtest}/m48t59-test.c (100%)
 rename tests/{ => qtest}/machine-none-test.c (100%)
 rename tests/{ => qtest}/megasas-test.c (100%)
 rename tests/{ => qtest}/microbit-test.c (100%)
 rename tests/{ => qtest}/migration-helpers.c (100%)
 rename tests/{ => qtest}/migration-helpers.h (100%)
 rename tests/{ => qtest}/migration-test.c (100%)
 rename tests/{ => qtest}/modules-test.c (100%)
 rename tests/{ => qtest}/ne2000-test.c (100%)
 rename tests/{ => qtest}/numa-test.c (100%)
 rename tests/{ => qtest}/nvme-test.c (100%)
 rename tests/{ => qtest}/pca9552-test.c (100%)
 rename tests/{ => qtest}/pci-test.c (100%)
 rename tests/{ => qtest}/pcnet-test.c (100%)
 rename tests/{ => qtest}/pflash-cfi02-test.c (100%)
 rename tests/{ => qtest}/pnv-xscom-test.c (100%)
 rename tests/{ => qtest}/prom-env-test.c (100%)
 rename tests/{ => qtest}/pvpanic-test.c (100%)
 rename tests/{ => qtest}/pxe-test.c (100%)
 rename tests/{ => qtest}/q35-test.c (100%)
 rename tests/{ => qtest}/qmp-cmd-test.c (100%)
 rename tests/{ => qtest}/qmp-test.c (100%)
 rename tests/{ => qtest}/qom-test.c (100%)
 rename tests/{ => qtest}/qos-test.c (100%)
 rename tests/{ => qtest}/rtas-test.c (100%)
 rename tests/{ => qtest}/rtc-test.c (100%)
 rename tests/{ => qtest}/rtl8139-test.c (100%)
 rename tests/{ => qtest}/sdhci-test.c (100%)
 rename tests/{ => qtest}/spapr-phb-test.c (100%)
 rename tests/{ => qtest}/tco-test.c (100%)
 rename tests/{ => qtest}/test-arm-mptimer.c (100%)
 rename tests/{ => qtest}/test-filter-mirror.c (100%)
 rename tests/{ => qtest}/test-filter-redirector.c (100%)
 rename tests/{ => qtest}/test-hmp.c (100%)
 rename tests/{ => qtest}/test-netfilter.c (100%)
 rename tests/{ => qtest}/test-x86-cpuid-compat.c (100%)
 rename tests/{ => qtest}/tmp105-test.c (100%)
 rename tests/{ => qtest}/tpm-crb-swtpm-test.c (100%)
 rename tests/{ => qtest}/tpm-crb-test.c (100%)
 rename tests/{ => qtest}/tpm-emu.c (100%)
 rename tests/{ => qtest}/tpm-emu.h (100%)
 rename tests/{ => qtest}/tpm-tests.c (100%)
 rename tests/{ => qtest}/tpm-tests.h (100%)
 rename tests/{ => qtest}/tpm-tis-swtpm-test.c (100%)
 rename tests/{ => qtest}/tpm-tis-test.c (100%)
 rename tests/{ => qtest}/tpm-util.c (100%)
 rename tests/{ => qtest}/tpm-util.h (100%)
 rename tests/{ => qtest}/usb-hcd-ehci-test.c (100%)
 rename tests/{ => qtest}/usb-hcd-ohci-test.c (100%)
 rename tests/{ => qtest}/usb-hcd-uhci-test.c (100%)
 rename tests/{ => qtest}/usb-hcd-xhci-test.c (100%)
 rename tests/{ => qtest}/vhost-user-test.c (100%)
 rename tests/{ => qtest}/virtio-9p-test.c (100%)
 rename tests/{ => qtest}/virtio-blk-test.c (100%)
 rename tests/{ => qtest}/virtio-ccw-test.c (100%)
 rename tests/{ => qtest}/virtio-net-test.c (100%)
 rename tests/{ => qtest}/virtio-rng-test.c (100%)
 rename tests/{ => qtest}/virtio-scsi-test.c (100%)
 rename tests/{ => qtest}/virtio-serial-test.c (100%)
 rename tests/{ => qtest}/virtio-test.c (100%)
 rename tests/{ => qtest}/vmgenid-test.c (100%)
 rename tests/{ => qtest}/vmxnet3-test.c (100%)
 rename tests/{ => qtest}/wdt_ib700-test.c (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ebcef0ebe9..dce8f2d3f5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -87,11 +87,12 @@ build-tci:
  - ../configure --enable-tcg-interpreter
       --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
  - make -j2
- - make tests/boot-serial-test tests/cdrom-test tests/pxe-test
+ - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
  - for tg in $TARGETS ; do
      export QTEST_QEMU_BINARY="${tg}-softmmu/qemu-system-${tg}" ;
-     ./tests/boot-serial-test || exit 1 ;
-     ./tests/cdrom-test || exit 1 ;
+     ./tests/qtest/boot-serial-test || exit 1 ;
+     ./tests/qtest/cdrom-test || exit 1 ;
    done
- - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/pxe-test
- - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" ./tests/pxe-test -m slow
+ - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
+ - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
+   ./tests/qtest/pxe-test -m slow
diff --git a/MAINTAINERS b/MAINTAINERS
index cd2dc137a3..02eab66b02 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -533,7 +533,7 @@ F: include/hw/misc/arm11scu.h
 F: include/hw/timer/a9gtimer.h
 F: include/hw/timer/arm_mptimer.h
 F: include/hw/timer/armv7m_systick.h
-F: tests/test-arm-mptimer.c
+F: tests/qtest/test-arm-mptimer.c
 
 Exynos
 M: Igor Mitsyanko <i.mitsyanko@gmail.com>
@@ -864,7 +864,7 @@ F: hw/*/nrf51*.c
 F: hw/*/microbit*.c
 F: include/hw/*/nrf51*.h
 F: include/hw/*/microbit*.h
-F: tests/microbit-test.c
+F: tests/qtest/microbit-test.c
 
 CRIS Machines
 -------------
@@ -1101,9 +1101,9 @@ F: include/hw/*/xics*
 F: pc-bios/slof.bin
 F: docs/specs/ppc-spapr-hcalls.txt
 F: docs/specs/ppc-spapr-hotplug.txt
-F: tests/spapr*
+F: tests/qtest/spapr*
 F: tests/libqos/*spapr*
-F: tests/rtas*
+F: tests/qtest/rtas*
 F: tests/libqos/rtas*
 
 PowerNV (Non-Virtualized)
@@ -1116,7 +1116,7 @@ F: hw/intc/pnv*
 F: hw/intc/xics_pnv.c
 F: include/hw/ppc/pnv*
 F: pc-bios/skiboot.lid
-F: tests/pnv*
+F: tests/qtest/pnv*
 
 virtex_ml507
 M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
@@ -1264,7 +1264,7 @@ F: hw/misc/sga.c
 F: hw/isa/apm.c
 F: include/hw/isa/apm.h
 F: tests/test-x86-cpuid.c
-F: tests/test-x86-cpuid-compat.c
+F: tests/qtest/test-x86-cpuid-compat.c
 
 PC Chipset
 M: Michael S. Tsirkin <mst@redhat.com>
@@ -1360,9 +1360,9 @@ F: hw/ide/
 F: hw/block/block.c
 F: hw/block/cdrom.c
 F: hw/block/hd-geometry.c
-F: tests/ide-test.c
-F: tests/ahci-test.c
-F: tests/cdrom-test.c
+F: tests/qtest/ide-test.c
+F: tests/qtest/ahci-test.c
+F: tests/qtest/cdrom-test.c
 F: tests/libqos/ahci*
 T: git https://github.com/jnsnow/qemu.git ide
 
@@ -1372,7 +1372,7 @@ S: Maintained
 F: include/hw/ipmi/*
 F: hw/ipmi/*
 F: hw/smbios/smbios_type_38.c
-F: tests/ipmi*
+F: tests/qtest/ipmi*
 T: git https://github.com/cminyard/qemu.git master-ipmi-rebase
 
 Floppy
@@ -1381,7 +1381,7 @@ L: qemu-block@nongnu.org
 S: Supported
 F: hw/block/fdc.c
 F: include/hw/block/fdc.h
-F: tests/fdc-test.c
+F: tests/qtest/fdc-test.c
 T: git https://github.com/jnsnow/qemu.git ide
 
 OMAP
@@ -1419,8 +1419,8 @@ F: hw/acpi/*
 F: hw/smbios/*
 F: hw/i386/acpi-build.[hc]
 F: hw/arm/virt-acpi-build.c
-F: tests/bios-tables-test.c
-F: tests/acpi-utils.[hc]
+F: tests/qtest/bios-tables-test.c
+F: tests/qtest/acpi-utils.[hc]
 F: tests/data/acpi/
 
 ppc4xx
@@ -1443,7 +1443,7 @@ M: Jason Wang <jasowang@redhat.com>
 S: Odd Fixes
 F: hw/net/
 F: include/hw/net/
-F: tests/virtio-net-test.c
+F: tests/qtest/virtio-net-test.c
 F: docs/virtio-net-failover.rst
 T: git https://github.com/jasowang/qemu.git net
 
@@ -1460,7 +1460,7 @@ R: Fam Zheng <fam@euphon.net>
 S: Supported
 F: include/hw/scsi/*
 F: hw/scsi/*
-F: tests/virtio-scsi-test.c
+F: tests/qtest/virtio-scsi-test.c
 T: git https://github.com/bonzini/qemu.git scsi-next
 
 SSI
@@ -1470,7 +1470,7 @@ F: hw/ssi/*
 F: hw/block/m25p80.c
 F: include/hw/ssi/ssi.h
 X: hw/ssi/xilinx_*
-F: tests/m25p80-test.c
+F: tests/qtest/m25p80-test.c
 
 Xilinx SPI
 M: Alistair Francis <alistair@alistair23.me>
@@ -1484,13 +1484,13 @@ F: include/hw/sd/sd*
 F: hw/sd/core.c
 F: hw/sd/sd*
 F: hw/sd/ssi-sd.c
-F: tests/sd*
+F: tests/qtest/sd*
 
 USB
 M: Gerd Hoffmann <kraxel@redhat.com>
 S: Maintained
 F: hw/usb/*
-F: tests/usb-*-test.c
+F: tests/qtest/usb-*-test.c
 F: docs/usb2.txt
 F: docs/usb-storage.txt
 F: include/hw/usb.h
@@ -1552,7 +1552,6 @@ F: hw/virtio/Makefile.objs
 F: hw/virtio/trace-events
 F: net/vhost-user.c
 F: include/hw/virtio/
-F: tests/virtio-balloon-test.c
 
 virtio-9p
 M: Greg Kurz <groug@kaod.org>
@@ -1560,7 +1559,7 @@ S: Odd Fixes
 F: hw/9pfs/
 X: hw/9pfs/xen-9p*
 F: fsdev/
-F: tests/virtio-9p-test.c
+F: tests/qtest/virtio-9p-test.c
 T: git https://github.com/gkurz/qemu.git 9p-next
 
 virtio-blk
@@ -1569,7 +1568,7 @@ L: qemu-block@nongnu.org
 S: Supported
 F: hw/block/virtio-blk.c
 F: hw/block/dataplane/*
-F: tests/virtio-blk-test.c
+F: tests/qtest/virtio-blk-test.c
 T: git https://github.com/stefanha/qemu.git block
 
 virtio-ccw
@@ -1597,8 +1596,7 @@ S: Supported
 F: hw/char/virtio-serial-bus.c
 F: hw/char/virtio-console.c
 F: include/hw/virtio/virtio-serial.h
-F: tests/virtio-console-test.c
-F: tests/virtio-serial-test.c
+F: tests/qtest/virtio-serial-test.c
 
 virtio-rng
 M: Laurent Vivier <lvivier@redhat.com>
@@ -1608,7 +1606,7 @@ F: hw/virtio/virtio-rng.c
 F: include/hw/virtio/virtio-rng.h
 F: include/sysemu/rng*.h
 F: backends/rng*.c
-F: tests/virtio-rng-test.c
+F: tests/qtest/virtio-rng-test.c
 
 virtio-crypto
 M: Gonglei <arei.gonglei@huawei.com>
@@ -1622,7 +1620,7 @@ M: Keith Busch <keith.busch@intel.com>
 L: qemu-block@nongnu.org
 S: Supported
 F: hw/block/nvme*
-F: tests/nvme-test.c
+F: tests/qtest/nvme-test.c
 
 megasas
 M: Hannes Reinecke <hare@suse.com>
@@ -1630,7 +1628,7 @@ L: qemu-block@nongnu.org
 S: Supported
 F: hw/scsi/megasas.c
 F: hw/scsi/mfi.h
-F: tests/megasas-test.c
+F: tests/qtest/megasas-test.c
 
 Network packet abstractions
 M: Dmitry Fleytman <dmitry.fleytman@gmail.com>
@@ -1645,7 +1643,7 @@ M: Dmitry Fleytman <dmitry.fleytman@gmail.com>
 S: Maintained
 F: hw/net/vmxnet*
 F: hw/scsi/vmw_pvscsi*
-F: tests/vmxnet3-test.c
+F: tests/qtest/vmxnet3-test.c
 
 Rocker
 M: Jiri Pirko <jiri@resnulli.us>
@@ -1693,7 +1691,7 @@ F: docs/generic-loader.txt
 Intel Hexadecimal Object File Loader
 M: Su Hang <suhang16@mails.ucas.ac.cn>
 S: Maintained
-F: tests/hexloader-test.c
+F: tests/qtest/hexloader-test.c
 F: tests/data/hex-loader/test.hex
 
 CHRP NVRAM
@@ -1701,7 +1699,7 @@ M: Thomas Huth <thuth@redhat.com>
 S: Maintained
 F: hw/nvram/chrp_nvram.c
 F: include/hw/nvram/chrp_nvram.h
-F: tests/prom-env-test.c
+F: tests/qtest/prom-env-test.c
 
 VM Generation ID
 M: Ben Warren <ben@skyportsystems.com>
@@ -1709,7 +1707,7 @@ S: Maintained
 F: hw/acpi/vmgenid.c
 F: include/hw/acpi/vmgenid.h
 F: docs/specs/vmgenid.txt
-F: tests/vmgenid-test.c
+F: tests/qtest/vmgenid-test.c
 F: stubs/vmgenid.c
 
 Unimplemented device
@@ -1779,7 +1777,7 @@ F: stubs/fw_cfg.c
 F: include/hw/nvram/fw_cfg.h
 F: include/standard-headers/linux/qemu_fw_cfg.h
 F: tests/libqos/fw_cfg.c
-F: tests/fw_cfg-test.c
+F: tests/qtest/fw_cfg-test.c
 T: git https://github.com/philmd/qemu.git fw_cfg-next
 
 XIVE
@@ -1799,9 +1797,9 @@ S: Maintained
 F: audio/
 F: hw/audio/
 F: include/hw/audio/
-F: tests/ac97-test.c
-F: tests/es1370-test.c
-F: tests/intel-hda-test.c
+F: tests/qtest/ac97-test.c
+F: tests/qtest/es1370-test.c
+F: tests/qtest/intel-hda-test.c
 
 Block layer core
 M: Kevin Wolf <kwolf@redhat.com>
@@ -2002,7 +2000,7 @@ F: monitor/hmp*
 F: hmp.h
 F: hmp-commands*.hx
 F: include/monitor/hmp-target.h
-F: tests/test-hmp.c
+F: tests/qtest/test-hmp.c
 F: include/qemu/qemu-print.h
 F: util/qemu-print.c
 
@@ -2128,8 +2126,8 @@ F: qapi/error.json
 F: docs/devel/*qmp-*
 F: docs/interop/*qmp-*
 F: scripts/qmp/
-F: tests/qmp-test.c
-F: tests/qmp-cmd-test.c
+F: tests/qtest/qmp-test.c
+F: tests/qtest/qmp-cmd-test.c
 T: git https://repo.or.cz/qemu/armbru.git qapi-next
 
 qtest
@@ -2139,9 +2137,8 @@ R: Paolo Bonzini <pbonzini@redhat.com>
 S: Maintained
 F: qtest.c
 F: accel/qtest.c
-F: tests/libqtest*
 F: tests/libqos/
-F: tests/*-test.c
+F: tests/qtest/
 
 Register API
 M: Alistair Francis <alistair@alistair23.me>
@@ -2185,7 +2182,7 @@ F: include/hw/acpi/tpm.h
 F: include/sysemu/tpm*
 F: qapi/tpm.json
 F: backends/tpm.c
-F: tests/*tpm*
+F: tests/qtest/*tpm*
 T: git https://github.com/stefanberger/qemu-tpm.git tpm-next
 
 Checkpatch
@@ -2202,7 +2199,7 @@ F: include/migration/
 F: migration/
 F: scripts/vmstate-static-checker.py
 F: tests/vmstate-static-checker-data/
-F: tests/migration-test.c
+F: tests/qtest/migration-test.c
 F: docs/devel/migration.rst
 F: qapi/migration.json
 
diff --git a/configure b/configure
index 28ee2a254f..1b8796fc21 100755
--- a/configure
+++ b/configure
@@ -7963,8 +7963,8 @@ fi
 # so the build tree will be missing the link back to the new file, and
 # tests might fail. Prefer to keep the relevant files in their own
 # directory and symlink the directory instead.
-DIRS="tests tests/tcg tests/tcg/lm32 tests/libqos tests/qapi-schema tests/qemu-iotests tests/vm"
-DIRS="$DIRS tests/fp tests/qgraph"
+DIRS="tests tests/tcg tests/tcg/lm32 tests/libqos tests/qapi-schema tests/qtest"
+DIRS="$DIRS tests/qemu-iotests tests/vm tests/fp tests/qgraph"
 DIRS="$DIRS docs docs/interop fsdev scsi"
 DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
 DIRS="$DIRS roms/seabios roms/vgabios"
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 6bacf14d3f..bd2bcd6f1b 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -515,7 +515,7 @@ generated-files-y += tests/include/test-qapi-events-sub-module.h
 generated-files-y += tests/test-qapi-events-sub-sub-module.h
 generated-files-y += tests/test-qapi-introspect.h
 
-QEMU_CFLAGS += -I$(SRC_PATH)/tests
+QEMU_CFLAGS += -I$(SRC_PATH)/tests -I$(SRC_PATH)/tests/qtest
 
 
 # Deps that are common to various different sets of tests below
@@ -648,18 +648,18 @@ tests/qapi-schema/doc-good.test.texi: $(SRC_PATH)/tests/qapi-schema/doc-good.jso
 	@mv tests/qapi-schema/doc-good-qapi-doc.texi $@
 	@rm -f tests/qapi-schema/doc-good-qapi-*.[ch] tests/qapi-schema/doc-good-qmp-*.[ch]
 
-tests/dbus-vmstate1.h tests/dbus-vmstate1.c: tests/dbus-vmstate1-gen-timestamp ;
-tests/dbus-vmstate1-gen-timestamp: $(SRC_PATH)/tests/dbus-vmstate1.xml
+tests/qtest/dbus-vmstate1.h tests/qtest/dbus-vmstate1.c: tests/qtest/dbus-vmstate1-gen-timestamp ;
+tests/qtest/dbus-vmstate1-gen-timestamp: $(SRC_PATH)/tests/qtest/dbus-vmstate1.xml
 	$(call quiet-command,$(GDBUS_CODEGEN) $< \
-		--interface-prefix org.qemu --generate-c-code tests/dbus-vmstate1, \
+		--interface-prefix org.qemu --generate-c-code tests/qtest/dbus-vmstate1, \
 		"GEN","$(@:%-timestamp=%)")
 	@>$@
 
-tests/dbus-vmstate-test.o-cflags := -DSRCDIR="$(SRC_PATH)"
-tests/dbus-vmstate1.o-cflags := $(GIO_CFLAGS)
-tests/dbus-vmstate1.o-libs := $(GIO_LIBS)
+tests/qtest/dbus-vmstate-test.o-cflags := -DSRCDIR="$(SRC_PATH)"
+tests/qtest/dbus-vmstate1.o-cflags := $(GIO_CFLAGS)
+tests/qtest/dbus-vmstate1.o-libs := $(GIO_LIBS)
 
-tests/dbus-vmstate-test.o: tests/dbus-vmstate1.h
+tests/qtest/dbus-vmstate-test.o: tests/qtest/dbus-vmstate1.h
 
 tests/test-string-output-visitor$(EXESUF): tests/test-string-output-visitor.o $(test-qapi-obj-y)
 tests/test-string-input-visitor$(EXESUF): tests/test-string-input-visitor.o $(test-qapi-obj-y)
@@ -708,12 +708,12 @@ tests/test-authz-pam$(EXESUF): tests/test-authz-pam.o $(test-authz-obj-y)
 tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y)
 tests/test-io-channel-socket$(EXESUF): tests/test-io-channel-socket.o \
         tests/io-channel-helpers.o tests/socket-helpers.o $(test-io-obj-y)
-tests/tpm-crb-swtpm-test$(EXESUF): tests/tpm-crb-swtpm-test.o tests/tpm-emu.o \
-	tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y)
-tests/tpm-crb-test$(EXESUF): tests/tpm-crb-test.o tests/tpm-emu.o $(test-io-obj-y)
-tests/tpm-tis-swtpm-test$(EXESUF): tests/tpm-tis-swtpm-test.o tests/tpm-emu.o \
-	tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y)
-tests/tpm-tis-test$(EXESUF): tests/tpm-tis-test.o tests/tpm-emu.o $(test-io-obj-y)
+tests/qtest/tpm-crb-swtpm-test$(EXESUF): tests/qtest/tpm-crb-swtpm-test.o tests/qtest/tpm-emu.o \
+	tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
+tests/qtest/tpm-crb-test$(EXESUF): tests/qtest/tpm-crb-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
+tests/qtest/tpm-tis-swtpm-test$(EXESUF): tests/qtest/tpm-tis-swtpm-test.o tests/qtest/tpm-emu.o \
+	tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
+tests/qtest/tpm-tis-test$(EXESUF): tests/qtest/tpm-tis-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
 tests/test-io-channel-file$(EXESUF): tests/test-io-channel-file.o \
         tests/io-channel-helpers.o $(test-io-obj-y)
 tests/test-io-channel-tls$(EXESUF): tests/test-io-channel-tls.o \
@@ -743,7 +743,7 @@ libqos-pc-obj-y += tests/libqos/ahci.o
 libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
 
 # Devices
-qos-test-obj-y = tests/qos-test.o $(libqgraph-obj-y)
+qos-test-obj-y = tests/qtest/qos-test.o $(libqgraph-obj-y)
 qos-test-obj-y += $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
 qos-test-obj-y += tests/libqos/e1000e.o
 qos-test-obj-y += tests/libqos/i2c.o
@@ -776,98 +776,98 @@ qos-test-obj-y += tests/libqos/ppc64_pseries-machine.o
 qos-test-obj-y += tests/libqos/x86_64_pc-machine.o
 
 # Tests
-qos-test-obj-y += tests/ac97-test.o
-qos-test-obj-y += tests/ds1338-test.o
-qos-test-obj-y += tests/e1000-test.o
-qos-test-obj-y += tests/e1000e-test.o
-qos-test-obj-y += tests/eepro100-test.o
-qos-test-obj-y += tests/es1370-test.o
-qos-test-obj-y += tests/ipoctal232-test.o
-qos-test-obj-y += tests/megasas-test.o
-qos-test-obj-y += tests/ne2000-test.o
-qos-test-obj-y += tests/nvme-test.o
-qos-test-obj-y += tests/pca9552-test.o
-qos-test-obj-y += tests/pci-test.o
-qos-test-obj-y += tests/pcnet-test.o
-qos-test-obj-y += tests/sdhci-test.o
-qos-test-obj-y += tests/spapr-phb-test.o
-qos-test-obj-y += tests/tmp105-test.o
-qos-test-obj-y += tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
-qos-test-obj-$(CONFIG_VHOST_NET_USER) += tests/vhost-user-test.o $(chardev-obj-y) $(test-io-obj-y)
-qos-test-obj-y += tests/virtio-test.o
-qos-test-obj-$(CONFIG_VIRTFS) += tests/virtio-9p-test.o
-qos-test-obj-y += tests/virtio-blk-test.o
-qos-test-obj-y += tests/virtio-net-test.o
-qos-test-obj-y += tests/virtio-rng-test.o
-qos-test-obj-y += tests/virtio-scsi-test.o
-qos-test-obj-y += tests/virtio-serial-test.o
-qos-test-obj-y += tests/vmxnet3-test.o
+qos-test-obj-y += tests/qtest/ac97-test.o
+qos-test-obj-y += tests/qtest/ds1338-test.o
+qos-test-obj-y += tests/qtest/e1000-test.o
+qos-test-obj-y += tests/qtest/e1000e-test.o
+qos-test-obj-y += tests/qtest/eepro100-test.o
+qos-test-obj-y += tests/qtest/es1370-test.o
+qos-test-obj-y += tests/qtest/ipoctal232-test.o
+qos-test-obj-y += tests/qtest/megasas-test.o
+qos-test-obj-y += tests/qtest/ne2000-test.o
+qos-test-obj-y += tests/qtest/nvme-test.o
+qos-test-obj-y += tests/qtest/pca9552-test.o
+qos-test-obj-y += tests/qtest/pci-test.o
+qos-test-obj-y += tests/qtest/pcnet-test.o
+qos-test-obj-y += tests/qtest/sdhci-test.o
+qos-test-obj-y += tests/qtest/spapr-phb-test.o
+qos-test-obj-y += tests/qtest/tmp105-test.o
+qos-test-obj-y += tests/qtest/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
+qos-test-obj-$(CONFIG_VHOST_NET_USER) += tests/qtest/vhost-user-test.o $(chardev-obj-y) $(test-io-obj-y)
+qos-test-obj-y += tests/qtest/virtio-test.o
+qos-test-obj-$(CONFIG_VIRTFS) += tests/qtest/virtio-9p-test.o
+qos-test-obj-y += tests/qtest/virtio-blk-test.o
+qos-test-obj-y += tests/qtest/virtio-net-test.o
+qos-test-obj-y += tests/qtest/virtio-rng-test.o
+qos-test-obj-y += tests/qtest/virtio-scsi-test.o
+qos-test-obj-y += tests/qtest/virtio-serial-test.o
+qos-test-obj-y += tests/qtest/vmxnet3-test.o
 
 check-unit-y += tests/test-qgraph$(EXESUF)
 tests/test-qgraph$(EXESUF): tests/test-qgraph.o $(libqgraph-obj-y)
 
 check-qtest-generic-y += qos-test
-tests/qos-test$(EXESUF): $(qos-test-obj-y)
+tests/qtest/qos-test$(EXESUF): $(qos-test-obj-y)
 
-tests/qmp-test$(EXESUF): tests/qmp-test.o
-tests/qmp-cmd-test$(EXESUF): tests/qmp-cmd-test.o
-tests/device-introspect-test$(EXESUF): tests/device-introspect-test.o
-tests/rtc-test$(EXESUF): tests/rtc-test.o
-tests/m48t59-test$(EXESUF): tests/m48t59-test.o
-tests/hexloader-test$(EXESUF): tests/hexloader-test.o
-tests/pflash-cfi02$(EXESUF): tests/pflash-cfi02-test.o
-tests/endianness-test$(EXESUF): tests/endianness-test.o
-tests/prom-env-test$(EXESUF): tests/prom-env-test.o $(libqos-obj-y)
-tests/rtas-test$(EXESUF): tests/rtas-test.o $(libqos-spapr-obj-y)
-tests/fdc-test$(EXESUF): tests/fdc-test.o
-tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y)
-tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y) qemu-img$(EXESUF)
-tests/ipmi-kcs-test$(EXESUF): tests/ipmi-kcs-test.o
-tests/ipmi-bt-test$(EXESUF): tests/ipmi-bt-test.o
-tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o $(libqos-obj-y)
-tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
-tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
-tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
-	tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y)
-tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y)
-tests/microbit-test$(EXESUF): tests/microbit-test.o
-tests/m25p80-test$(EXESUF): tests/m25p80-test.o
-tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
-tests/q35-test$(EXESUF): tests/q35-test.o $(libqos-pc-obj-y)
-tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
-tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o $(libqos-pc-obj-y)
-tests/pnv-xscom-test$(EXESUF): tests/pnv-xscom-test.o
-tests/wdt_ib700-test$(EXESUF): tests/wdt_ib700-test.o
-tests/tco-test$(EXESUF): tests/tco-test.o $(libqos-pc-obj-y)
-tests/virtio-ccw-test$(EXESUF): tests/virtio-ccw-test.o
-tests/display-vga-test$(EXESUF): tests/display-vga-test.o
-tests/qom-test$(EXESUF): tests/qom-test.o
-tests/test-hmp$(EXESUF): tests/test-hmp.o
-tests/machine-none-test$(EXESUF): tests/machine-none-test.o
-tests/device-plug-test$(EXESUF): tests/device-plug-test.o
-tests/drive_del-test$(EXESUF): tests/drive_del-test.o
-tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
-tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
-tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o
-tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o
-tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
-tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
-tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
-tests/cpu-plug-test$(EXESUF): tests/cpu-plug-test.o
-tests/migration-test$(EXESUF): tests/migration-test.o tests/migration-helpers.o
-tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
-tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
-tests/test-filter-mirror$(EXESUF): tests/test-filter-mirror.o $(qtest-obj-y)
-tests/test-filter-redirector$(EXESUF): tests/test-filter-redirector.o $(qtest-obj-y)
-tests/test-x86-cpuid-compat$(EXESUF): tests/test-x86-cpuid-compat.o $(qtest-obj-y)
-tests/ivshmem-test$(EXESUF): tests/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
-tests/dbus-vmstate-test$(EXESUF): tests/dbus-vmstate-test.o tests/migration-helpers.o tests/dbus-vmstate1.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
-tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
-tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o
-tests/numa-test$(EXESUF): tests/numa-test.o
-tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o
-tests/cdrom-test$(EXESUF): tests/cdrom-test.o tests/boot-sector.o $(libqos-obj-y)
-tests/arm-cpu-features$(EXESUF): tests/arm-cpu-features.o
+tests/qtest/qmp-test$(EXESUF): tests/qtest/qmp-test.o
+tests/qtest/qmp-cmd-test$(EXESUF): tests/qtest/qmp-cmd-test.o
+tests/qtest/device-introspect-test$(EXESUF): tests/qtest/device-introspect-test.o
+tests/qtest/rtc-test$(EXESUF): tests/qtest/rtc-test.o
+tests/qtest/m48t59-test$(EXESUF): tests/qtest/m48t59-test.o
+tests/qtest/hexloader-test$(EXESUF): tests/qtest/hexloader-test.o
+tests/qtest/pflash-cfi02$(EXESUF): tests/qtest/pflash-cfi02-test.o
+tests/qtest/endianness-test$(EXESUF): tests/qtest/endianness-test.o
+tests/qtest/prom-env-test$(EXESUF): tests/qtest/prom-env-test.o $(libqos-obj-y)
+tests/qtest/rtas-test$(EXESUF): tests/qtest/rtas-test.o $(libqos-spapr-obj-y)
+tests/qtest/fdc-test$(EXESUF): tests/qtest/fdc-test.o
+tests/qtest/ide-test$(EXESUF): tests/qtest/ide-test.o $(libqos-pc-obj-y)
+tests/qtest/ahci-test$(EXESUF): tests/qtest/ahci-test.o $(libqos-pc-obj-y) qemu-img$(EXESUF)
+tests/qtest/ipmi-kcs-test$(EXESUF): tests/qtest/ipmi-kcs-test.o
+tests/qtest/ipmi-bt-test$(EXESUF): tests/qtest/ipmi-bt-test.o
+tests/qtest/hd-geo-test$(EXESUF): tests/qtest/hd-geo-test.o $(libqos-obj-y)
+tests/qtest/boot-order-test$(EXESUF): tests/qtest/boot-order-test.o $(libqos-obj-y)
+tests/qtest/boot-serial-test$(EXESUF): tests/qtest/boot-serial-test.o $(libqos-obj-y)
+tests/qtest/bios-tables-test$(EXESUF): tests/qtest/bios-tables-test.o \
+	tests/qtest/boot-sector.o tests/qtest/acpi-utils.o $(libqos-obj-y)
+tests/qtest/pxe-test$(EXESUF): tests/qtest/pxe-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
+tests/qtest/microbit-test$(EXESUF): tests/qtest/microbit-test.o
+tests/qtest/m25p80-test$(EXESUF): tests/qtest/m25p80-test.o
+tests/qtest/i440fx-test$(EXESUF): tests/qtest/i440fx-test.o $(libqos-pc-obj-y)
+tests/qtest/q35-test$(EXESUF): tests/qtest/q35-test.o $(libqos-pc-obj-y)
+tests/qtest/fw_cfg-test$(EXESUF): tests/qtest/fw_cfg-test.o $(libqos-pc-obj-y)
+tests/qtest/rtl8139-test$(EXESUF): tests/qtest/rtl8139-test.o $(libqos-pc-obj-y)
+tests/qtest/pnv-xscom-test$(EXESUF): tests/qtest/pnv-xscom-test.o
+tests/qtest/wdt_ib700-test$(EXESUF): tests/qtest/wdt_ib700-test.o
+tests/qtest/tco-test$(EXESUF): tests/qtest/tco-test.o $(libqos-pc-obj-y)
+tests/qtest/virtio-ccw-test$(EXESUF): tests/qtest/virtio-ccw-test.o
+tests/qtest/display-vga-test$(EXESUF): tests/qtest/display-vga-test.o
+tests/qtest/qom-test$(EXESUF): tests/qtest/qom-test.o
+tests/qtest/test-hmp$(EXESUF): tests/qtest/test-hmp.o
+tests/qtest/machine-none-test$(EXESUF): tests/qtest/machine-none-test.o
+tests/qtest/device-plug-test$(EXESUF): tests/qtest/device-plug-test.o
+tests/qtest/drive_del-test$(EXESUF): tests/qtest/drive_del-test.o
+tests/qtest/pvpanic-test$(EXESUF): tests/qtest/pvpanic-test.o
+tests/qtest/i82801b11-test$(EXESUF): tests/qtest/i82801b11-test.o
+tests/qtest/intel-hda-test$(EXESUF): tests/qtest/intel-hda-test.o
+tests/qtest/ioh3420-test$(EXESUF): tests/qtest/ioh3420-test.o
+tests/qtest/usb-hcd-uhci-test$(EXESUF): tests/qtest/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
+tests/qtest/usb-hcd-ehci-test$(EXESUF): tests/qtest/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
+tests/qtest/usb-hcd-xhci-test$(EXESUF): tests/qtest/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
+tests/qtest/cpu-plug-test$(EXESUF): tests/qtest/cpu-plug-test.o
+tests/qtest/migration-test$(EXESUF): tests/qtest/migration-test.o tests/qtest/migration-helpers.o
+tests/qtest/qemu-iotests/qtest/socket_scm_helper$(EXESUF): tests/qtest/qemu-iotests/qtest/socket_scm_helper.o
+tests/qtest/test-netfilter$(EXESUF): tests/qtest/test-netfilter.o $(qtest-obj-y)
+tests/qtest/test-filter-mirror$(EXESUF): tests/qtest/test-filter-mirror.o $(qtest-obj-y)
+tests/qtest/test-filter-redirector$(EXESUF): tests/qtest/test-filter-redirector.o $(qtest-obj-y)
+tests/qtest/test-x86-cpuid-compat$(EXESUF): tests/qtest/test-x86-cpuid-compat.o $(qtest-obj-y)
+tests/qtest/ivshmem-test$(EXESUF): tests/qtest/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
+tests/qtest/dbus-vmstate-test$(EXESUF): tests/qtest/dbus-vmstate-test.o tests/qtest/migration-helpers.o tests/qtest/dbus-vmstate1.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
+tests/qtest/vhost-user-bridge$(EXESUF): tests/qtest/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
+tests/qtest/test-arm-mptimer$(EXESUF): tests/qtest/test-arm-mptimer.o
+tests/qtest/numa-test$(EXESUF): tests/qtest/numa-test.o
+tests/qtest/vmgenid-test$(EXESUF): tests/qtest/vmgenid-test.o tests/qtest/boot-sector.o tests/qtest/acpi-utils.o
+tests/qtest/cdrom-test$(EXESUF): tests/qtest/cdrom-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
+tests/qtest/arm-cpu-features$(EXESUF): tests/qtest/arm-cpu-features.o
 
 tests/migration/stress$(EXESUF): tests/migration/stress.o
 	$(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@")
@@ -886,13 +886,13 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
 TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
 ifeq ($(CONFIG_POSIX),y)
 QTEST_TARGETS = $(TARGETS)
-check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y:%=tests/%$(EXESUF)))
-check-qtest-y += $(check-qtest-generic-y:%=tests/%$(EXESUF))
+check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y:%=tests/qtest/%$(EXESUF)))
+check-qtest-y += $(check-qtest-generic-y:%=tests/qtest/%$(EXESUF))
 else
 QTEST_TARGETS =
 endif
 
-qtest-obj-y = tests/libqtest.o $(test-util-obj-y)
+qtest-obj-y = tests/qtest/libqtest.o $(test-util-obj-y)
 $(check-qtest-y): $(qtest-obj-y)
 
 tests/test-qga$(EXESUF): qemu-ga$(EXESUF)
@@ -937,7 +937,7 @@ endef
 
 .PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
 $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: %-softmmu/all $(check-qtest-y)
-	$(call do_test_human,$(check-qtest-$*-y:%=tests/%$(EXESUF)) $(check-qtest-generic-y:%=tests/%$(EXESUF)), \
+	$(call do_test_human,$(check-qtest-$*-y:%=tests/qtest/%$(EXESUF)) $(check-qtest-generic-y:%=tests/qtest/%$(EXESUF)), \
 	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
 
@@ -950,7 +950,7 @@ check-speed: $(check-speed-y)
 # gtester tests with TAP output
 
 $(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: %-softmmu/all $(check-qtest-y)
-	$(call do_test_tap, $(check-qtest-$*-y:%=tests/%$(EXESUF)) $(check-qtest-generic-y:%=tests/%$(EXESUF)), \
+	$(call do_test_tap, $(check-qtest-$*-y:%=tests/qtest/%$(EXESUF)) $(check-qtest-generic-y:%=tests/qtest/%$(EXESUF)), \
 	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
 
@@ -1215,10 +1215,10 @@ check-block: $(patsubst %,check-%, $(check-block-y))
 endif
 check: check-block check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
 check-clean:
-	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
-	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y:%=tests/%$(EXESUF))) $(check-qtest-generic-y:%=tests/%$(EXESUF)))
+	rm -rf $(check-unit-y) tests/*.o tests/*/*.o $(QEMU_IOTESTS_HELPERS-y)
+	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y:%=tests/qtest/%$(EXESUF))) $(check-qtest-generic-y:%=tests/qtest/%$(EXESUF)))
 	rm -f tests/test-qapi-gen-timestamp
-	rm -f tests/dbus-vmstate1-gen-timestamp
+	rm -f tests/qtest/dbus-vmstate1-gen-timestamp
 	rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)
 
 clean: check-clean
@@ -1228,6 +1228,7 @@ clean: check-clean
 all: $(QEMU_IOTESTS_HELPERS-y)
 
 -include $(wildcard tests/*.d)
+-include $(wildcard tests/qtest/*.d)
 -include $(wildcard tests/libqos/*.d)
 
 endif
diff --git a/tests/ac97-test.c b/tests/qtest/ac97-test.c
similarity index 100%
rename from tests/ac97-test.c
rename to tests/qtest/ac97-test.c
diff --git a/tests/acpi-utils.c b/tests/qtest/acpi-utils.c
similarity index 100%
rename from tests/acpi-utils.c
rename to tests/qtest/acpi-utils.c
diff --git a/tests/acpi-utils.h b/tests/qtest/acpi-utils.h
similarity index 100%
rename from tests/acpi-utils.h
rename to tests/qtest/acpi-utils.h
diff --git a/tests/ahci-test.c b/tests/qtest/ahci-test.c
similarity index 100%
rename from tests/ahci-test.c
rename to tests/qtest/ahci-test.c
diff --git a/tests/arm-cpu-features.c b/tests/qtest/arm-cpu-features.c
similarity index 100%
rename from tests/arm-cpu-features.c
rename to tests/qtest/arm-cpu-features.c
diff --git a/tests/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
similarity index 100%
rename from tests/bios-tables-test-allowed-diff.h
rename to tests/qtest/bios-tables-test-allowed-diff.h
diff --git a/tests/bios-tables-test.c b/tests/qtest/bios-tables-test.c
similarity index 100%
rename from tests/bios-tables-test.c
rename to tests/qtest/bios-tables-test.c
diff --git a/tests/boot-order-test.c b/tests/qtest/boot-order-test.c
similarity index 100%
rename from tests/boot-order-test.c
rename to tests/qtest/boot-order-test.c
diff --git a/tests/boot-sector.c b/tests/qtest/boot-sector.c
similarity index 100%
rename from tests/boot-sector.c
rename to tests/qtest/boot-sector.c
diff --git a/tests/boot-sector.h b/tests/qtest/boot-sector.h
similarity index 100%
rename from tests/boot-sector.h
rename to tests/qtest/boot-sector.h
diff --git a/tests/boot-serial-test.c b/tests/qtest/boot-serial-test.c
similarity index 100%
rename from tests/boot-serial-test.c
rename to tests/qtest/boot-serial-test.c
diff --git a/tests/cdrom-test.c b/tests/qtest/cdrom-test.c
similarity index 100%
rename from tests/cdrom-test.c
rename to tests/qtest/cdrom-test.c
diff --git a/tests/cpu-plug-test.c b/tests/qtest/cpu-plug-test.c
similarity index 100%
rename from tests/cpu-plug-test.c
rename to tests/qtest/cpu-plug-test.c
diff --git a/tests/dbus-vmstate-test.c b/tests/qtest/dbus-vmstate-test.c
similarity index 100%
rename from tests/dbus-vmstate-test.c
rename to tests/qtest/dbus-vmstate-test.c
diff --git a/tests/dbus-vmstate1.xml b/tests/qtest/dbus-vmstate1.xml
similarity index 100%
rename from tests/dbus-vmstate1.xml
rename to tests/qtest/dbus-vmstate1.xml
diff --git a/tests/device-introspect-test.c b/tests/qtest/device-introspect-test.c
similarity index 100%
rename from tests/device-introspect-test.c
rename to tests/qtest/device-introspect-test.c
diff --git a/tests/device-plug-test.c b/tests/qtest/device-plug-test.c
similarity index 100%
rename from tests/device-plug-test.c
rename to tests/qtest/device-plug-test.c
diff --git a/tests/display-vga-test.c b/tests/qtest/display-vga-test.c
similarity index 100%
rename from tests/display-vga-test.c
rename to tests/qtest/display-vga-test.c
diff --git a/tests/drive_del-test.c b/tests/qtest/drive_del-test.c
similarity index 100%
rename from tests/drive_del-test.c
rename to tests/qtest/drive_del-test.c
diff --git a/tests/ds1338-test.c b/tests/qtest/ds1338-test.c
similarity index 100%
rename from tests/ds1338-test.c
rename to tests/qtest/ds1338-test.c
diff --git a/tests/e1000-test.c b/tests/qtest/e1000-test.c
similarity index 100%
rename from tests/e1000-test.c
rename to tests/qtest/e1000-test.c
diff --git a/tests/e1000e-test.c b/tests/qtest/e1000e-test.c
similarity index 100%
rename from tests/e1000e-test.c
rename to tests/qtest/e1000e-test.c
diff --git a/tests/eepro100-test.c b/tests/qtest/eepro100-test.c
similarity index 100%
rename from tests/eepro100-test.c
rename to tests/qtest/eepro100-test.c
diff --git a/tests/endianness-test.c b/tests/qtest/endianness-test.c
similarity index 100%
rename from tests/endianness-test.c
rename to tests/qtest/endianness-test.c
diff --git a/tests/es1370-test.c b/tests/qtest/es1370-test.c
similarity index 100%
rename from tests/es1370-test.c
rename to tests/qtest/es1370-test.c
diff --git a/tests/fdc-test.c b/tests/qtest/fdc-test.c
similarity index 100%
rename from tests/fdc-test.c
rename to tests/qtest/fdc-test.c
diff --git a/tests/fw_cfg-test.c b/tests/qtest/fw_cfg-test.c
similarity index 100%
rename from tests/fw_cfg-test.c
rename to tests/qtest/fw_cfg-test.c
diff --git a/tests/hd-geo-test.c b/tests/qtest/hd-geo-test.c
similarity index 100%
rename from tests/hd-geo-test.c
rename to tests/qtest/hd-geo-test.c
diff --git a/tests/hexloader-test.c b/tests/qtest/hexloader-test.c
similarity index 100%
rename from tests/hexloader-test.c
rename to tests/qtest/hexloader-test.c
diff --git a/tests/i440fx-test.c b/tests/qtest/i440fx-test.c
similarity index 100%
rename from tests/i440fx-test.c
rename to tests/qtest/i440fx-test.c
diff --git a/tests/i82801b11-test.c b/tests/qtest/i82801b11-test.c
similarity index 100%
rename from tests/i82801b11-test.c
rename to tests/qtest/i82801b11-test.c
diff --git a/tests/ide-test.c b/tests/qtest/ide-test.c
similarity index 100%
rename from tests/ide-test.c
rename to tests/qtest/ide-test.c
diff --git a/tests/intel-hda-test.c b/tests/qtest/intel-hda-test.c
similarity index 100%
rename from tests/intel-hda-test.c
rename to tests/qtest/intel-hda-test.c
diff --git a/tests/ioh3420-test.c b/tests/qtest/ioh3420-test.c
similarity index 100%
rename from tests/ioh3420-test.c
rename to tests/qtest/ioh3420-test.c
diff --git a/tests/ipmi-bt-test.c b/tests/qtest/ipmi-bt-test.c
similarity index 100%
rename from tests/ipmi-bt-test.c
rename to tests/qtest/ipmi-bt-test.c
diff --git a/tests/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c
similarity index 100%
rename from tests/ipmi-kcs-test.c
rename to tests/qtest/ipmi-kcs-test.c
diff --git a/tests/ipoctal232-test.c b/tests/qtest/ipoctal232-test.c
similarity index 100%
rename from tests/ipoctal232-test.c
rename to tests/qtest/ipoctal232-test.c
diff --git a/tests/ivshmem-test.c b/tests/qtest/ivshmem-test.c
similarity index 100%
rename from tests/ivshmem-test.c
rename to tests/qtest/ivshmem-test.c
diff --git a/tests/libqtest-single.h b/tests/qtest/libqtest-single.h
similarity index 100%
rename from tests/libqtest-single.h
rename to tests/qtest/libqtest-single.h
diff --git a/tests/libqtest.c b/tests/qtest/libqtest.c
similarity index 100%
rename from tests/libqtest.c
rename to tests/qtest/libqtest.c
diff --git a/tests/libqtest.h b/tests/qtest/libqtest.h
similarity index 100%
rename from tests/libqtest.h
rename to tests/qtest/libqtest.h
diff --git a/tests/m25p80-test.c b/tests/qtest/m25p80-test.c
similarity index 100%
rename from tests/m25p80-test.c
rename to tests/qtest/m25p80-test.c
diff --git a/tests/m48t59-test.c b/tests/qtest/m48t59-test.c
similarity index 100%
rename from tests/m48t59-test.c
rename to tests/qtest/m48t59-test.c
diff --git a/tests/machine-none-test.c b/tests/qtest/machine-none-test.c
similarity index 100%
rename from tests/machine-none-test.c
rename to tests/qtest/machine-none-test.c
diff --git a/tests/megasas-test.c b/tests/qtest/megasas-test.c
similarity index 100%
rename from tests/megasas-test.c
rename to tests/qtest/megasas-test.c
diff --git a/tests/microbit-test.c b/tests/qtest/microbit-test.c
similarity index 100%
rename from tests/microbit-test.c
rename to tests/qtest/microbit-test.c
diff --git a/tests/migration-helpers.c b/tests/qtest/migration-helpers.c
similarity index 100%
rename from tests/migration-helpers.c
rename to tests/qtest/migration-helpers.c
diff --git a/tests/migration-helpers.h b/tests/qtest/migration-helpers.h
similarity index 100%
rename from tests/migration-helpers.h
rename to tests/qtest/migration-helpers.h
diff --git a/tests/migration-test.c b/tests/qtest/migration-test.c
similarity index 100%
rename from tests/migration-test.c
rename to tests/qtest/migration-test.c
diff --git a/tests/modules-test.c b/tests/qtest/modules-test.c
similarity index 100%
rename from tests/modules-test.c
rename to tests/qtest/modules-test.c
diff --git a/tests/ne2000-test.c b/tests/qtest/ne2000-test.c
similarity index 100%
rename from tests/ne2000-test.c
rename to tests/qtest/ne2000-test.c
diff --git a/tests/numa-test.c b/tests/qtest/numa-test.c
similarity index 100%
rename from tests/numa-test.c
rename to tests/qtest/numa-test.c
diff --git a/tests/nvme-test.c b/tests/qtest/nvme-test.c
similarity index 100%
rename from tests/nvme-test.c
rename to tests/qtest/nvme-test.c
diff --git a/tests/pca9552-test.c b/tests/qtest/pca9552-test.c
similarity index 100%
rename from tests/pca9552-test.c
rename to tests/qtest/pca9552-test.c
diff --git a/tests/pci-test.c b/tests/qtest/pci-test.c
similarity index 100%
rename from tests/pci-test.c
rename to tests/qtest/pci-test.c
diff --git a/tests/pcnet-test.c b/tests/qtest/pcnet-test.c
similarity index 100%
rename from tests/pcnet-test.c
rename to tests/qtest/pcnet-test.c
diff --git a/tests/pflash-cfi02-test.c b/tests/qtest/pflash-cfi02-test.c
similarity index 100%
rename from tests/pflash-cfi02-test.c
rename to tests/qtest/pflash-cfi02-test.c
diff --git a/tests/pnv-xscom-test.c b/tests/qtest/pnv-xscom-test.c
similarity index 100%
rename from tests/pnv-xscom-test.c
rename to tests/qtest/pnv-xscom-test.c
diff --git a/tests/prom-env-test.c b/tests/qtest/prom-env-test.c
similarity index 100%
rename from tests/prom-env-test.c
rename to tests/qtest/prom-env-test.c
diff --git a/tests/pvpanic-test.c b/tests/qtest/pvpanic-test.c
similarity index 100%
rename from tests/pvpanic-test.c
rename to tests/qtest/pvpanic-test.c
diff --git a/tests/pxe-test.c b/tests/qtest/pxe-test.c
similarity index 100%
rename from tests/pxe-test.c
rename to tests/qtest/pxe-test.c
diff --git a/tests/q35-test.c b/tests/qtest/q35-test.c
similarity index 100%
rename from tests/q35-test.c
rename to tests/qtest/q35-test.c
diff --git a/tests/qmp-cmd-test.c b/tests/qtest/qmp-cmd-test.c
similarity index 100%
rename from tests/qmp-cmd-test.c
rename to tests/qtest/qmp-cmd-test.c
diff --git a/tests/qmp-test.c b/tests/qtest/qmp-test.c
similarity index 100%
rename from tests/qmp-test.c
rename to tests/qtest/qmp-test.c
diff --git a/tests/qom-test.c b/tests/qtest/qom-test.c
similarity index 100%
rename from tests/qom-test.c
rename to tests/qtest/qom-test.c
diff --git a/tests/qos-test.c b/tests/qtest/qos-test.c
similarity index 100%
rename from tests/qos-test.c
rename to tests/qtest/qos-test.c
diff --git a/tests/rtas-test.c b/tests/qtest/rtas-test.c
similarity index 100%
rename from tests/rtas-test.c
rename to tests/qtest/rtas-test.c
diff --git a/tests/rtc-test.c b/tests/qtest/rtc-test.c
similarity index 100%
rename from tests/rtc-test.c
rename to tests/qtest/rtc-test.c
diff --git a/tests/rtl8139-test.c b/tests/qtest/rtl8139-test.c
similarity index 100%
rename from tests/rtl8139-test.c
rename to tests/qtest/rtl8139-test.c
diff --git a/tests/sdhci-test.c b/tests/qtest/sdhci-test.c
similarity index 100%
rename from tests/sdhci-test.c
rename to tests/qtest/sdhci-test.c
diff --git a/tests/spapr-phb-test.c b/tests/qtest/spapr-phb-test.c
similarity index 100%
rename from tests/spapr-phb-test.c
rename to tests/qtest/spapr-phb-test.c
diff --git a/tests/tco-test.c b/tests/qtest/tco-test.c
similarity index 100%
rename from tests/tco-test.c
rename to tests/qtest/tco-test.c
diff --git a/tests/test-arm-mptimer.c b/tests/qtest/test-arm-mptimer.c
similarity index 100%
rename from tests/test-arm-mptimer.c
rename to tests/qtest/test-arm-mptimer.c
diff --git a/tests/test-filter-mirror.c b/tests/qtest/test-filter-mirror.c
similarity index 100%
rename from tests/test-filter-mirror.c
rename to tests/qtest/test-filter-mirror.c
diff --git a/tests/test-filter-redirector.c b/tests/qtest/test-filter-redirector.c
similarity index 100%
rename from tests/test-filter-redirector.c
rename to tests/qtest/test-filter-redirector.c
diff --git a/tests/test-hmp.c b/tests/qtest/test-hmp.c
similarity index 100%
rename from tests/test-hmp.c
rename to tests/qtest/test-hmp.c
diff --git a/tests/test-netfilter.c b/tests/qtest/test-netfilter.c
similarity index 100%
rename from tests/test-netfilter.c
rename to tests/qtest/test-netfilter.c
diff --git a/tests/test-x86-cpuid-compat.c b/tests/qtest/test-x86-cpuid-compat.c
similarity index 100%
rename from tests/test-x86-cpuid-compat.c
rename to tests/qtest/test-x86-cpuid-compat.c
diff --git a/tests/tmp105-test.c b/tests/qtest/tmp105-test.c
similarity index 100%
rename from tests/tmp105-test.c
rename to tests/qtest/tmp105-test.c
diff --git a/tests/tpm-crb-swtpm-test.c b/tests/qtest/tpm-crb-swtpm-test.c
similarity index 100%
rename from tests/tpm-crb-swtpm-test.c
rename to tests/qtest/tpm-crb-swtpm-test.c
diff --git a/tests/tpm-crb-test.c b/tests/qtest/tpm-crb-test.c
similarity index 100%
rename from tests/tpm-crb-test.c
rename to tests/qtest/tpm-crb-test.c
diff --git a/tests/tpm-emu.c b/tests/qtest/tpm-emu.c
similarity index 100%
rename from tests/tpm-emu.c
rename to tests/qtest/tpm-emu.c
diff --git a/tests/tpm-emu.h b/tests/qtest/tpm-emu.h
similarity index 100%
rename from tests/tpm-emu.h
rename to tests/qtest/tpm-emu.h
diff --git a/tests/tpm-tests.c b/tests/qtest/tpm-tests.c
similarity index 100%
rename from tests/tpm-tests.c
rename to tests/qtest/tpm-tests.c
diff --git a/tests/tpm-tests.h b/tests/qtest/tpm-tests.h
similarity index 100%
rename from tests/tpm-tests.h
rename to tests/qtest/tpm-tests.h
diff --git a/tests/tpm-tis-swtpm-test.c b/tests/qtest/tpm-tis-swtpm-test.c
similarity index 100%
rename from tests/tpm-tis-swtpm-test.c
rename to tests/qtest/tpm-tis-swtpm-test.c
diff --git a/tests/tpm-tis-test.c b/tests/qtest/tpm-tis-test.c
similarity index 100%
rename from tests/tpm-tis-test.c
rename to tests/qtest/tpm-tis-test.c
diff --git a/tests/tpm-util.c b/tests/qtest/tpm-util.c
similarity index 100%
rename from tests/tpm-util.c
rename to tests/qtest/tpm-util.c
diff --git a/tests/tpm-util.h b/tests/qtest/tpm-util.h
similarity index 100%
rename from tests/tpm-util.h
rename to tests/qtest/tpm-util.h
diff --git a/tests/usb-hcd-ehci-test.c b/tests/qtest/usb-hcd-ehci-test.c
similarity index 100%
rename from tests/usb-hcd-ehci-test.c
rename to tests/qtest/usb-hcd-ehci-test.c
diff --git a/tests/usb-hcd-ohci-test.c b/tests/qtest/usb-hcd-ohci-test.c
similarity index 100%
rename from tests/usb-hcd-ohci-test.c
rename to tests/qtest/usb-hcd-ohci-test.c
diff --git a/tests/usb-hcd-uhci-test.c b/tests/qtest/usb-hcd-uhci-test.c
similarity index 100%
rename from tests/usb-hcd-uhci-test.c
rename to tests/qtest/usb-hcd-uhci-test.c
diff --git a/tests/usb-hcd-xhci-test.c b/tests/qtest/usb-hcd-xhci-test.c
similarity index 100%
rename from tests/usb-hcd-xhci-test.c
rename to tests/qtest/usb-hcd-xhci-test.c
diff --git a/tests/vhost-user-test.c b/tests/qtest/vhost-user-test.c
similarity index 100%
rename from tests/vhost-user-test.c
rename to tests/qtest/vhost-user-test.c
diff --git a/tests/virtio-9p-test.c b/tests/qtest/virtio-9p-test.c
similarity index 100%
rename from tests/virtio-9p-test.c
rename to tests/qtest/virtio-9p-test.c
diff --git a/tests/virtio-blk-test.c b/tests/qtest/virtio-blk-test.c
similarity index 100%
rename from tests/virtio-blk-test.c
rename to tests/qtest/virtio-blk-test.c
diff --git a/tests/virtio-ccw-test.c b/tests/qtest/virtio-ccw-test.c
similarity index 100%
rename from tests/virtio-ccw-test.c
rename to tests/qtest/virtio-ccw-test.c
diff --git a/tests/virtio-net-test.c b/tests/qtest/virtio-net-test.c
similarity index 100%
rename from tests/virtio-net-test.c
rename to tests/qtest/virtio-net-test.c
diff --git a/tests/virtio-rng-test.c b/tests/qtest/virtio-rng-test.c
similarity index 100%
rename from tests/virtio-rng-test.c
rename to tests/qtest/virtio-rng-test.c
diff --git a/tests/virtio-scsi-test.c b/tests/qtest/virtio-scsi-test.c
similarity index 100%
rename from tests/virtio-scsi-test.c
rename to tests/qtest/virtio-scsi-test.c
diff --git a/tests/virtio-serial-test.c b/tests/qtest/virtio-serial-test.c
similarity index 100%
rename from tests/virtio-serial-test.c
rename to tests/qtest/virtio-serial-test.c
diff --git a/tests/virtio-test.c b/tests/qtest/virtio-test.c
similarity index 100%
rename from tests/virtio-test.c
rename to tests/qtest/virtio-test.c
diff --git a/tests/vmgenid-test.c b/tests/qtest/vmgenid-test.c
similarity index 100%
rename from tests/vmgenid-test.c
rename to tests/qtest/vmgenid-test.c
diff --git a/tests/vmxnet3-test.c b/tests/qtest/vmxnet3-test.c
similarity index 100%
rename from tests/vmxnet3-test.c
rename to tests/qtest/vmxnet3-test.c
diff --git a/tests/wdt_ib700-test.c b/tests/qtest/wdt_ib700-test.c
similarity index 100%
rename from tests/wdt_ib700-test.c
rename to tests/qtest/wdt_ib700-test.c

From 833884f37adc9f125fa2f345704d7019b8651619 Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Mon, 9 Sep 2019 14:41:27 +0200
Subject: [PATCH 6/8] tests/Makefile: Move qtest-related settings to a separate
 Makefile.include

tests/Makefile.include is pretty much overcrowded. Now that we have a
dedicated folder for the qtests, let's move the related settings
to a Makefile.include file in that directory instead.

Message-Id: <20191218103059.11729-7-thuth@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/Makefile.include       | 319 +----------------------------------
 tests/qtest/Makefile.include | 318 ++++++++++++++++++++++++++++++++++
 2 files changed, 319 insertions(+), 318 deletions(-)
 create mode 100644 tests/qtest/Makefile.include

diff --git a/tests/Makefile.include b/tests/Makefile.include
index bd2bcd6f1b..065fd09964 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -149,164 +149,6 @@ check-unit-y += tests/test-qapi-util$(EXESUF)
 
 check-block-$(call land,$(CONFIG_POSIX),$(CONFIG_SOFTMMU)) += tests/check-block.sh
 
-# All QTests for now are POSIX-only, but the dependencies are
-# really in libqtest, not in the testcases themselves.
-
-check-qtest-generic-y += qmp-test
-check-qtest-generic-y += qmp-cmd-test
-check-qtest-generic-$(CONFIG_MODULES) += modules-test
-
-check-qtest-generic-y += device-introspect-test
-check-qtest-generic-y += cdrom-test
-
-DBUS_DAEMON := $(shell which dbus-daemon 2>/dev/null)
-ifneq ($(GDBUS_CODEGEN),)
-ifneq ($(DBUS_DAEMON),)
-check-qtest-pci-$(CONFIG_GIO) += dbus-vmstate-test
-endif
-endif
-
-check-qtest-pci-$(CONFIG_RTL8139_PCI) += rtl8139-test
-check-qtest-pci-$(CONFIG_VGA) += display-vga-test
-check-qtest-pci-$(CONFIG_HDA) += intel-hda-test
-check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += ivshmem-test
-
-check-qtest-i386-$(CONFIG_ISA_TESTDEV) = endianness-test
-check-qtest-i386-y += fdc-test
-check-qtest-i386-y += ide-test
-check-qtest-i386-$(CONFIG_TOOLS) += ahci-test
-check-qtest-i386-y += hd-geo-test
-check-qtest-i386-y += boot-order-test
-check-qtest-i386-y += bios-tables-test
-check-qtest-i386-$(CONFIG_SGA) += boot-serial-test
-check-qtest-i386-$(CONFIG_SLIRP) += pxe-test
-check-qtest-i386-y += rtc-test
-check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += ipmi-kcs-test
-ifdef CONFIG_LINUX
-check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += ipmi-bt-test
-endif
-check-qtest-i386-y += i440fx-test
-check-qtest-i386-y += fw_cfg-test
-check-qtest-i386-y += device-plug-test
-check-qtest-i386-y += drive_del-test
-check-qtest-i386-$(CONFIG_WDT_IB700) += wdt_ib700-test
-check-qtest-i386-y += tco-test
-check-qtest-i386-y += $(check-qtest-pci-y)
-check-qtest-i386-$(CONFIG_PVPANIC) += pvpanic-test
-check-qtest-i386-$(CONFIG_I82801B11) += i82801b11-test
-check-qtest-i386-$(CONFIG_IOH3420) += ioh3420-test
-check-qtest-i386-$(CONFIG_USB_UHCI) += usb-hcd-uhci-test
-check-qtest-i386-$(call land,$(CONFIG_USB_EHCI),$(CONFIG_USB_UHCI)) += usb-hcd-ehci-test
-check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += usb-hcd-xhci-test
-check-qtest-i386-y += cpu-plug-test
-check-qtest-i386-y += q35-test
-check-qtest-i386-y += vmgenid-test
-check-qtest-i386-$(CONFIG_TPM_CRB) += tpm-crb-swtpm-test
-check-qtest-i386-$(CONFIG_TPM_CRB) += tpm-crb-test
-check-qtest-i386-$(CONFIG_TPM_TIS) += tpm-tis-swtpm-test
-check-qtest-i386-$(CONFIG_TPM_TIS) += tpm-tis-test
-check-qtest-i386-$(CONFIG_SLIRP) += test-netfilter
-check-qtest-i386-$(CONFIG_POSIX) += test-filter-mirror
-check-qtest-i386-$(CONFIG_RTL8139_PCI) += test-filter-redirector
-check-qtest-i386-y += migration-test
-check-qtest-i386-y += test-x86-cpuid-compat
-check-qtest-i386-y += numa-test
-
-check-qtest-x86_64-y += $(check-qtest-i386-y)
-
-check-qtest-alpha-y += boot-serial-test
-check-qtest-alpha-$(CONFIG_VGA) += display-vga-test
-
-check-qtest-hppa-y += boot-serial-test
-check-qtest-hppa-$(CONFIG_VGA) += display-vga-test
-
-check-qtest-m68k-y = boot-serial-test
-
-check-qtest-microblaze-y += boot-serial-test
-
-check-qtest-mips-$(CONFIG_ISA_TESTDEV) = endianness-test
-check-qtest-mips-$(CONFIG_VGA) += display-vga-test
-
-check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = endianness-test
-check-qtest-mips64-$(CONFIG_VGA) += display-vga-test
-
-check-qtest-mips64el-$(CONFIG_ISA_TESTDEV) = endianness-test
-check-qtest-mips64el-$(CONFIG_VGA) += display-vga-test
-
-check-qtest-moxie-y += boot-serial-test
-
-check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = endianness-test
-check-qtest-ppc-y += boot-order-test
-check-qtest-ppc-y += prom-env-test
-check-qtest-ppc-y += drive_del-test
-check-qtest-ppc-y += boot-serial-test
-check-qtest-ppc-$(CONFIG_M48T59) += m48t59-test
-
-check-qtest-ppc64-y += $(check-qtest-ppc-y)
-check-qtest-ppc64-$(CONFIG_PSERIES) += device-plug-test
-check-qtest-ppc64-$(CONFIG_POWERNV) += pnv-xscom-test
-check-qtest-ppc64-y += migration-test
-check-qtest-ppc64-$(CONFIG_PSERIES) += rtas-test
-check-qtest-ppc64-$(CONFIG_SLIRP) += pxe-test
-check-qtest-ppc64-$(CONFIG_USB_UHCI) += usb-hcd-uhci-test
-check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += usb-hcd-xhci-test
-check-qtest-ppc64-$(CONFIG_SLIRP) += test-netfilter
-check-qtest-ppc64-$(CONFIG_POSIX) += test-filter-mirror
-check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += test-filter-redirector
-check-qtest-ppc64-$(CONFIG_VGA) += display-vga-test
-check-qtest-ppc64-y += numa-test
-check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += ivshmem-test
-check-qtest-ppc64-y += cpu-plug-test
-
-check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = endianness-test
-
-check-qtest-sh4eb-$(CONFIG_ISA_TESTDEV) = endianness-test
-
-check-qtest-sparc-y += prom-env-test
-check-qtest-sparc-y += m48t59-test
-check-qtest-sparc-y += boot-serial-test
-
-check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = endianness-test
-check-qtest-sparc64-y += prom-env-test
-check-qtest-sparc64-y += boot-serial-test
-
-check-qtest-arm-y += arm-cpu-features
-check-qtest-arm-y += microbit-test
-check-qtest-arm-y += m25p80-test
-check-qtest-arm-y += test-arm-mptimer
-check-qtest-arm-y += boot-serial-test
-check-qtest-arm-y += hexloader-test
-check-qtest-arm-$(CONFIG_PFLASH_CFI02) += pflash-cfi02-test
-
-check-qtest-aarch64-y += arm-cpu-features
-check-qtest-aarch64-y += numa-test
-check-qtest-aarch64-y += boot-serial-test
-check-qtest-aarch64-y += migration-test
-
-# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional
-ifneq ($(ARCH),arm)
-check-qtest-aarch64-y += bios-tables-test
-endif
-
-check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
-
-check-qtest-xtensaeb-y += $(check-qtest-xtensa-y)
-
-check-qtest-s390x-y = boot-serial-test
-check-qtest-s390x-$(CONFIG_SLIRP) += pxe-test
-check-qtest-s390x-$(CONFIG_SLIRP) += test-netfilter
-check-qtest-s390x-$(CONFIG_POSIX) += test-filter-mirror
-check-qtest-s390x-$(CONFIG_POSIX) += test-filter-redirector
-check-qtest-s390x-y += drive_del-test
-check-qtest-s390x-y += device-plug-test
-check-qtest-s390x-y += virtio-ccw-test
-check-qtest-s390x-y += cpu-plug-test
-check-qtest-s390x-y += migration-test
-
-check-qtest-generic-y += machine-none-test
-check-qtest-generic-y += qom-test
-check-qtest-generic-y += test-hmp
-
 qapi-schema += alternate-any.json
 qapi-schema += alternate-array.json
 qapi-schema += alternate-base.json
@@ -708,12 +550,6 @@ tests/test-authz-pam$(EXESUF): tests/test-authz-pam.o $(test-authz-obj-y)
 tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y)
 tests/test-io-channel-socket$(EXESUF): tests/test-io-channel-socket.o \
         tests/io-channel-helpers.o tests/socket-helpers.o $(test-io-obj-y)
-tests/qtest/tpm-crb-swtpm-test$(EXESUF): tests/qtest/tpm-crb-swtpm-test.o tests/qtest/tpm-emu.o \
-	tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
-tests/qtest/tpm-crb-test$(EXESUF): tests/qtest/tpm-crb-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
-tests/qtest/tpm-tis-swtpm-test$(EXESUF): tests/qtest/tpm-tis-swtpm-test.o tests/qtest/tpm-emu.o \
-	tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
-tests/qtest/tpm-tis-test$(EXESUF): tests/qtest/tpm-tis-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
 tests/test-io-channel-file$(EXESUF): tests/test-io-channel-file.o \
         tests/io-channel-helpers.o $(test-io-obj-y)
 tests/test-io-channel-tls$(EXESUF): tests/test-io-channel-tls.o \
@@ -728,147 +564,6 @@ tests/test-crypto-ivgen$(EXESUF): tests/test-crypto-ivgen.o $(test-crypto-obj-y)
 tests/test-crypto-afsplit$(EXESUF): tests/test-crypto-afsplit.o $(test-crypto-obj-y)
 tests/test-crypto-block$(EXESUF): tests/test-crypto-block.o $(test-crypto-obj-y)
 
-libqgraph-obj-y = tests/libqos/qgraph.o
-
-libqos-obj-y = $(libqgraph-obj-y) tests/libqos/pci.o tests/libqos/fw_cfg.o
-libqos-obj-y += tests/libqos/malloc.o
-libqos-obj-y += tests/libqos/libqos.o
-libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o
-libqos-spapr-obj-y += tests/libqos/libqos-spapr.o
-libqos-spapr-obj-y += tests/libqos/rtas.o
-libqos-spapr-obj-y += tests/libqos/pci-spapr.o
-libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
-libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
-libqos-pc-obj-y += tests/libqos/ahci.o
-libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
-
-# Devices
-qos-test-obj-y = tests/qtest/qos-test.o $(libqgraph-obj-y)
-qos-test-obj-y += $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
-qos-test-obj-y += tests/libqos/e1000e.o
-qos-test-obj-y += tests/libqos/i2c.o
-qos-test-obj-y += tests/libqos/i2c-imx.o
-qos-test-obj-y += tests/libqos/i2c-omap.o
-qos-test-obj-y += tests/libqos/sdhci.o
-qos-test-obj-y += tests/libqos/tpci200.o
-qos-test-obj-y += tests/libqos/virtio.o
-qos-test-obj-$(CONFIG_VIRTFS) += tests/libqos/virtio-9p.o
-qos-test-obj-y += tests/libqos/virtio-balloon.o
-qos-test-obj-y += tests/libqos/virtio-blk.o
-qos-test-obj-y += tests/libqos/virtio-mmio.o
-qos-test-obj-y += tests/libqos/virtio-net.o
-qos-test-obj-y += tests/libqos/virtio-pci.o
-qos-test-obj-y += tests/libqos/virtio-pci-modern.o
-qos-test-obj-y += tests/libqos/virtio-rng.o
-qos-test-obj-y += tests/libqos/virtio-scsi.o
-qos-test-obj-y += tests/libqos/virtio-serial.o
-
-# Machines
-qos-test-obj-y += tests/libqos/aarch64-xlnx-zcu102-machine.o
-qos-test-obj-y += tests/libqos/arm-imx25-pdk-machine.o
-qos-test-obj-y += tests/libqos/arm-n800-machine.o
-qos-test-obj-y += tests/libqos/arm-raspi2-machine.o
-qos-test-obj-y += tests/libqos/arm-sabrelite-machine.o
-qos-test-obj-y += tests/libqos/arm-smdkc210-machine.o
-qos-test-obj-y += tests/libqos/arm-virt-machine.o
-qos-test-obj-y += tests/libqos/arm-xilinx-zynq-a9-machine.o
-qos-test-obj-y += tests/libqos/ppc64_pseries-machine.o
-qos-test-obj-y += tests/libqos/x86_64_pc-machine.o
-
-# Tests
-qos-test-obj-y += tests/qtest/ac97-test.o
-qos-test-obj-y += tests/qtest/ds1338-test.o
-qos-test-obj-y += tests/qtest/e1000-test.o
-qos-test-obj-y += tests/qtest/e1000e-test.o
-qos-test-obj-y += tests/qtest/eepro100-test.o
-qos-test-obj-y += tests/qtest/es1370-test.o
-qos-test-obj-y += tests/qtest/ipoctal232-test.o
-qos-test-obj-y += tests/qtest/megasas-test.o
-qos-test-obj-y += tests/qtest/ne2000-test.o
-qos-test-obj-y += tests/qtest/nvme-test.o
-qos-test-obj-y += tests/qtest/pca9552-test.o
-qos-test-obj-y += tests/qtest/pci-test.o
-qos-test-obj-y += tests/qtest/pcnet-test.o
-qos-test-obj-y += tests/qtest/sdhci-test.o
-qos-test-obj-y += tests/qtest/spapr-phb-test.o
-qos-test-obj-y += tests/qtest/tmp105-test.o
-qos-test-obj-y += tests/qtest/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
-qos-test-obj-$(CONFIG_VHOST_NET_USER) += tests/qtest/vhost-user-test.o $(chardev-obj-y) $(test-io-obj-y)
-qos-test-obj-y += tests/qtest/virtio-test.o
-qos-test-obj-$(CONFIG_VIRTFS) += tests/qtest/virtio-9p-test.o
-qos-test-obj-y += tests/qtest/virtio-blk-test.o
-qos-test-obj-y += tests/qtest/virtio-net-test.o
-qos-test-obj-y += tests/qtest/virtio-rng-test.o
-qos-test-obj-y += tests/qtest/virtio-scsi-test.o
-qos-test-obj-y += tests/qtest/virtio-serial-test.o
-qos-test-obj-y += tests/qtest/vmxnet3-test.o
-
-check-unit-y += tests/test-qgraph$(EXESUF)
-tests/test-qgraph$(EXESUF): tests/test-qgraph.o $(libqgraph-obj-y)
-
-check-qtest-generic-y += qos-test
-tests/qtest/qos-test$(EXESUF): $(qos-test-obj-y)
-
-tests/qtest/qmp-test$(EXESUF): tests/qtest/qmp-test.o
-tests/qtest/qmp-cmd-test$(EXESUF): tests/qtest/qmp-cmd-test.o
-tests/qtest/device-introspect-test$(EXESUF): tests/qtest/device-introspect-test.o
-tests/qtest/rtc-test$(EXESUF): tests/qtest/rtc-test.o
-tests/qtest/m48t59-test$(EXESUF): tests/qtest/m48t59-test.o
-tests/qtest/hexloader-test$(EXESUF): tests/qtest/hexloader-test.o
-tests/qtest/pflash-cfi02$(EXESUF): tests/qtest/pflash-cfi02-test.o
-tests/qtest/endianness-test$(EXESUF): tests/qtest/endianness-test.o
-tests/qtest/prom-env-test$(EXESUF): tests/qtest/prom-env-test.o $(libqos-obj-y)
-tests/qtest/rtas-test$(EXESUF): tests/qtest/rtas-test.o $(libqos-spapr-obj-y)
-tests/qtest/fdc-test$(EXESUF): tests/qtest/fdc-test.o
-tests/qtest/ide-test$(EXESUF): tests/qtest/ide-test.o $(libqos-pc-obj-y)
-tests/qtest/ahci-test$(EXESUF): tests/qtest/ahci-test.o $(libqos-pc-obj-y) qemu-img$(EXESUF)
-tests/qtest/ipmi-kcs-test$(EXESUF): tests/qtest/ipmi-kcs-test.o
-tests/qtest/ipmi-bt-test$(EXESUF): tests/qtest/ipmi-bt-test.o
-tests/qtest/hd-geo-test$(EXESUF): tests/qtest/hd-geo-test.o $(libqos-obj-y)
-tests/qtest/boot-order-test$(EXESUF): tests/qtest/boot-order-test.o $(libqos-obj-y)
-tests/qtest/boot-serial-test$(EXESUF): tests/qtest/boot-serial-test.o $(libqos-obj-y)
-tests/qtest/bios-tables-test$(EXESUF): tests/qtest/bios-tables-test.o \
-	tests/qtest/boot-sector.o tests/qtest/acpi-utils.o $(libqos-obj-y)
-tests/qtest/pxe-test$(EXESUF): tests/qtest/pxe-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
-tests/qtest/microbit-test$(EXESUF): tests/qtest/microbit-test.o
-tests/qtest/m25p80-test$(EXESUF): tests/qtest/m25p80-test.o
-tests/qtest/i440fx-test$(EXESUF): tests/qtest/i440fx-test.o $(libqos-pc-obj-y)
-tests/qtest/q35-test$(EXESUF): tests/qtest/q35-test.o $(libqos-pc-obj-y)
-tests/qtest/fw_cfg-test$(EXESUF): tests/qtest/fw_cfg-test.o $(libqos-pc-obj-y)
-tests/qtest/rtl8139-test$(EXESUF): tests/qtest/rtl8139-test.o $(libqos-pc-obj-y)
-tests/qtest/pnv-xscom-test$(EXESUF): tests/qtest/pnv-xscom-test.o
-tests/qtest/wdt_ib700-test$(EXESUF): tests/qtest/wdt_ib700-test.o
-tests/qtest/tco-test$(EXESUF): tests/qtest/tco-test.o $(libqos-pc-obj-y)
-tests/qtest/virtio-ccw-test$(EXESUF): tests/qtest/virtio-ccw-test.o
-tests/qtest/display-vga-test$(EXESUF): tests/qtest/display-vga-test.o
-tests/qtest/qom-test$(EXESUF): tests/qtest/qom-test.o
-tests/qtest/test-hmp$(EXESUF): tests/qtest/test-hmp.o
-tests/qtest/machine-none-test$(EXESUF): tests/qtest/machine-none-test.o
-tests/qtest/device-plug-test$(EXESUF): tests/qtest/device-plug-test.o
-tests/qtest/drive_del-test$(EXESUF): tests/qtest/drive_del-test.o
-tests/qtest/pvpanic-test$(EXESUF): tests/qtest/pvpanic-test.o
-tests/qtest/i82801b11-test$(EXESUF): tests/qtest/i82801b11-test.o
-tests/qtest/intel-hda-test$(EXESUF): tests/qtest/intel-hda-test.o
-tests/qtest/ioh3420-test$(EXESUF): tests/qtest/ioh3420-test.o
-tests/qtest/usb-hcd-uhci-test$(EXESUF): tests/qtest/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
-tests/qtest/usb-hcd-ehci-test$(EXESUF): tests/qtest/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
-tests/qtest/usb-hcd-xhci-test$(EXESUF): tests/qtest/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
-tests/qtest/cpu-plug-test$(EXESUF): tests/qtest/cpu-plug-test.o
-tests/qtest/migration-test$(EXESUF): tests/qtest/migration-test.o tests/qtest/migration-helpers.o
-tests/qtest/qemu-iotests/qtest/socket_scm_helper$(EXESUF): tests/qtest/qemu-iotests/qtest/socket_scm_helper.o
-tests/qtest/test-netfilter$(EXESUF): tests/qtest/test-netfilter.o $(qtest-obj-y)
-tests/qtest/test-filter-mirror$(EXESUF): tests/qtest/test-filter-mirror.o $(qtest-obj-y)
-tests/qtest/test-filter-redirector$(EXESUF): tests/qtest/test-filter-redirector.o $(qtest-obj-y)
-tests/qtest/test-x86-cpuid-compat$(EXESUF): tests/qtest/test-x86-cpuid-compat.o $(qtest-obj-y)
-tests/qtest/ivshmem-test$(EXESUF): tests/qtest/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
-tests/qtest/dbus-vmstate-test$(EXESUF): tests/qtest/dbus-vmstate-test.o tests/qtest/migration-helpers.o tests/qtest/dbus-vmstate1.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
-tests/qtest/vhost-user-bridge$(EXESUF): tests/qtest/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
-tests/qtest/test-arm-mptimer$(EXESUF): tests/qtest/test-arm-mptimer.o
-tests/qtest/numa-test$(EXESUF): tests/qtest/numa-test.o
-tests/qtest/vmgenid-test$(EXESUF): tests/qtest/vmgenid-test.o tests/qtest/boot-sector.o tests/qtest/acpi-utils.o
-tests/qtest/cdrom-test$(EXESUF): tests/qtest/cdrom-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
-tests/qtest/arm-cpu-features$(EXESUF): tests/qtest/arm-cpu-features.o
-
 tests/migration/stress$(EXESUF): tests/migration/stress.o
 	$(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@")
 
@@ -881,19 +576,7 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
 	rm $(INITRD_WORK_DIR)/init
 	rmdir $(INITRD_WORK_DIR)
 
-# QTest rules
-
-TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
-ifeq ($(CONFIG_POSIX),y)
-QTEST_TARGETS = $(TARGETS)
-check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y:%=tests/qtest/%$(EXESUF)))
-check-qtest-y += $(check-qtest-generic-y:%=tests/qtest/%$(EXESUF))
-else
-QTEST_TARGETS =
-endif
-
-qtest-obj-y = tests/qtest/libqtest.o $(test-util-obj-y)
-$(check-qtest-y): $(qtest-obj-y)
+include $(SRC_PATH)/tests/qtest/Makefile.include
 
 tests/test-qga$(EXESUF): qemu-ga$(EXESUF)
 tests/test-qga$(EXESUF): tests/test-qga.o $(qtest-obj-y)
diff --git a/tests/qtest/Makefile.include b/tests/qtest/Makefile.include
new file mode 100644
index 0000000000..816d0d90ea
--- /dev/null
+++ b/tests/qtest/Makefile.include
@@ -0,0 +1,318 @@
+# All QTests for now are POSIX-only, but the dependencies are
+# really in libqtest, not in the testcases themselves.
+
+check-qtest-generic-y += cdrom-test
+check-qtest-generic-y += device-introspect-test
+check-qtest-generic-y += machine-none-test
+check-qtest-generic-y += qmp-test
+check-qtest-generic-y += qmp-cmd-test
+check-qtest-generic-y += qom-test
+check-qtest-generic-$(CONFIG_MODULES) += modules-test
+check-qtest-generic-y += test-hmp
+
+check-qtest-pci-$(CONFIG_RTL8139_PCI) += rtl8139-test
+check-qtest-pci-$(CONFIG_VGA) += display-vga-test
+check-qtest-pci-$(CONFIG_HDA) += intel-hda-test
+check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += ivshmem-test
+
+DBUS_DAEMON := $(shell which dbus-daemon 2>/dev/null)
+ifneq ($(GDBUS_CODEGEN),)
+ifneq ($(DBUS_DAEMON),)
+check-qtest-pci-$(CONFIG_GIO) += dbus-vmstate-test
+endif
+endif
+
+check-qtest-i386-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-i386-y += fdc-test
+check-qtest-i386-y += ide-test
+check-qtest-i386-$(CONFIG_TOOLS) += ahci-test
+check-qtest-i386-y += hd-geo-test
+check-qtest-i386-y += boot-order-test
+check-qtest-i386-y += bios-tables-test
+check-qtest-i386-$(CONFIG_SGA) += boot-serial-test
+check-qtest-i386-$(CONFIG_SLIRP) += pxe-test
+check-qtest-i386-y += rtc-test
+check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += ipmi-kcs-test
+ifdef CONFIG_LINUX
+check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += ipmi-bt-test
+endif
+check-qtest-i386-y += i440fx-test
+check-qtest-i386-y += fw_cfg-test
+check-qtest-i386-y += device-plug-test
+check-qtest-i386-y += drive_del-test
+check-qtest-i386-$(CONFIG_WDT_IB700) += wdt_ib700-test
+check-qtest-i386-y += tco-test
+check-qtest-i386-y += $(check-qtest-pci-y)
+check-qtest-i386-$(CONFIG_PVPANIC) += pvpanic-test
+check-qtest-i386-$(CONFIG_I82801B11) += i82801b11-test
+check-qtest-i386-$(CONFIG_IOH3420) += ioh3420-test
+check-qtest-i386-$(CONFIG_USB_UHCI) += usb-hcd-uhci-test
+check-qtest-i386-$(call land,$(CONFIG_USB_EHCI),$(CONFIG_USB_UHCI)) += usb-hcd-ehci-test
+check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += usb-hcd-xhci-test
+check-qtest-i386-y += cpu-plug-test
+check-qtest-i386-y += q35-test
+check-qtest-i386-y += vmgenid-test
+check-qtest-i386-$(CONFIG_TPM_CRB) += tpm-crb-swtpm-test
+check-qtest-i386-$(CONFIG_TPM_CRB) += tpm-crb-test
+check-qtest-i386-$(CONFIG_TPM_TIS) += tpm-tis-swtpm-test
+check-qtest-i386-$(CONFIG_TPM_TIS) += tpm-tis-test
+check-qtest-i386-$(CONFIG_SLIRP) += test-netfilter
+check-qtest-i386-$(CONFIG_POSIX) += test-filter-mirror
+check-qtest-i386-$(CONFIG_RTL8139_PCI) += test-filter-redirector
+check-qtest-i386-y += migration-test
+check-qtest-i386-y += test-x86-cpuid-compat
+check-qtest-i386-y += numa-test
+
+check-qtest-x86_64-y += $(check-qtest-i386-y)
+
+check-qtest-alpha-y += boot-serial-test
+check-qtest-alpha-$(CONFIG_VGA) += display-vga-test
+
+check-qtest-hppa-y += boot-serial-test
+check-qtest-hppa-$(CONFIG_VGA) += display-vga-test
+
+check-qtest-m68k-y = boot-serial-test
+
+check-qtest-microblaze-y += boot-serial-test
+
+check-qtest-mips-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-mips-$(CONFIG_VGA) += display-vga-test
+
+check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-mips64-$(CONFIG_VGA) += display-vga-test
+
+check-qtest-mips64el-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-mips64el-$(CONFIG_VGA) += display-vga-test
+
+check-qtest-moxie-y += boot-serial-test
+
+check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-ppc-y += boot-order-test
+check-qtest-ppc-y += prom-env-test
+check-qtest-ppc-y += drive_del-test
+check-qtest-ppc-y += boot-serial-test
+check-qtest-ppc-$(CONFIG_M48T59) += m48t59-test
+
+check-qtest-ppc64-y += $(check-qtest-ppc-y)
+check-qtest-ppc64-$(CONFIG_PSERIES) += device-plug-test
+check-qtest-ppc64-$(CONFIG_POWERNV) += pnv-xscom-test
+check-qtest-ppc64-y += migration-test
+check-qtest-ppc64-$(CONFIG_PSERIES) += rtas-test
+check-qtest-ppc64-$(CONFIG_SLIRP) += pxe-test
+check-qtest-ppc64-$(CONFIG_USB_UHCI) += usb-hcd-uhci-test
+check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += usb-hcd-xhci-test
+check-qtest-ppc64-$(CONFIG_SLIRP) += test-netfilter
+check-qtest-ppc64-$(CONFIG_POSIX) += test-filter-mirror
+check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += test-filter-redirector
+check-qtest-ppc64-$(CONFIG_VGA) += display-vga-test
+check-qtest-ppc64-y += numa-test
+check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += ivshmem-test
+check-qtest-ppc64-y += cpu-plug-test
+
+check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = endianness-test
+
+check-qtest-sh4eb-$(CONFIG_ISA_TESTDEV) = endianness-test
+
+check-qtest-sparc-y += prom-env-test
+check-qtest-sparc-y += m48t59-test
+check-qtest-sparc-y += boot-serial-test
+
+check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = endianness-test
+check-qtest-sparc64-y += prom-env-test
+check-qtest-sparc64-y += boot-serial-test
+
+check-qtest-arm-y += arm-cpu-features
+check-qtest-arm-y += microbit-test
+check-qtest-arm-y += m25p80-test
+check-qtest-arm-y += test-arm-mptimer
+check-qtest-arm-y += boot-serial-test
+check-qtest-arm-y += hexloader-test
+check-qtest-arm-$(CONFIG_PFLASH_CFI02) += pflash-cfi02-test
+
+check-qtest-aarch64-y += arm-cpu-features
+check-qtest-aarch64-y += numa-test
+check-qtest-aarch64-y += boot-serial-test
+check-qtest-aarch64-y += migration-test
+
+# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional
+ifneq ($(ARCH),arm)
+check-qtest-aarch64-y += bios-tables-test
+endif
+
+check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
+
+check-qtest-xtensaeb-y += $(check-qtest-xtensa-y)
+
+check-qtest-s390x-y = boot-serial-test
+check-qtest-s390x-$(CONFIG_SLIRP) += pxe-test
+check-qtest-s390x-$(CONFIG_SLIRP) += test-netfilter
+check-qtest-s390x-$(CONFIG_POSIX) += test-filter-mirror
+check-qtest-s390x-$(CONFIG_POSIX) += test-filter-redirector
+check-qtest-s390x-y += drive_del-test
+check-qtest-s390x-y += device-plug-test
+check-qtest-s390x-y += virtio-ccw-test
+check-qtest-s390x-y += cpu-plug-test
+check-qtest-s390x-y += migration-test
+
+# libqos / qgraph :
+libqgraph-obj-y = tests/libqos/qgraph.o
+
+libqos-obj-y = $(libqgraph-obj-y) tests/libqos/pci.o tests/libqos/fw_cfg.o
+libqos-obj-y += tests/libqos/malloc.o
+libqos-obj-y += tests/libqos/libqos.o
+libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o
+libqos-spapr-obj-y += tests/libqos/libqos-spapr.o
+libqos-spapr-obj-y += tests/libqos/rtas.o
+libqos-spapr-obj-y += tests/libqos/pci-spapr.o
+libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
+libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
+libqos-pc-obj-y += tests/libqos/ahci.o
+libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
+
+# qos devices:
+qos-test-obj-y = tests/qtest/qos-test.o $(libqgraph-obj-y)
+qos-test-obj-y += $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
+qos-test-obj-y += tests/libqos/e1000e.o
+qos-test-obj-y += tests/libqos/i2c.o
+qos-test-obj-y += tests/libqos/i2c-imx.o
+qos-test-obj-y += tests/libqos/i2c-omap.o
+qos-test-obj-y += tests/libqos/sdhci.o
+qos-test-obj-y += tests/libqos/tpci200.o
+qos-test-obj-y += tests/libqos/virtio.o
+qos-test-obj-$(CONFIG_VIRTFS) += tests/libqos/virtio-9p.o
+qos-test-obj-y += tests/libqos/virtio-balloon.o
+qos-test-obj-y += tests/libqos/virtio-blk.o
+qos-test-obj-y += tests/libqos/virtio-mmio.o
+qos-test-obj-y += tests/libqos/virtio-net.o
+qos-test-obj-y += tests/libqos/virtio-pci.o
+qos-test-obj-y += tests/libqos/virtio-pci-modern.o
+qos-test-obj-y += tests/libqos/virtio-rng.o
+qos-test-obj-y += tests/libqos/virtio-scsi.o
+qos-test-obj-y += tests/libqos/virtio-serial.o
+
+# qos machines:
+qos-test-obj-y += tests/libqos/aarch64-xlnx-zcu102-machine.o
+qos-test-obj-y += tests/libqos/arm-imx25-pdk-machine.o
+qos-test-obj-y += tests/libqos/arm-n800-machine.o
+qos-test-obj-y += tests/libqos/arm-raspi2-machine.o
+qos-test-obj-y += tests/libqos/arm-sabrelite-machine.o
+qos-test-obj-y += tests/libqos/arm-smdkc210-machine.o
+qos-test-obj-y += tests/libqos/arm-virt-machine.o
+qos-test-obj-y += tests/libqos/arm-xilinx-zynq-a9-machine.o
+qos-test-obj-y += tests/libqos/ppc64_pseries-machine.o
+qos-test-obj-y += tests/libqos/x86_64_pc-machine.o
+
+# qos tests:
+qos-test-obj-y += tests/qtest/ac97-test.o
+qos-test-obj-y += tests/qtest/ds1338-test.o
+qos-test-obj-y += tests/qtest/e1000-test.o
+qos-test-obj-y += tests/qtest/e1000e-test.o
+qos-test-obj-y += tests/qtest/eepro100-test.o
+qos-test-obj-y += tests/qtest/es1370-test.o
+qos-test-obj-y += tests/qtest/ipoctal232-test.o
+qos-test-obj-y += tests/qtest/megasas-test.o
+qos-test-obj-y += tests/qtest/ne2000-test.o
+qos-test-obj-y += tests/qtest/nvme-test.o
+qos-test-obj-y += tests/qtest/pca9552-test.o
+qos-test-obj-y += tests/qtest/pci-test.o
+qos-test-obj-y += tests/qtest/pcnet-test.o
+qos-test-obj-y += tests/qtest/sdhci-test.o
+qos-test-obj-y += tests/qtest/spapr-phb-test.o
+qos-test-obj-y += tests/qtest/tmp105-test.o
+qos-test-obj-y += tests/qtest/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
+qos-test-obj-$(CONFIG_VHOST_NET_USER) += tests/qtest/vhost-user-test.o $(chardev-obj-y) $(test-io-obj-y)
+qos-test-obj-y += tests/qtest/virtio-test.o
+qos-test-obj-$(CONFIG_VIRTFS) += tests/qtest/virtio-9p-test.o
+qos-test-obj-y += tests/qtest/virtio-blk-test.o
+qos-test-obj-y += tests/qtest/virtio-net-test.o
+qos-test-obj-y += tests/qtest/virtio-rng-test.o
+qos-test-obj-y += tests/qtest/virtio-scsi-test.o
+qos-test-obj-y += tests/qtest/virtio-serial-test.o
+qos-test-obj-y += tests/qtest/vmxnet3-test.o
+
+check-unit-y += tests/test-qgraph$(EXESUF)
+tests/test-qgraph$(EXESUF): tests/test-qgraph.o $(libqgraph-obj-y)
+
+check-qtest-generic-y += qos-test
+tests/qtest/qos-test$(EXESUF): $(qos-test-obj-y)
+
+# QTest dependencies:
+tests/qtest/qmp-test$(EXESUF): tests/qtest/qmp-test.o
+tests/qtest/qmp-cmd-test$(EXESUF): tests/qtest/qmp-cmd-test.o
+tests/qtest/device-introspect-test$(EXESUF): tests/qtest/device-introspect-test.o
+tests/qtest/rtc-test$(EXESUF): tests/qtest/rtc-test.o
+tests/qtest/m48t59-test$(EXESUF): tests/qtest/m48t59-test.o
+tests/qtest/hexloader-test$(EXESUF): tests/qtest/hexloader-test.o
+tests/qtest/pflash-cfi02$(EXESUF): tests/qtest/pflash-cfi02-test.o
+tests/qtest/endianness-test$(EXESUF): tests/qtest/endianness-test.o
+tests/qtest/prom-env-test$(EXESUF): tests/qtest/prom-env-test.o $(libqos-obj-y)
+tests/qtest/rtas-test$(EXESUF): tests/qtest/rtas-test.o $(libqos-spapr-obj-y)
+tests/qtest/fdc-test$(EXESUF): tests/qtest/fdc-test.o
+tests/qtest/ide-test$(EXESUF): tests/qtest/ide-test.o $(libqos-pc-obj-y)
+tests/qtest/ahci-test$(EXESUF): tests/qtest/ahci-test.o $(libqos-pc-obj-y) qemu-img$(EXESUF)
+tests/qtest/ipmi-kcs-test$(EXESUF): tests/qtest/ipmi-kcs-test.o
+tests/qtest/ipmi-bt-test$(EXESUF): tests/qtest/ipmi-bt-test.o
+tests/qtest/hd-geo-test$(EXESUF): tests/qtest/hd-geo-test.o $(libqos-obj-y)
+tests/qtest/boot-order-test$(EXESUF): tests/qtest/boot-order-test.o $(libqos-obj-y)
+tests/qtest/boot-serial-test$(EXESUF): tests/qtest/boot-serial-test.o $(libqos-obj-y)
+tests/qtest/bios-tables-test$(EXESUF): tests/qtest/bios-tables-test.o \
+	tests/qtest/boot-sector.o tests/qtest/acpi-utils.o $(libqos-obj-y)
+tests/qtest/pxe-test$(EXESUF): tests/qtest/pxe-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
+tests/qtest/microbit-test$(EXESUF): tests/qtest/microbit-test.o
+tests/qtest/m25p80-test$(EXESUF): tests/qtest/m25p80-test.o
+tests/qtest/i440fx-test$(EXESUF): tests/qtest/i440fx-test.o $(libqos-pc-obj-y)
+tests/qtest/q35-test$(EXESUF): tests/qtest/q35-test.o $(libqos-pc-obj-y)
+tests/qtest/fw_cfg-test$(EXESUF): tests/qtest/fw_cfg-test.o $(libqos-pc-obj-y)
+tests/qtest/rtl8139-test$(EXESUF): tests/qtest/rtl8139-test.o $(libqos-pc-obj-y)
+tests/qtest/pnv-xscom-test$(EXESUF): tests/qtest/pnv-xscom-test.o
+tests/qtest/wdt_ib700-test$(EXESUF): tests/qtest/wdt_ib700-test.o
+tests/qtest/tco-test$(EXESUF): tests/qtest/tco-test.o $(libqos-pc-obj-y)
+tests/qtest/virtio-ccw-test$(EXESUF): tests/qtest/virtio-ccw-test.o
+tests/qtest/display-vga-test$(EXESUF): tests/qtest/display-vga-test.o
+tests/qtest/qom-test$(EXESUF): tests/qtest/qom-test.o
+tests/qtest/test-hmp$(EXESUF): tests/qtest/test-hmp.o
+tests/qtest/machine-none-test$(EXESUF): tests/qtest/machine-none-test.o
+tests/qtest/device-plug-test$(EXESUF): tests/qtest/device-plug-test.o
+tests/qtest/drive_del-test$(EXESUF): tests/qtest/drive_del-test.o
+tests/qtest/pvpanic-test$(EXESUF): tests/qtest/pvpanic-test.o
+tests/qtest/i82801b11-test$(EXESUF): tests/qtest/i82801b11-test.o
+tests/qtest/intel-hda-test$(EXESUF): tests/qtest/intel-hda-test.o
+tests/qtest/ioh3420-test$(EXESUF): tests/qtest/ioh3420-test.o
+tests/qtest/usb-hcd-uhci-test$(EXESUF): tests/qtest/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
+tests/qtest/usb-hcd-ehci-test$(EXESUF): tests/qtest/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
+tests/qtest/usb-hcd-xhci-test$(EXESUF): tests/qtest/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
+tests/qtest/cpu-plug-test$(EXESUF): tests/qtest/cpu-plug-test.o
+tests/qtest/migration-test$(EXESUF): tests/qtest/migration-test.o tests/qtest/migration-helpers.o
+tests/qtest/qemu-iotests/qtest/socket_scm_helper$(EXESUF): tests/qtest/qemu-iotests/qtest/socket_scm_helper.o
+tests/qtest/test-netfilter$(EXESUF): tests/qtest/test-netfilter.o $(qtest-obj-y)
+tests/qtest/test-filter-mirror$(EXESUF): tests/qtest/test-filter-mirror.o $(qtest-obj-y)
+tests/qtest/test-filter-redirector$(EXESUF): tests/qtest/test-filter-redirector.o $(qtest-obj-y)
+tests/qtest/test-x86-cpuid-compat$(EXESUF): tests/qtest/test-x86-cpuid-compat.o $(qtest-obj-y)
+tests/qtest/ivshmem-test$(EXESUF): tests/qtest/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
+tests/qtest/dbus-vmstate-test$(EXESUF): tests/qtest/dbus-vmstate-test.o tests/qtest/migration-helpers.o tests/qtest/dbus-vmstate1.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
+tests/qtest/vhost-user-bridge$(EXESUF): tests/qtest/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
+tests/qtest/test-arm-mptimer$(EXESUF): tests/qtest/test-arm-mptimer.o
+tests/qtest/numa-test$(EXESUF): tests/qtest/numa-test.o
+tests/qtest/vmgenid-test$(EXESUF): tests/qtest/vmgenid-test.o tests/qtest/boot-sector.o tests/qtest/acpi-utils.o
+tests/qtest/cdrom-test$(EXESUF): tests/qtest/cdrom-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
+tests/qtest/arm-cpu-features$(EXESUF): tests/qtest/arm-cpu-features.o
+tests/qtest/tpm-crb-swtpm-test$(EXESUF): tests/qtest/tpm-crb-swtpm-test.o tests/qtest/tpm-emu.o \
+	tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
+tests/qtest/tpm-crb-test$(EXESUF): tests/qtest/tpm-crb-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
+tests/qtest/tpm-tis-swtpm-test$(EXESUF): tests/qtest/tpm-tis-swtpm-test.o tests/qtest/tpm-emu.o \
+	tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
+tests/qtest/tpm-tis-test$(EXESUF): tests/qtest/tpm-tis-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
+
+# QTest rules
+
+TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
+ifeq ($(CONFIG_POSIX),y)
+QTEST_TARGETS = $(TARGETS)
+check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y:%=tests/qtest/%$(EXESUF)))
+check-qtest-y += $(check-qtest-generic-y:%=tests/qtest/%$(EXESUF))
+else
+QTEST_TARGETS =
+endif
+
+qtest-obj-y = tests/qtest/libqtest.o $(test-util-obj-y)
+$(check-qtest-y): $(qtest-obj-y)

From 1cf4323ecd03235984e43a416a42f10c975cf785 Mon Sep 17 00:00:00 2001
From: Thomas Huth <thuth@redhat.com>
Date: Tue, 10 Sep 2019 16:41:20 +0200
Subject: [PATCH 7/8] tests/libqos: Move the libqos files under tests/qtest/

The qos stuff belongs to qtest, so move it into that directory, too.

Message-Id: <20191218103059.11729-8-thuth@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 MAINTAINERS                                   |  9 +--
 configure                                     |  4 +-
 tests/Makefile.include                        |  2 +-
 tests/qtest/Makefile.include                  | 78 +++++++++----------
 .../libqos/aarch64-xlnx-zcu102-machine.c      |  0
 tests/{ => qtest}/libqos/ahci.c               |  0
 tests/{ => qtest}/libqos/ahci.h               |  0
 .../libqos/arm-imx25-pdk-machine.c            |  0
 tests/{ => qtest}/libqos/arm-n800-machine.c   |  0
 tests/{ => qtest}/libqos/arm-raspi2-machine.c |  0
 .../libqos/arm-sabrelite-machine.c            |  0
 .../{ => qtest}/libqos/arm-smdkc210-machine.c |  0
 tests/{ => qtest}/libqos/arm-virt-machine.c   |  0
 .../libqos/arm-xilinx-zynq-a9-machine.c       |  0
 tests/{ => qtest}/libqos/e1000e.c             |  0
 tests/{ => qtest}/libqos/e1000e.h             |  0
 tests/{ => qtest}/libqos/fw_cfg.c             |  0
 tests/{ => qtest}/libqos/fw_cfg.h             |  0
 tests/{ => qtest}/libqos/i2c-imx.c            |  0
 tests/{ => qtest}/libqos/i2c-omap.c           |  0
 tests/{ => qtest}/libqos/i2c.c                |  0
 tests/{ => qtest}/libqos/i2c.h                |  0
 tests/{ => qtest}/libqos/libqos-pc.c          |  0
 tests/{ => qtest}/libqos/libqos-pc.h          |  0
 tests/{ => qtest}/libqos/libqos-spapr.c       |  0
 tests/{ => qtest}/libqos/libqos-spapr.h       |  0
 tests/{ => qtest}/libqos/libqos.c             |  0
 tests/{ => qtest}/libqos/libqos.h             |  0
 tests/{ => qtest}/libqos/malloc-pc.c          |  0
 tests/{ => qtest}/libqos/malloc-pc.h          |  0
 tests/{ => qtest}/libqos/malloc-spapr.c       |  0
 tests/{ => qtest}/libqos/malloc-spapr.h       |  0
 tests/{ => qtest}/libqos/malloc.c             |  0
 tests/{ => qtest}/libqos/malloc.h             |  0
 tests/{ => qtest}/libqos/pci-pc.c             |  0
 tests/{ => qtest}/libqos/pci-pc.h             |  0
 tests/{ => qtest}/libqos/pci-spapr.c          |  0
 tests/{ => qtest}/libqos/pci-spapr.h          |  0
 tests/{ => qtest}/libqos/pci.c                |  0
 tests/{ => qtest}/libqos/pci.h                |  0
 .../libqos/ppc64_pseries-machine.c            |  0
 tests/{ => qtest}/libqos/qgraph.c             |  0
 tests/{ => qtest}/libqos/qgraph.h             |  0
 tests/{ => qtest}/libqos/qgraph_internal.h    |  0
 tests/{ => qtest}/libqos/rtas.c               |  0
 tests/{ => qtest}/libqos/rtas.h               |  0
 tests/{ => qtest}/libqos/sdhci.c              |  0
 tests/{ => qtest}/libqos/sdhci.h              |  0
 tests/{ => qtest}/libqos/tpci200.c            |  0
 tests/{ => qtest}/libqos/usb.c                |  0
 tests/{ => qtest}/libqos/usb.h                |  0
 tests/{ => qtest}/libqos/virtio-9p.c          |  0
 tests/{ => qtest}/libqos/virtio-9p.h          |  0
 tests/{ => qtest}/libqos/virtio-balloon.c     |  0
 tests/{ => qtest}/libqos/virtio-balloon.h     |  0
 tests/{ => qtest}/libqos/virtio-blk.c         |  0
 tests/{ => qtest}/libqos/virtio-blk.h         |  0
 tests/{ => qtest}/libqos/virtio-mmio.c        |  0
 tests/{ => qtest}/libqos/virtio-mmio.h        |  0
 tests/{ => qtest}/libqos/virtio-net.c         |  0
 tests/{ => qtest}/libqos/virtio-net.h         |  0
 tests/{ => qtest}/libqos/virtio-pci-modern.c  |  0
 tests/{ => qtest}/libqos/virtio-pci-modern.h  |  0
 tests/{ => qtest}/libqos/virtio-pci.c         |  0
 tests/{ => qtest}/libqos/virtio-pci.h         |  0
 tests/{ => qtest}/libqos/virtio-rng.c         |  0
 tests/{ => qtest}/libqos/virtio-rng.h         |  0
 tests/{ => qtest}/libqos/virtio-scsi.c        |  0
 tests/{ => qtest}/libqos/virtio-scsi.h        |  0
 tests/{ => qtest}/libqos/virtio-serial.c      |  0
 tests/{ => qtest}/libqos/virtio-serial.h      |  0
 tests/{ => qtest}/libqos/virtio.c             |  0
 tests/{ => qtest}/libqos/virtio.h             |  0
 tests/{ => qtest}/libqos/x86_64_pc-machine.c  |  0
 74 files changed, 46 insertions(+), 47 deletions(-)
 rename tests/{ => qtest}/libqos/aarch64-xlnx-zcu102-machine.c (100%)
 rename tests/{ => qtest}/libqos/ahci.c (100%)
 rename tests/{ => qtest}/libqos/ahci.h (100%)
 rename tests/{ => qtest}/libqos/arm-imx25-pdk-machine.c (100%)
 rename tests/{ => qtest}/libqos/arm-n800-machine.c (100%)
 rename tests/{ => qtest}/libqos/arm-raspi2-machine.c (100%)
 rename tests/{ => qtest}/libqos/arm-sabrelite-machine.c (100%)
 rename tests/{ => qtest}/libqos/arm-smdkc210-machine.c (100%)
 rename tests/{ => qtest}/libqos/arm-virt-machine.c (100%)
 rename tests/{ => qtest}/libqos/arm-xilinx-zynq-a9-machine.c (100%)
 rename tests/{ => qtest}/libqos/e1000e.c (100%)
 rename tests/{ => qtest}/libqos/e1000e.h (100%)
 rename tests/{ => qtest}/libqos/fw_cfg.c (100%)
 rename tests/{ => qtest}/libqos/fw_cfg.h (100%)
 rename tests/{ => qtest}/libqos/i2c-imx.c (100%)
 rename tests/{ => qtest}/libqos/i2c-omap.c (100%)
 rename tests/{ => qtest}/libqos/i2c.c (100%)
 rename tests/{ => qtest}/libqos/i2c.h (100%)
 rename tests/{ => qtest}/libqos/libqos-pc.c (100%)
 rename tests/{ => qtest}/libqos/libqos-pc.h (100%)
 rename tests/{ => qtest}/libqos/libqos-spapr.c (100%)
 rename tests/{ => qtest}/libqos/libqos-spapr.h (100%)
 rename tests/{ => qtest}/libqos/libqos.c (100%)
 rename tests/{ => qtest}/libqos/libqos.h (100%)
 rename tests/{ => qtest}/libqos/malloc-pc.c (100%)
 rename tests/{ => qtest}/libqos/malloc-pc.h (100%)
 rename tests/{ => qtest}/libqos/malloc-spapr.c (100%)
 rename tests/{ => qtest}/libqos/malloc-spapr.h (100%)
 rename tests/{ => qtest}/libqos/malloc.c (100%)
 rename tests/{ => qtest}/libqos/malloc.h (100%)
 rename tests/{ => qtest}/libqos/pci-pc.c (100%)
 rename tests/{ => qtest}/libqos/pci-pc.h (100%)
 rename tests/{ => qtest}/libqos/pci-spapr.c (100%)
 rename tests/{ => qtest}/libqos/pci-spapr.h (100%)
 rename tests/{ => qtest}/libqos/pci.c (100%)
 rename tests/{ => qtest}/libqos/pci.h (100%)
 rename tests/{ => qtest}/libqos/ppc64_pseries-machine.c (100%)
 rename tests/{ => qtest}/libqos/qgraph.c (100%)
 rename tests/{ => qtest}/libqos/qgraph.h (100%)
 rename tests/{ => qtest}/libqos/qgraph_internal.h (100%)
 rename tests/{ => qtest}/libqos/rtas.c (100%)
 rename tests/{ => qtest}/libqos/rtas.h (100%)
 rename tests/{ => qtest}/libqos/sdhci.c (100%)
 rename tests/{ => qtest}/libqos/sdhci.h (100%)
 rename tests/{ => qtest}/libqos/tpci200.c (100%)
 rename tests/{ => qtest}/libqos/usb.c (100%)
 rename tests/{ => qtest}/libqos/usb.h (100%)
 rename tests/{ => qtest}/libqos/virtio-9p.c (100%)
 rename tests/{ => qtest}/libqos/virtio-9p.h (100%)
 rename tests/{ => qtest}/libqos/virtio-balloon.c (100%)
 rename tests/{ => qtest}/libqos/virtio-balloon.h (100%)
 rename tests/{ => qtest}/libqos/virtio-blk.c (100%)
 rename tests/{ => qtest}/libqos/virtio-blk.h (100%)
 rename tests/{ => qtest}/libqos/virtio-mmio.c (100%)
 rename tests/{ => qtest}/libqos/virtio-mmio.h (100%)
 rename tests/{ => qtest}/libqos/virtio-net.c (100%)
 rename tests/{ => qtest}/libqos/virtio-net.h (100%)
 rename tests/{ => qtest}/libqos/virtio-pci-modern.c (100%)
 rename tests/{ => qtest}/libqos/virtio-pci-modern.h (100%)
 rename tests/{ => qtest}/libqos/virtio-pci.c (100%)
 rename tests/{ => qtest}/libqos/virtio-pci.h (100%)
 rename tests/{ => qtest}/libqos/virtio-rng.c (100%)
 rename tests/{ => qtest}/libqos/virtio-rng.h (100%)
 rename tests/{ => qtest}/libqos/virtio-scsi.c (100%)
 rename tests/{ => qtest}/libqos/virtio-scsi.h (100%)
 rename tests/{ => qtest}/libqos/virtio-serial.c (100%)
 rename tests/{ => qtest}/libqos/virtio-serial.h (100%)
 rename tests/{ => qtest}/libqos/virtio.c (100%)
 rename tests/{ => qtest}/libqos/virtio.h (100%)
 rename tests/{ => qtest}/libqos/x86_64_pc-machine.c (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index 02eab66b02..ceb5c45c0f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1102,9 +1102,9 @@ F: pc-bios/slof.bin
 F: docs/specs/ppc-spapr-hcalls.txt
 F: docs/specs/ppc-spapr-hotplug.txt
 F: tests/qtest/spapr*
-F: tests/libqos/*spapr*
+F: tests/qtest/libqos/*spapr*
 F: tests/qtest/rtas*
-F: tests/libqos/rtas*
+F: tests/qtest/libqos/rtas*
 
 PowerNV (Non-Virtualized)
 M: Cédric Le Goater <clg@kaod.org>
@@ -1363,7 +1363,7 @@ F: hw/block/hd-geometry.c
 F: tests/qtest/ide-test.c
 F: tests/qtest/ahci-test.c
 F: tests/qtest/cdrom-test.c
-F: tests/libqos/ahci*
+F: tests/qtest/libqos/ahci*
 T: git https://github.com/jnsnow/qemu.git ide
 
 IPMI
@@ -1776,7 +1776,7 @@ F: hw/nvram/fw_cfg.c
 F: stubs/fw_cfg.c
 F: include/hw/nvram/fw_cfg.h
 F: include/standard-headers/linux/qemu_fw_cfg.h
-F: tests/libqos/fw_cfg.c
+F: tests/qtest/libqos/fw_cfg.c
 F: tests/qtest/fw_cfg-test.c
 T: git https://github.com/philmd/qemu.git fw_cfg-next
 
@@ -2137,7 +2137,6 @@ R: Paolo Bonzini <pbonzini@redhat.com>
 S: Maintained
 F: qtest.c
 F: accel/qtest.c
-F: tests/libqos/
 F: tests/qtest/
 
 Register API
diff --git a/configure b/configure
index 1b8796fc21..08c3a1c1f0 100755
--- a/configure
+++ b/configure
@@ -7963,8 +7963,8 @@ fi
 # so the build tree will be missing the link back to the new file, and
 # tests might fail. Prefer to keep the relevant files in their own
 # directory and symlink the directory instead.
-DIRS="tests tests/tcg tests/tcg/lm32 tests/libqos tests/qapi-schema tests/qtest"
-DIRS="$DIRS tests/qemu-iotests tests/vm tests/fp tests/qgraph"
+DIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos"
+DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
 DIRS="$DIRS docs docs/interop fsdev scsi"
 DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
 DIRS="$DIRS roms/seabios roms/vgabios"
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 065fd09964..1ae14a8b15 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -912,6 +912,6 @@ all: $(QEMU_IOTESTS_HELPERS-y)
 
 -include $(wildcard tests/*.d)
 -include $(wildcard tests/qtest/*.d)
--include $(wildcard tests/libqos/*.d)
+-include $(wildcard tests/qtest/qos/*.d)
 
 endif
diff --git a/tests/qtest/Makefile.include b/tests/qtest/Makefile.include
index 816d0d90ea..e6bb4ab28c 100644
--- a/tests/qtest/Makefile.include
+++ b/tests/qtest/Makefile.include
@@ -155,52 +155,52 @@ check-qtest-s390x-y += cpu-plug-test
 check-qtest-s390x-y += migration-test
 
 # libqos / qgraph :
-libqgraph-obj-y = tests/libqos/qgraph.o
+libqgraph-obj-y = tests/qtest/libqos/qgraph.o
 
-libqos-obj-y = $(libqgraph-obj-y) tests/libqos/pci.o tests/libqos/fw_cfg.o
-libqos-obj-y += tests/libqos/malloc.o
-libqos-obj-y += tests/libqos/libqos.o
-libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o
-libqos-spapr-obj-y += tests/libqos/libqos-spapr.o
-libqos-spapr-obj-y += tests/libqos/rtas.o
-libqos-spapr-obj-y += tests/libqos/pci-spapr.o
-libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
-libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
-libqos-pc-obj-y += tests/libqos/ahci.o
-libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
+libqos-obj-y = $(libqgraph-obj-y) tests/qtest/libqos/pci.o tests/qtest/libqos/fw_cfg.o
+libqos-obj-y += tests/qtest/libqos/malloc.o
+libqos-obj-y += tests/qtest/libqos/libqos.o
+libqos-spapr-obj-y = $(libqos-obj-y) tests/qtest/libqos/malloc-spapr.o
+libqos-spapr-obj-y += tests/qtest/libqos/libqos-spapr.o
+libqos-spapr-obj-y += tests/qtest/libqos/rtas.o
+libqos-spapr-obj-y += tests/qtest/libqos/pci-spapr.o
+libqos-pc-obj-y = $(libqos-obj-y) tests/qtest/libqos/pci-pc.o
+libqos-pc-obj-y += tests/qtest/libqos/malloc-pc.o tests/qtest/libqos/libqos-pc.o
+libqos-pc-obj-y += tests/qtest/libqos/ahci.o
+libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/qtest/libqos/usb.o
 
 # qos devices:
 qos-test-obj-y = tests/qtest/qos-test.o $(libqgraph-obj-y)
 qos-test-obj-y += $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
-qos-test-obj-y += tests/libqos/e1000e.o
-qos-test-obj-y += tests/libqos/i2c.o
-qos-test-obj-y += tests/libqos/i2c-imx.o
-qos-test-obj-y += tests/libqos/i2c-omap.o
-qos-test-obj-y += tests/libqos/sdhci.o
-qos-test-obj-y += tests/libqos/tpci200.o
-qos-test-obj-y += tests/libqos/virtio.o
-qos-test-obj-$(CONFIG_VIRTFS) += tests/libqos/virtio-9p.o
-qos-test-obj-y += tests/libqos/virtio-balloon.o
-qos-test-obj-y += tests/libqos/virtio-blk.o
-qos-test-obj-y += tests/libqos/virtio-mmio.o
-qos-test-obj-y += tests/libqos/virtio-net.o
-qos-test-obj-y += tests/libqos/virtio-pci.o
-qos-test-obj-y += tests/libqos/virtio-pci-modern.o
-qos-test-obj-y += tests/libqos/virtio-rng.o
-qos-test-obj-y += tests/libqos/virtio-scsi.o
-qos-test-obj-y += tests/libqos/virtio-serial.o
+qos-test-obj-y += tests/qtest/libqos/e1000e.o
+qos-test-obj-y += tests/qtest/libqos/i2c.o
+qos-test-obj-y += tests/qtest/libqos/i2c-imx.o
+qos-test-obj-y += tests/qtest/libqos/i2c-omap.o
+qos-test-obj-y += tests/qtest/libqos/sdhci.o
+qos-test-obj-y += tests/qtest/libqos/tpci200.o
+qos-test-obj-y += tests/qtest/libqos/virtio.o
+qos-test-obj-$(CONFIG_VIRTFS) += tests/qtest/libqos/virtio-9p.o
+qos-test-obj-y += tests/qtest/libqos/virtio-balloon.o
+qos-test-obj-y += tests/qtest/libqos/virtio-blk.o
+qos-test-obj-y += tests/qtest/libqos/virtio-mmio.o
+qos-test-obj-y += tests/qtest/libqos/virtio-net.o
+qos-test-obj-y += tests/qtest/libqos/virtio-pci.o
+qos-test-obj-y += tests/qtest/libqos/virtio-pci-modern.o
+qos-test-obj-y += tests/qtest/libqos/virtio-rng.o
+qos-test-obj-y += tests/qtest/libqos/virtio-scsi.o
+qos-test-obj-y += tests/qtest/libqos/virtio-serial.o
 
 # qos machines:
-qos-test-obj-y += tests/libqos/aarch64-xlnx-zcu102-machine.o
-qos-test-obj-y += tests/libqos/arm-imx25-pdk-machine.o
-qos-test-obj-y += tests/libqos/arm-n800-machine.o
-qos-test-obj-y += tests/libqos/arm-raspi2-machine.o
-qos-test-obj-y += tests/libqos/arm-sabrelite-machine.o
-qos-test-obj-y += tests/libqos/arm-smdkc210-machine.o
-qos-test-obj-y += tests/libqos/arm-virt-machine.o
-qos-test-obj-y += tests/libqos/arm-xilinx-zynq-a9-machine.o
-qos-test-obj-y += tests/libqos/ppc64_pseries-machine.o
-qos-test-obj-y += tests/libqos/x86_64_pc-machine.o
+qos-test-obj-y += tests/qtest/libqos/aarch64-xlnx-zcu102-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-imx25-pdk-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-n800-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-raspi2-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-sabrelite-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-smdkc210-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-virt-machine.o
+qos-test-obj-y += tests/qtest/libqos/arm-xilinx-zynq-a9-machine.o
+qos-test-obj-y += tests/qtest/libqos/ppc64_pseries-machine.o
+qos-test-obj-y += tests/qtest/libqos/x86_64_pc-machine.o
 
 # qos tests:
 qos-test-obj-y += tests/qtest/ac97-test.o
diff --git a/tests/libqos/aarch64-xlnx-zcu102-machine.c b/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
similarity index 100%
rename from tests/libqos/aarch64-xlnx-zcu102-machine.c
rename to tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
diff --git a/tests/libqos/ahci.c b/tests/qtest/libqos/ahci.c
similarity index 100%
rename from tests/libqos/ahci.c
rename to tests/qtest/libqos/ahci.c
diff --git a/tests/libqos/ahci.h b/tests/qtest/libqos/ahci.h
similarity index 100%
rename from tests/libqos/ahci.h
rename to tests/qtest/libqos/ahci.h
diff --git a/tests/libqos/arm-imx25-pdk-machine.c b/tests/qtest/libqos/arm-imx25-pdk-machine.c
similarity index 100%
rename from tests/libqos/arm-imx25-pdk-machine.c
rename to tests/qtest/libqos/arm-imx25-pdk-machine.c
diff --git a/tests/libqos/arm-n800-machine.c b/tests/qtest/libqos/arm-n800-machine.c
similarity index 100%
rename from tests/libqos/arm-n800-machine.c
rename to tests/qtest/libqos/arm-n800-machine.c
diff --git a/tests/libqos/arm-raspi2-machine.c b/tests/qtest/libqos/arm-raspi2-machine.c
similarity index 100%
rename from tests/libqos/arm-raspi2-machine.c
rename to tests/qtest/libqos/arm-raspi2-machine.c
diff --git a/tests/libqos/arm-sabrelite-machine.c b/tests/qtest/libqos/arm-sabrelite-machine.c
similarity index 100%
rename from tests/libqos/arm-sabrelite-machine.c
rename to tests/qtest/libqos/arm-sabrelite-machine.c
diff --git a/tests/libqos/arm-smdkc210-machine.c b/tests/qtest/libqos/arm-smdkc210-machine.c
similarity index 100%
rename from tests/libqos/arm-smdkc210-machine.c
rename to tests/qtest/libqos/arm-smdkc210-machine.c
diff --git a/tests/libqos/arm-virt-machine.c b/tests/qtest/libqos/arm-virt-machine.c
similarity index 100%
rename from tests/libqos/arm-virt-machine.c
rename to tests/qtest/libqos/arm-virt-machine.c
diff --git a/tests/libqos/arm-xilinx-zynq-a9-machine.c b/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
similarity index 100%
rename from tests/libqos/arm-xilinx-zynq-a9-machine.c
rename to tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
diff --git a/tests/libqos/e1000e.c b/tests/qtest/libqos/e1000e.c
similarity index 100%
rename from tests/libqos/e1000e.c
rename to tests/qtest/libqos/e1000e.c
diff --git a/tests/libqos/e1000e.h b/tests/qtest/libqos/e1000e.h
similarity index 100%
rename from tests/libqos/e1000e.h
rename to tests/qtest/libqos/e1000e.h
diff --git a/tests/libqos/fw_cfg.c b/tests/qtest/libqos/fw_cfg.c
similarity index 100%
rename from tests/libqos/fw_cfg.c
rename to tests/qtest/libqos/fw_cfg.c
diff --git a/tests/libqos/fw_cfg.h b/tests/qtest/libqos/fw_cfg.h
similarity index 100%
rename from tests/libqos/fw_cfg.h
rename to tests/qtest/libqos/fw_cfg.h
diff --git a/tests/libqos/i2c-imx.c b/tests/qtest/libqos/i2c-imx.c
similarity index 100%
rename from tests/libqos/i2c-imx.c
rename to tests/qtest/libqos/i2c-imx.c
diff --git a/tests/libqos/i2c-omap.c b/tests/qtest/libqos/i2c-omap.c
similarity index 100%
rename from tests/libqos/i2c-omap.c
rename to tests/qtest/libqos/i2c-omap.c
diff --git a/tests/libqos/i2c.c b/tests/qtest/libqos/i2c.c
similarity index 100%
rename from tests/libqos/i2c.c
rename to tests/qtest/libqos/i2c.c
diff --git a/tests/libqos/i2c.h b/tests/qtest/libqos/i2c.h
similarity index 100%
rename from tests/libqos/i2c.h
rename to tests/qtest/libqos/i2c.h
diff --git a/tests/libqos/libqos-pc.c b/tests/qtest/libqos/libqos-pc.c
similarity index 100%
rename from tests/libqos/libqos-pc.c
rename to tests/qtest/libqos/libqos-pc.c
diff --git a/tests/libqos/libqos-pc.h b/tests/qtest/libqos/libqos-pc.h
similarity index 100%
rename from tests/libqos/libqos-pc.h
rename to tests/qtest/libqos/libqos-pc.h
diff --git a/tests/libqos/libqos-spapr.c b/tests/qtest/libqos/libqos-spapr.c
similarity index 100%
rename from tests/libqos/libqos-spapr.c
rename to tests/qtest/libqos/libqos-spapr.c
diff --git a/tests/libqos/libqos-spapr.h b/tests/qtest/libqos/libqos-spapr.h
similarity index 100%
rename from tests/libqos/libqos-spapr.h
rename to tests/qtest/libqos/libqos-spapr.h
diff --git a/tests/libqos/libqos.c b/tests/qtest/libqos/libqos.c
similarity index 100%
rename from tests/libqos/libqos.c
rename to tests/qtest/libqos/libqos.c
diff --git a/tests/libqos/libqos.h b/tests/qtest/libqos/libqos.h
similarity index 100%
rename from tests/libqos/libqos.h
rename to tests/qtest/libqos/libqos.h
diff --git a/tests/libqos/malloc-pc.c b/tests/qtest/libqos/malloc-pc.c
similarity index 100%
rename from tests/libqos/malloc-pc.c
rename to tests/qtest/libqos/malloc-pc.c
diff --git a/tests/libqos/malloc-pc.h b/tests/qtest/libqos/malloc-pc.h
similarity index 100%
rename from tests/libqos/malloc-pc.h
rename to tests/qtest/libqos/malloc-pc.h
diff --git a/tests/libqos/malloc-spapr.c b/tests/qtest/libqos/malloc-spapr.c
similarity index 100%
rename from tests/libqos/malloc-spapr.c
rename to tests/qtest/libqos/malloc-spapr.c
diff --git a/tests/libqos/malloc-spapr.h b/tests/qtest/libqos/malloc-spapr.h
similarity index 100%
rename from tests/libqos/malloc-spapr.h
rename to tests/qtest/libqos/malloc-spapr.h
diff --git a/tests/libqos/malloc.c b/tests/qtest/libqos/malloc.c
similarity index 100%
rename from tests/libqos/malloc.c
rename to tests/qtest/libqos/malloc.c
diff --git a/tests/libqos/malloc.h b/tests/qtest/libqos/malloc.h
similarity index 100%
rename from tests/libqos/malloc.h
rename to tests/qtest/libqos/malloc.h
diff --git a/tests/libqos/pci-pc.c b/tests/qtest/libqos/pci-pc.c
similarity index 100%
rename from tests/libqos/pci-pc.c
rename to tests/qtest/libqos/pci-pc.c
diff --git a/tests/libqos/pci-pc.h b/tests/qtest/libqos/pci-pc.h
similarity index 100%
rename from tests/libqos/pci-pc.h
rename to tests/qtest/libqos/pci-pc.h
diff --git a/tests/libqos/pci-spapr.c b/tests/qtest/libqos/pci-spapr.c
similarity index 100%
rename from tests/libqos/pci-spapr.c
rename to tests/qtest/libqos/pci-spapr.c
diff --git a/tests/libqos/pci-spapr.h b/tests/qtest/libqos/pci-spapr.h
similarity index 100%
rename from tests/libqos/pci-spapr.h
rename to tests/qtest/libqos/pci-spapr.h
diff --git a/tests/libqos/pci.c b/tests/qtest/libqos/pci.c
similarity index 100%
rename from tests/libqos/pci.c
rename to tests/qtest/libqos/pci.c
diff --git a/tests/libqos/pci.h b/tests/qtest/libqos/pci.h
similarity index 100%
rename from tests/libqos/pci.h
rename to tests/qtest/libqos/pci.h
diff --git a/tests/libqos/ppc64_pseries-machine.c b/tests/qtest/libqos/ppc64_pseries-machine.c
similarity index 100%
rename from tests/libqos/ppc64_pseries-machine.c
rename to tests/qtest/libqos/ppc64_pseries-machine.c
diff --git a/tests/libqos/qgraph.c b/tests/qtest/libqos/qgraph.c
similarity index 100%
rename from tests/libqos/qgraph.c
rename to tests/qtest/libqos/qgraph.c
diff --git a/tests/libqos/qgraph.h b/tests/qtest/libqos/qgraph.h
similarity index 100%
rename from tests/libqos/qgraph.h
rename to tests/qtest/libqos/qgraph.h
diff --git a/tests/libqos/qgraph_internal.h b/tests/qtest/libqos/qgraph_internal.h
similarity index 100%
rename from tests/libqos/qgraph_internal.h
rename to tests/qtest/libqos/qgraph_internal.h
diff --git a/tests/libqos/rtas.c b/tests/qtest/libqos/rtas.c
similarity index 100%
rename from tests/libqos/rtas.c
rename to tests/qtest/libqos/rtas.c
diff --git a/tests/libqos/rtas.h b/tests/qtest/libqos/rtas.h
similarity index 100%
rename from tests/libqos/rtas.h
rename to tests/qtest/libqos/rtas.h
diff --git a/tests/libqos/sdhci.c b/tests/qtest/libqos/sdhci.c
similarity index 100%
rename from tests/libqos/sdhci.c
rename to tests/qtest/libqos/sdhci.c
diff --git a/tests/libqos/sdhci.h b/tests/qtest/libqos/sdhci.h
similarity index 100%
rename from tests/libqos/sdhci.h
rename to tests/qtest/libqos/sdhci.h
diff --git a/tests/libqos/tpci200.c b/tests/qtest/libqos/tpci200.c
similarity index 100%
rename from tests/libqos/tpci200.c
rename to tests/qtest/libqos/tpci200.c
diff --git a/tests/libqos/usb.c b/tests/qtest/libqos/usb.c
similarity index 100%
rename from tests/libqos/usb.c
rename to tests/qtest/libqos/usb.c
diff --git a/tests/libqos/usb.h b/tests/qtest/libqos/usb.h
similarity index 100%
rename from tests/libqos/usb.h
rename to tests/qtest/libqos/usb.h
diff --git a/tests/libqos/virtio-9p.c b/tests/qtest/libqos/virtio-9p.c
similarity index 100%
rename from tests/libqos/virtio-9p.c
rename to tests/qtest/libqos/virtio-9p.c
diff --git a/tests/libqos/virtio-9p.h b/tests/qtest/libqos/virtio-9p.h
similarity index 100%
rename from tests/libqos/virtio-9p.h
rename to tests/qtest/libqos/virtio-9p.h
diff --git a/tests/libqos/virtio-balloon.c b/tests/qtest/libqos/virtio-balloon.c
similarity index 100%
rename from tests/libqos/virtio-balloon.c
rename to tests/qtest/libqos/virtio-balloon.c
diff --git a/tests/libqos/virtio-balloon.h b/tests/qtest/libqos/virtio-balloon.h
similarity index 100%
rename from tests/libqos/virtio-balloon.h
rename to tests/qtest/libqos/virtio-balloon.h
diff --git a/tests/libqos/virtio-blk.c b/tests/qtest/libqos/virtio-blk.c
similarity index 100%
rename from tests/libqos/virtio-blk.c
rename to tests/qtest/libqos/virtio-blk.c
diff --git a/tests/libqos/virtio-blk.h b/tests/qtest/libqos/virtio-blk.h
similarity index 100%
rename from tests/libqos/virtio-blk.h
rename to tests/qtest/libqos/virtio-blk.h
diff --git a/tests/libqos/virtio-mmio.c b/tests/qtest/libqos/virtio-mmio.c
similarity index 100%
rename from tests/libqos/virtio-mmio.c
rename to tests/qtest/libqos/virtio-mmio.c
diff --git a/tests/libqos/virtio-mmio.h b/tests/qtest/libqos/virtio-mmio.h
similarity index 100%
rename from tests/libqos/virtio-mmio.h
rename to tests/qtest/libqos/virtio-mmio.h
diff --git a/tests/libqos/virtio-net.c b/tests/qtest/libqos/virtio-net.c
similarity index 100%
rename from tests/libqos/virtio-net.c
rename to tests/qtest/libqos/virtio-net.c
diff --git a/tests/libqos/virtio-net.h b/tests/qtest/libqos/virtio-net.h
similarity index 100%
rename from tests/libqos/virtio-net.h
rename to tests/qtest/libqos/virtio-net.h
diff --git a/tests/libqos/virtio-pci-modern.c b/tests/qtest/libqos/virtio-pci-modern.c
similarity index 100%
rename from tests/libqos/virtio-pci-modern.c
rename to tests/qtest/libqos/virtio-pci-modern.c
diff --git a/tests/libqos/virtio-pci-modern.h b/tests/qtest/libqos/virtio-pci-modern.h
similarity index 100%
rename from tests/libqos/virtio-pci-modern.h
rename to tests/qtest/libqos/virtio-pci-modern.h
diff --git a/tests/libqos/virtio-pci.c b/tests/qtest/libqos/virtio-pci.c
similarity index 100%
rename from tests/libqos/virtio-pci.c
rename to tests/qtest/libqos/virtio-pci.c
diff --git a/tests/libqos/virtio-pci.h b/tests/qtest/libqos/virtio-pci.h
similarity index 100%
rename from tests/libqos/virtio-pci.h
rename to tests/qtest/libqos/virtio-pci.h
diff --git a/tests/libqos/virtio-rng.c b/tests/qtest/libqos/virtio-rng.c
similarity index 100%
rename from tests/libqos/virtio-rng.c
rename to tests/qtest/libqos/virtio-rng.c
diff --git a/tests/libqos/virtio-rng.h b/tests/qtest/libqos/virtio-rng.h
similarity index 100%
rename from tests/libqos/virtio-rng.h
rename to tests/qtest/libqos/virtio-rng.h
diff --git a/tests/libqos/virtio-scsi.c b/tests/qtest/libqos/virtio-scsi.c
similarity index 100%
rename from tests/libqos/virtio-scsi.c
rename to tests/qtest/libqos/virtio-scsi.c
diff --git a/tests/libqos/virtio-scsi.h b/tests/qtest/libqos/virtio-scsi.h
similarity index 100%
rename from tests/libqos/virtio-scsi.h
rename to tests/qtest/libqos/virtio-scsi.h
diff --git a/tests/libqos/virtio-serial.c b/tests/qtest/libqos/virtio-serial.c
similarity index 100%
rename from tests/libqos/virtio-serial.c
rename to tests/qtest/libqos/virtio-serial.c
diff --git a/tests/libqos/virtio-serial.h b/tests/qtest/libqos/virtio-serial.h
similarity index 100%
rename from tests/libqos/virtio-serial.h
rename to tests/qtest/libqos/virtio-serial.h
diff --git a/tests/libqos/virtio.c b/tests/qtest/libqos/virtio.c
similarity index 100%
rename from tests/libqos/virtio.c
rename to tests/qtest/libqos/virtio.c
diff --git a/tests/libqos/virtio.h b/tests/qtest/libqos/virtio.h
similarity index 100%
rename from tests/libqos/virtio.h
rename to tests/qtest/libqos/virtio.h
diff --git a/tests/libqos/x86_64_pc-machine.c b/tests/qtest/libqos/x86_64_pc-machine.c
similarity index 100%
rename from tests/libqos/x86_64_pc-machine.c
rename to tests/qtest/libqos/x86_64_pc-machine.c

From 22108f333d16cbfbd5808bb4f661c394b08fe698 Mon Sep 17 00:00:00 2001
From: Stefan Hajnoczi <stefanha@redhat.com>
Date: Thu, 19 Dec 2019 13:56:20 +0000
Subject: [PATCH 8/8] docs: build an index page for the HTML docs

There is no index.html start page for the QEMU HTML documentation.  An
index page is needed so that documentation can be browsed easily on the
web.

This patch adds an index.html.in template file where the QEMU version
number is expanded.  It is written in HTML instead of using the existing
sphinx (rST) and texi documentation generators because they are
heavyweight and would make this harder.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20191219135620.1626608-1-stefanha@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 Makefile           |  6 ++++++
 docs/index.html.in | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)
 create mode 100644 docs/index.html.in

diff --git a/Makefile b/Makefile
index 6b5ad1121b..32bd554480 100644
--- a/Makefile
+++ b/Makefile
@@ -343,6 +343,7 @@ DOCS+=docs/interop/qemu-qmp-ref.html docs/interop/qemu-qmp-ref.txt docs/interop/
 DOCS+=docs/interop/qemu-ga-ref.html docs/interop/qemu-ga-ref.txt docs/interop/qemu-ga-ref.7
 DOCS+=docs/qemu-block-drivers.7
 DOCS+=docs/qemu-cpu-models.7
+DOCS+=$(MANUAL_BUILDDIR)/index.html
 ifdef CONFIG_VIRTFS
 DOCS+=fsdev/virtfs-proxy-helper.1
 endif
@@ -811,6 +812,7 @@ install-sphinxdocs: sphinxdocs
 
 install-doc: $(DOCS) install-sphinxdocs
 	$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
+	$(INSTALL_DATA) $(MANUAL_BUILDDIR)/index.html "$(DESTDIR)$(qemu_docdir)"
 	$(INSTALL_DATA) qemu-doc.html "$(DESTDIR)$(qemu_docdir)"
 	$(INSTALL_DATA) qemu-doc.txt "$(DESTDIR)$(qemu_docdir)"
 	$(INSTALL_DATA) docs/interop/qemu-qmp-ref.html "$(DESTDIR)$(qemu_docdir)"
@@ -1017,6 +1019,10 @@ $(MANUAL_BUILDDIR)/specs/index.html: $(call manual-deps,specs)
 $(MANUAL_BUILDDIR)/interop/qemu-ga.8: $(call manual-deps,interop)
 	$(call build-manual,interop,man)
 
+$(MANUAL_BUILDDIR)/index.html: $(SRC_PATH)/docs/index.html.in qemu-version.h
+	$(call quiet-command, sed "s|@@VERSION@@|${VERSION}|g" $< >$@, \
+             "GEN","$@")
+
 qemu-options.texi: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
 	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"GEN","$@")
 
diff --git a/docs/index.html.in b/docs/index.html.in
new file mode 100644
index 0000000000..94eb782cf7
--- /dev/null
+++ b/docs/index.html.in
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>QEMU @@VERSION@@ Documentation</title>
+    </head>
+    <body>
+        <h1>QEMU @@VERSION@@ Documentation</h1>
+        <ul>
+            <li><a href="qemu-doc.html">User Documentation</a></li>
+            <li><a href="qemu-qmp-ref.html">QMP Reference Manual</a></li>
+            <li><a href="qemu-ga-ref.html">Guest Agent Protocol Reference</a></li>
+            <li><a href="interop/index.html">System Emulation Management and Interoperability Guide</a></li>
+            <li><a href="specs/index.html">System Emulation Guest Hardware Specifications</a></li>
+        </ul>
+    </body>
+</html>