The test uses QMP introspection to find PCI devices, then tries to cold-plug each of them. Could be extended to hot-plug and unplug.
The tests' QMP introspection part is patterned after Andreas's qom-test, which uses QMP to find machine types. The following devices pass the test: AC97 ich9-ahci pcnet ES1370 ich9-intel-hda piix3-ide VGA ich9-usb-ehci1 piix3-ide-xen am53c974 ich9-usb-ehci2 piix3-usb-uhci cirrus-vga ich9-usb-uhci1 piix4-ide dc390 ich9-usb-uhci2 piix4-usb-uhci e1000 ich9-usb-uhci3 pvscsi e1000-82540em ich9-usb-uhci4 qxl-vga e1000-82544gc ich9-usb-uhci5 rtl8139 e1000-82545em ich9-usb-uhci6 sdhci-pci edu intel-hda secondary-vga i6300esb ioh3420 tpci200 i82550 lsi53c810 usb-ehci i82551 lsi53c895a virtio-balloon-pci i82557a megasas virtio-blk-pci i82557b megasas-gen2 virtio-net-pci i82557c ne2k_pci virtio-rng-pci i82558a nec-usb-xhci virtio-scsi-pci i82558b nvme virtio-serial-pci i82559a pci-bridge vmware-svga i82559b pci-ohci vmxnet3 i82559c pci-serial vt82c686b-usb-uhci i82559er pci-serial-2x x3130-upstream i82562 pci-serial-4x xen-pvdevice i82801 pci-testdev xio3130-downstream i82801b11-bridge Many of them are not currently tested at all. This test does everything a number of existing tests currently do: ac97-test.c e1000-test.c es1370-test.c eepro100-test.c ne2000-test.c nvme-test.c pcnet-test.c rtl8139-test.c tpci200-test.c virtio-balloon-test.c virtio-rng-test.c vmxnet3-test.c They are all marked "TODO: Replace with functional tests". Options * Delete them now, undelete when we add functional tests * Keep them, blacklist the devices in pci-devs-test.c * Live with the duplicated testing Andreas, I guess you got an opinion here. There's overlap with a few others: i82801b11-test.c usb-hcd-ehci-test.c usb-hcd-ohci-test.c usb-hcd-xhci-test.c virtio-blk-test.c virtio-net-test.c virtio-scsi-test.c virtio-serial-test.c Options: * Blacklist the devices in pci-devs-test.c * Live with the duplicated testing Andreas? I manually blacklisted devices unavailable with -device, because QMP introspection can't tell (pity). I further blacklisted devices that require a suitable host device to pass through: kvm-pci-assign vhost-scsi-pci xen-pci-passthrough vfio-pci I blacklisted virtio-9p-pci and ivshmem for now, because they require funky backends. I blacklisted qxl and xen-platform, because they fail the test. The test runs only for the x86 targets, just like all of $(check-qtest-pci-y). It could run on other targets, as long as we can find a machine type with a PCI bus. Markus Armbruster (1): qtest: Add generic PCI device test tests/Makefile | 2 + tests/pci-devs-test.c | 299 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 301 insertions(+) create mode 100644 tests/pci-devs-test.c -- 1.9.3