libvirt/tests/qemucapabilitiesdata
Jonathon Jongsma 6cf7dbeff8 qemu: add virtio-blk-vhost-vdpa capability
Check whether the qemu binary supports the vdpa block driver. We can't
rely simply on the existence of the virtio-blk-vhost-vdpa block driver
since the first releases of qemu didn't support fd-passing for this
driver. So we have to check for the 'fdset' feature on the driver
object. This feature will be present in the qemu 8.1.0 release and was
merged to qemu in commit 98b126f5.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2023-09-12 11:06:41 -05:00
..
caps_4.2.0_aarch64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_4.2.0_aarch64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_4.2.0_ppc64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_4.2.0_ppc64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_4.2.0_s390x.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_4.2.0_s390x.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_4.2.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_4.2.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.0.0_aarch64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.0.0_aarch64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.0.0_ppc64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.0.0_ppc64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.0.0_riscv64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.0.0_riscv64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.0.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.0.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.1.0_sparc.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.1.0_sparc.xml qemu: capabilities: Retire QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS 2023-09-04 10:31:52 +02:00
caps_5.1.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.1.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.2.0_aarch64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.2.0_aarch64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.2.0_ppc64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.2.0_ppc64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.2.0_riscv64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.2.0_riscv64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.2.0_s390x.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.2.0_s390x.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_5.2.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_5.2.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.0.0_aarch64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.0.0_aarch64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.0.0_s390x.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.0.0_s390x.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.0.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.0.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.1.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.1.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.2.0_aarch64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.2.0_aarch64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.2.0_ppc64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.2.0_ppc64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_6.2.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_6.2.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.0.0_aarch64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.0.0_aarch64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.0.0_aarch64+hvf.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.0.0_aarch64+hvf.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.0.0_ppc64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.0.0_ppc64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.0.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.0.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.1.0_ppc64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.1.0_ppc64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.1.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.1.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.2.0_ppc.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.2.0_ppc.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.2.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.2.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_7.2.0_x86_64+hvf.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_7.2.0_x86_64+hvf.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_8.0.0_riscv64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_8.0.0_riscv64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_8.0.0_x86_64.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_8.0.0_x86_64.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_8.1.0_s390x.replies qemu: capabilities: Don't probe 'query-commands' 2023-07-20 17:27:19 +02:00
caps_8.1.0_s390x.xml qemu_capabilities: Retire QEMU_CAPS_DEVICE_VFIO_PCI 2023-09-06 14:09:43 +02:00
caps_8.1.0_x86_64.replies qemucapabilitiesdata: Final update of capability test data for qemu-8.1.0 release 2023-08-25 14:02:01 +02:00
caps_8.1.0_x86_64.xml qemu: add virtio-blk-vhost-vdpa capability 2023-09-12 11:06:41 -05:00
README.rst domaincapstest: Add testing infrastructure for the '+hvf' variant 2023-04-03 09:19:06 +02:00

QEMU capabilities testing

Purpose

Test data in this directory is used:

  • to excercise the capability parsing code in qemucapabilitiestest
  • provides "real" capabilities data for test suites such as domaincapstest qemuxml2argvtest, qemuxml2xmltest, and others
  • provides the required data to validate the QMP commands used by libvirt against qemu's QMP schema

Naming

Files in this directory have the following naming scheme:

caps_$QEMUVERSION_$ARCHITECTURE.$SUFFIX

or:

caps_$QEMUVERSION_$ARCHITECTURE+$VARIANT.$SUFFIX

$QEMUVERSION

Numeric representation of the qemu version, e.g.: 7.0.0

$ARCHITECTURE

Architecture string such as x86_64, aarch64, etc.

$SUFFIX

.replies for the dump of the QMP communication used to probe qemu. .xml for the generated capability dump

$VARIANT

The variant name is an optional arbitrary string, not containing any dot.

A variant is an additional named version of capabilities for given version and architecture tuple. This allows for testing special cases which e.g. depend on a specific host platform or operating system feature, which differs from the main tests. Note that in the test code the variant name is an empty string or includes the '+' sign for ease of use.

Known test variants

+hvf

Variant of the test data using the Apple OSX Hypervisor Framework acceleration for qemu.

Usage in tests

Test suites such as qemucapabilitiestest or domaincapstest pick up the test data automatically once the corresponding .xml or .replies file is present in tests/qemucapabilitiesdata.

Other test suites such as qemuxml2argvtest provide macros which invoke test cases using this data such as DO_TEST_CAPS_LATEST.

Capturing QEMU capabilities

QEMU capabilities are captured by running the qemucapsprobe on the QEMU binary on given architecture and then capturing the output. Since virtualization acceleration is also probed it's required to run it on real hardware.

The capabilities dumps contain also host-specific information such as the exact CPU definition of the machine where it was ran on, thus they can differ significantly when run on other machines.

Probing QEMU

Run the qemucapsprobe tool:

$ LIBVIRT_BUILDDIR/tests/qemucapsprobe /path/to/qemu > output.replies

The tool spawns the qemu binary and performs probing as if libvirt would do that. The QMP conversation between qemu and libvirt is dumped to stdout. User running the probe must be able to access the virtualization accelerator (e.g. have proper permissions on /dev/kvm)

Generating the output files

Place the captured output .replies file into this directory and run:

$ VIR_TEST_REGENERATE_OUTPUT=1 ninja test

This runs the test-suite instructing it to update and/or generate all new data the test would normally expect.

Manual modifications the .replies file

In certain cases it's impractical or impossible to re-generate the .replies file on a code change causing a change to the actual QMP query process.

In such case a careful manual modification of the .replies is tolerated.

To aid such modification the tool tests/qemucapabilitiesnumbering can be used.

The tool validates and updates the numbering of the entries in the QMP dump in case something was modified.

The tool also allows programatic modification of the .replies file.

See tests/qemucapabilitiesnumbering.c.