QEMUs pcie-upstream-port and pcie-downstream-port devices are more capable generic replacements for the x3130-upstream and xio3130-downstream devices which emulate a vintage TI XIO3130 PCIe switch. If QEMU supports the pcie-upstream-port and pcie-downstream-port devices, prefer these over the older XIO3130 devices. This useful when used with passthrough devices to make the in-guest apparent bandwidth match the hardware bandwidth as the XIO3130 ports are limited to 2.5 GT/s and x1 but the generic ports report 64 GT/s and x32. This allows in-guest software (such as NCCL) to make better decisions about whether to use P2P transfers etc. Signed-off-by: David Vrabel <david.vrabel@nutanix.com> --- src/conf/domain_conf.c | 2 + src/conf/domain_conf.h | 2 + src/conf/schemas/domaincommon.rng | 2 + src/qemu/qemu_capabilities.c | 250 +++++++++--------- src/qemu/qemu_capabilities.h | 248 ++++++++--------- src/qemu/qemu_domain_address.c | 10 +- src/qemu/qemu_validate.c | 10 +- ...ream-port-model-generic.x86_64-latest.args | 47 ++++ ...tream-port-model-generic.x86_64-latest.xml | 91 +++++++ ...e-switch-downstream-port-model-generic.xml | 44 +++ ...ream-port-model-generic.x86_64-latest.args | 42 +++ ...tream-port-model-generic.x86_64-latest.xml | 66 +++++ ...cie-switch-upstream-port-model-generic.xml | 37 +++ tests/qemuxmlconftest.c | 2 + 14 files changed, 603 insertions(+), 250 deletions(-) create mode 100644 tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.xml create mode 100644 tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.xml diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 34d3b00079..b9db849060 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -449,6 +449,8 @@ VIR_ENUM_IMPL(virDomainControllerPCIModelName, "ioh3420", "x3130-upstream", "xio3130-downstream", + "pcie-upstream-port", + "pcie-downstream-port", "pxb", "pxb-pcie", "pcie-root-port", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3732525af4..01213f2b14 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -659,6 +659,8 @@ typedef enum { VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_UPSTREAM_PORT, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_DOWNSTREAM_PORT, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT, diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 887fb8f808..b1740892e6 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -3071,8 +3071,10 @@ <value>pcie-root-port</value> <!-- implementations of "pcie-switch-upstream-port" --> <value>x3130-upstream</value> + <value>pcie-upstream-port</value> <!-- implementations of "pcie-switch-downstream-port" --> <value>xio3130-downstream</value> + <value>pcie-downstream-port</value> <!-- implementations of "pci-expander-bus" --> <value>pxb</value> <!-- implementations of "pcie-expander-bus" --> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index bc2b0412dc..091eb88729 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -343,436 +343,438 @@ VIR_ENUM_IMPL(virQEMUCaps, "ioh3420", /* QEMU_CAPS_DEVICE_IOH3420 */ "x3130-upstream", /* QEMU_CAPS_DEVICE_X3130_UPSTREAM */ "xio3130-downstream", /* QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM */ - "rtl8139", /* QEMU_CAPS_DEVICE_RTL8139 */ + "pcie-upstream-port", /* QEMU_CAPS_DEVICE_PCIE_UPSTREAM_PORT */ /* 195 */ + "pcie-downstream-port", /* QEMU_CAPS_DEVICE_PCIE_DOWNSTREAM_PORT */ + "rtl8139", /* QEMU_CAPS_DEVICE_RTL8139 */ "e1000", /* QEMU_CAPS_DEVICE_E1000 */ "virtio-net", /* QEMU_CAPS_DEVICE_VIRTIO_NET */ "gic-version", /* X_QEMU_CAPS_MACH_VIRT_GIC_VERSION */ - "incoming-defer", /* X_QEMU_CAPS_INCOMING_DEFER */ - "virtio-gpu", /* QEMU_CAPS_DEVICE_VIRTIO_GPU */ /* 200 */ + "incoming-defer", /* X_QEMU_CAPS_INCOMING_DEFER */ + "virtio-gpu", /* QEMU_CAPS_DEVICE_VIRTIO_GPU */ "virtio-gpu.virgl", /* QEMU_CAPS_VIRTIO_GPU_VIRGL */ "virtio-keyboard", /* QEMU_CAPS_VIRTIO_KEYBOARD */ "virtio-mouse", /* QEMU_CAPS_VIRTIO_MOUSE */ - "virtio-tablet", /* QEMU_CAPS_VIRTIO_TABLET */ - "virtio-input-host", /* QEMU_CAPS_VIRTIO_INPUT_HOST */ /* 205 */ + "virtio-tablet", /* QEMU_CAPS_VIRTIO_TABLET */ + "virtio-input-host", /* QEMU_CAPS_VIRTIO_INPUT_HOST */ "chardev-file-append", /* X_QEMU_CAPS_CHARDEV_FILE_APPEND */ "ich9-disable-s3", /* X_QEMU_CAPS_ICH9_DISABLE_S3 */ "ich9-disable-s4", /* X_QEMU_CAPS_ICH9_DISABLE_S4 */ - "vserport-change-event", /* X_QEMU_CAPS_VSERPORT_CHANGE */ - "virtio-balloon-pci.deflate-on-oom", /* QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE */ /* 210 */ + "vserport-change-event", /* X_QEMU_CAPS_VSERPORT_CHANGE */ + "virtio-balloon-pci.deflate-on-oom", /* QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE */ "mptsas1068", /* QEMU_CAPS_SCSI_MPTSAS1068 */ "spice-gl", /* QEMU_CAPS_SPICE_GL */ "qxl.vram64_size_mb", /* QEMU_CAPS_QXL_VRAM64 */ - "qxl-vga.vram64_size_mb", /* X_QEMU_CAPS_QXL_VGA_VRAM64 */ - "chardev-logfile", /* X_QEMU_CAPS_CHARDEV_LOGFILE */ /* 215 */ + "qxl-vga.vram64_size_mb", /* X_QEMU_CAPS_QXL_VGA_VRAM64 */ + "chardev-logfile", /* X_QEMU_CAPS_CHARDEV_LOGFILE */ "debug-threads", /* X_QEMU_CAPS_NAME_DEBUG_THREADS */ "secret", /* X_QEMU_CAPS_OBJECT_SECRET */ "pxb", /* QEMU_CAPS_DEVICE_PXB */ - "pxb-pcie", /* QEMU_CAPS_DEVICE_PXB_PCIE */ - "device-tray-moved-event", /* X_QEMU_CAPS_DEVICE_TRAY_MOVED */ /* 220 */ + "pxb-pcie", /* QEMU_CAPS_DEVICE_PXB_PCIE */ + "device-tray-moved-event", /* X_QEMU_CAPS_DEVICE_TRAY_MOVED */ "nec-usb-xhci-ports", /* X_QEMU_CAPS_NEC_USB_XHCI_PORTS */ "virtio-scsi-pci.iothread", /* X_QEMU_CAPS_VIRTIO_SCSI_IOTHREAD */ "name-guest", /* X_QEMU_CAPS_NAME_GUEST */ - "qxl.max_outputs", /* X_QEMU_CAPS_QXL_MAX_OUTPUTS */ - "qxl-vga.max_outputs", /* X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS */ /* 225 */ + "qxl.max_outputs", /* X_QEMU_CAPS_QXL_MAX_OUTPUTS */ + "qxl-vga.max_outputs", /* X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS */ "spice-unix", /* X_QEMU_CAPS_SPICE_UNIX */ "drive-detect-zeroes", /* X_QEMU_CAPS_DRIVE_DETECT_ZEROES */ "tls-creds-x509", /* X_QEMU_CAPS_OBJECT_TLS_CREDS_X509 */ - "display", /* X_QEMU_CAPS_DISPLAY */ - "intel-iommu", /* QEMU_CAPS_DEVICE_INTEL_IOMMU */ /* 230 */ + "display", /* X_QEMU_CAPS_DISPLAY */ + "intel-iommu", /* QEMU_CAPS_DEVICE_INTEL_IOMMU */ "smm", /* X_QEMU_CAPS_MACHINE_SMM_OPT */ "virtio-pci-disable-legacy", /* X_QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY */ "query-hotpluggable-cpus", /* X_QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS */ - "virtio-net.rx_queue_size", /* X_QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE */ - "machine-iommu", /* X_QEMU_CAPS_MACHINE_IOMMU */ /* 235 */ + "virtio-net.rx_queue_size", /* X_QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE */ + "machine-iommu", /* X_QEMU_CAPS_MACHINE_IOMMU */ "virtio-vga", /* QEMU_CAPS_DEVICE_VIRTIO_VGA */ "drive-iotune-max-length", /* X_QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH */ "ivshmem-plain", /* QEMU_CAPS_DEVICE_IVSHMEM_PLAIN */ - "ivshmem-doorbell", /* QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL */ - "query-qmp-schema", /* X_QEMU_CAPS_QUERY_QMP_SCHEMA */ /* 240 */ + "ivshmem-doorbell", /* QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL */ + "query-qmp-schema", /* X_QEMU_CAPS_QUERY_QMP_SCHEMA */ "gluster.debug_level", /* X_QEMU_CAPS_GLUSTER_DEBUG_LEVEL */ "vhost-scsi", /* QEMU_CAPS_DEVICE_VHOST_SCSI */ "drive-iotune-group", /* X_QEMU_CAPS_DRIVE_IOTUNE_GROUP */ - "query-cpu-model-expansion", /* QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION */ - "virtio-net.host_mtu", /* X_QEMU_CAPS_VIRTIO_NET_HOST_MTU */ /* 245 */ + "query-cpu-model-expansion", /* QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION */ + "virtio-net.host_mtu", /* X_QEMU_CAPS_VIRTIO_NET_HOST_MTU */ "spice-rendernode", /* QEMU_CAPS_SPICE_RENDERNODE */ "nvdimm", /* QEMU_CAPS_DEVICE_NVDIMM */ "pcie-root-port", /* QEMU_CAPS_DEVICE_PCIE_ROOT_PORT */ - "query-cpu-definitions", /* QEMU_CAPS_QUERY_CPU_DEFINITIONS */ - "block-write-threshold", /* X_QEMU_CAPS_BLOCK_WRITE_THRESHOLD */ /* 250 */ + "query-cpu-definitions", /* QEMU_CAPS_QUERY_CPU_DEFINITIONS */ + "block-write-threshold", /* X_QEMU_CAPS_BLOCK_WRITE_THRESHOLD */ "query-named-block-nodes", /* X_QEMU_CAPS_QUERY_NAMED_BLOCK_NODES */ "cpu-cache", /* X_QEMU_CAPS_CPU_CACHE */ "qemu-xhci", /* QEMU_CAPS_DEVICE_QEMU_XHCI */ - "kernel-irqchip", /* X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP */ - "kernel-irqchip.split", /* X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP_SPLIT */ /* 255 */ + "kernel-irqchip", /* X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP */ + "kernel-irqchip.split", /* X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP_SPLIT */ "intel-iommu.intremap", /* QEMU_CAPS_INTEL_IOMMU_INTREMAP */ "intel-iommu.caching-mode", /* QEMU_CAPS_INTEL_IOMMU_CACHING_MODE */ "intel-iommu.eim", /* QEMU_CAPS_INTEL_IOMMU_EIM */ - "intel-iommu.device-iotlb", /* QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB */ - "virtio.iommu_platform", /* X_QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM */ /* 260 */ + "intel-iommu.device-iotlb", /* QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB */ + "virtio.iommu_platform", /* X_QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM */ "virtio.ats", /* X_QEMU_CAPS_VIRTIO_PCI_ATS */ "loadparm", /* X_QEMU_CAPS_LOADPARM */ "spapr-pci-host-bridge", /* QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE */ - "spapr-pci-host-bridge.numa_node", /* QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE */ - "vnc-multi-servers", /* X_QEMU_CAPS_VNC_MULTI_SERVERS */ /* 265 */ + "spapr-pci-host-bridge.numa_node", /* QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE */ + "vnc-multi-servers", /* X_QEMU_CAPS_VNC_MULTI_SERVERS */ "virtio-net.tx_queue_size", /* X_QEMU_CAPS_VIRTIO_NET_TX_QUEUE_SIZE */ "chardev-reconnect", /* X_QEMU_CAPS_CHARDEV_RECONNECT */ "virtio-gpu.max_outputs", /* X_QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS */ - "vxhs", /* X_QEMU_CAPS_VXHS */ - "virtio-blk.num-queues", /* X_QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES */ /* 270 */ + "vxhs", /* X_QEMU_CAPS_VXHS */ + "virtio-blk.num-queues", /* X_QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES */ "machine.pseries.resize-hpt", /* X_QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT */ "vmcoreinfo", /* QEMU_CAPS_DEVICE_VMCOREINFO */ "spapr-vty", /* QEMU_CAPS_DEVICE_SPAPR_VTY */ - "sclplmconsole", /* QEMU_CAPS_DEVICE_SCLPLMCONSOLE */ - "numa.dist", /* X_QEMU_CAPS_NUMA_DIST */ /* 275 */ + "sclplmconsole", /* QEMU_CAPS_DEVICE_SCLPLMCONSOLE */ + "numa.dist", /* X_QEMU_CAPS_NUMA_DIST */ "disk-share-rw", /* X_QEMU_CAPS_DISK_SHARE_RW */ "iscsi.password-secret", /* X_QEMU_CAPS_ISCSI_PASSWORD_SECRET */ "isa-serial", /* QEMU_CAPS_DEVICE_ISA_SERIAL */ - "pl011", /* QEMU_CAPS_DEVICE_PL011 */ - "machine.pseries.max-cpu-compat", /* X_QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT */ /* 280 */ + "pl011", /* QEMU_CAPS_DEVICE_PL011 */ + "machine.pseries.max-cpu-compat", /* X_QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT */ "dump-completed", /* X_QEMU_CAPS_DUMP_COMPLETED */ "virtio-gpu-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW */ "virtio-keyboard-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW */ - "virtio-mouse-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW */ - "virtio-tablet-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW */ /* 285 */ + "virtio-mouse-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW */ + "virtio-tablet-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW */ "qcow2-luks", /* X_QEMU_CAPS_QCOW2_LUKS */ "pcie-pci-bridge", /* QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE */ "seccomp-blacklist", /* X_QEMU_CAPS_SECCOMP_BLACKLIST */ - "query-cpus-fast", /* X_QEMU_CAPS_QUERY_CPUS_FAST */ - "disk-write-cache", /* X_QEMU_CAPS_DISK_WRITE_CACHE */ /* 290 */ + "query-cpus-fast", /* X_QEMU_CAPS_QUERY_CPUS_FAST */ + "disk-write-cache", /* X_QEMU_CAPS_DISK_WRITE_CACHE */ "nbd-tls", /* QEMU_CAPS_NBD_TLS */ "tpm-crb", /* QEMU_CAPS_DEVICE_TPM_CRB */ "pr-manager-helper", /* QEMU_CAPS_PR_MANAGER_HELPER */ - "qom-list-properties", /* X_QEMU_CAPS_QOM_LIST_PROPERTIES */ - "memory-backend-file.discard-data", /* X_QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD */ /* 295 */ + "qom-list-properties", /* X_QEMU_CAPS_QOM_LIST_PROPERTIES */ + "memory-backend-file.discard-data", /* X_QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD */ "virtual-css-bridge", /* X_QEMU_CAPS_CCW */ "virtual-css-bridge.cssid-unrestricted", /* X_QEMU_CAPS_CCW_CSSID_UNRESTRICTED */ "vfio-ccw", /* QEMU_CAPS_DEVICE_VFIO_CCW */ - "sdl-gl", /* X_QEMU_CAPS_SDL_GL */ - "screendump_device", /* QEMU_CAPS_SCREENDUMP_DEVICE */ /* 300 */ + "sdl-gl", /* X_QEMU_CAPS_SDL_GL */ + "screendump_device", /* QEMU_CAPS_SCREENDUMP_DEVICE */ "hda-output", /* QEMU_CAPS_HDA_OUTPUT */ "blockdev-del", /* X_QEMU_CAPS_BLOCKDEV_DEL */ "vmgenid", /* QEMU_CAPS_DEVICE_VMGENID */ - "vhost-vsock", /* QEMU_CAPS_DEVICE_VHOST_VSOCK */ - "chardev-fd-pass", /* X_QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE */ /* 305 */ + "vhost-vsock", /* QEMU_CAPS_DEVICE_VHOST_VSOCK */ + "chardev-fd-pass", /* X_QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE */ "tpm-emulator", /* QEMU_CAPS_DEVICE_TPM_EMULATOR */ "mch", /* QEMU_CAPS_DEVICE_MCH */ "mch.extended-tseg-mbytes", /* QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES */ - "sev-guest", /* QEMU_CAPS_SEV_GUEST */ - "machine.pseries.cap-hpt-max-page-size", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE */ /* 310 */ + "sev-guest", /* QEMU_CAPS_SEV_GUEST */ + "machine.pseries.cap-hpt-max-page-size", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE */ "machine.pseries.cap-htm", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_HTM */ "usb-storage.werror", /* X_QEMU_CAPS_USB_STORAGE_WERROR */ "egl-headless", /* QEMU_CAPS_EGL_HEADLESS */ - "vfio-pci.display", /* X_QEMU_CAPS_VFIO_PCI_DISPLAY */ - "blockdev", /* X_QEMU_CAPS_BLOCKDEV */ /* 315 */ + "vfio-pci.display", /* X_QEMU_CAPS_VFIO_PCI_DISPLAY */ + "blockdev", /* X_QEMU_CAPS_BLOCKDEV */ "vfio-ap", /* QEMU_CAPS_DEVICE_VFIO_AP */ "zpci", /* QEMU_CAPS_DEVICE_ZPCI */ "memory-backend-memfd", /* QEMU_CAPS_OBJECT_MEMORY_MEMFD */ - "memory-backend-memfd.hugetlb", /* QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB */ - "iothread.poll-max-ns", /* X_QEMU_CAPS_IOTHREAD_POLLING */ /* 320 */ + "memory-backend-memfd.hugetlb", /* QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB */ + "iothread.poll-max-ns", /* X_QEMU_CAPS_IOTHREAD_POLLING */ "machine.pseries.cap-nested-hv", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV */ "egl-headless.rendernode", /* QEMU_CAPS_EGL_HEADLESS_RENDERNODE */ "memory-backend-file.align", /* X_QEMU_CAPS_OBJECT_MEMORY_FILE_ALIGN */ - "memory-backend-file.pmem", /* QEMU_CAPS_OBJECT_MEMORY_FILE_PMEM */ - "nvdimm.unarmed", /* QEMU_CAPS_DEVICE_NVDIMM_UNARMED */ /* 325 */ + "memory-backend-file.pmem", /* QEMU_CAPS_OBJECT_MEMORY_FILE_PMEM */ + "nvdimm.unarmed", /* QEMU_CAPS_DEVICE_NVDIMM_UNARMED */ "scsi-disk.device_id", /* X_QEMU_CAPS_SCSI_DISK_DEVICE_ID */ "virtio-pci-non-transitional", /* QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL */ "overcommit", /* X_QEMU_CAPS_OVERCOMMIT */ - "query-current-machine", /* X_QEMU_CAPS_QUERY_CURRENT_MACHINE */ - "machine.virt.iommu", /* QEMU_CAPS_MACHINE_VIRT_IOMMU */ /* 330 */ + "query-current-machine", /* X_QEMU_CAPS_QUERY_CURRENT_MACHINE */ + "machine.virt.iommu", /* QEMU_CAPS_MACHINE_VIRT_IOMMU */ "bitmap-merge", /* X_QEMU_CAPS_BITMAP_MERGE */ "nbd-bitmap", /* X_QEMU_CAPS_NBD_BITMAP */ "x86-max-cpu", /* QEMU_CAPS_X86_MAX_CPU */ - "cpu-unavailable-features", /* QEMU_CAPS_CPU_UNAVAILABLE_FEATURES */ - "canonical-cpu-features", /* QEMU_CAPS_CANONICAL_CPU_FEATURES */ /* 335 */ + "cpu-unavailable-features", /* QEMU_CAPS_CPU_UNAVAILABLE_FEATURES */ + "canonical-cpu-features", /* QEMU_CAPS_CANONICAL_CPU_FEATURES */ "bochs-display", /* QEMU_CAPS_DEVICE_BOCHS_DISPLAY */ "migration-file-drop-cache", /* QEMU_CAPS_MIGRATION_FILE_DROP_CACHE */ "dbus-vmstate", /* QEMU_CAPS_DBUS_VMSTATE */ - "vhost-user-gpu", /* QEMU_CAPS_DEVICE_VHOST_USER_GPU */ - "vhost-user-vga", /* QEMU_CAPS_DEVICE_VHOST_USER_VGA */ /* 340 */ + "vhost-user-gpu", /* QEMU_CAPS_DEVICE_VHOST_USER_GPU */ + "vhost-user-vga", /* QEMU_CAPS_DEVICE_VHOST_USER_VGA */ "incremental-backup", /* X_QEMU_CAPS_INCREMENTAL_BACKUP */ "query-cpu-model-baseline", /* QEMU_CAPS_QUERY_CPU_MODEL_BASELINE */ "query-cpu-model-comparison", /* QEMU_CAPS_QUERY_CPU_MODEL_COMPARISON */ - "ramfb", /* QEMU_CAPS_DEVICE_RAMFB */ - "machine.pseries.cap-ccf-assist", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST */ /* 345 */ + "ramfb", /* QEMU_CAPS_DEVICE_RAMFB */ + "machine.pseries.cap-ccf-assist", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST */ "arm-max-cpu", /* QEMU_CAPS_ARM_MAX_CPU */ "blockdev-file-dynamic-auto-read-only", /* X_QEMU_CAPS_BLOCK_FILE_AUTO_READONLY_DYNAMIC */ "savevm-monitor-nodes", /* X_QEMU_CAPS_SAVEVM_MONITOR_NODES */ - "drive-nvme", /* QEMU_CAPS_DRIVE_NVME */ - "smp-dies", /* QEMU_CAPS_SMP_DIES */ /* 350 */ + "drive-nvme", /* QEMU_CAPS_DRIVE_NVME */ + "smp-dies", /* QEMU_CAPS_SMP_DIES */ "i8042", /* QEMU_CAPS_DEVICE_I8042 */ "rng-builtin", /* QEMU_CAPS_OBJECT_RNG_BUILTIN */ "virtio-net.failover", /* X_QEMU_CAPS_VIRTIO_NET_FAILOVER */ - "tpm-spapr", /* QEMU_CAPS_DEVICE_TPM_SPAPR */ - "cpu.kvm-no-adjvtime", /* QEMU_CAPS_CPU_KVM_NO_ADJVTIME */ /* 355 */ + "tpm-spapr", /* QEMU_CAPS_DEVICE_TPM_SPAPR */ + "cpu.kvm-no-adjvtime", /* QEMU_CAPS_CPU_KVM_NO_ADJVTIME */ "vhost-user-fs", /* QEMU_CAPS_DEVICE_VHOST_USER_FS */ "query-named-block-nodes.flat", /* X_QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT */ "blockdev-snapshot.allow-write-only-overlay", /* X_QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY */ - "blockdev-reopen", /* X_QEMU_CAPS_BLOCKDEV_REOPEN */ - "storage.werror", /* X_QEMU_CAPS_STORAGE_WERROR */ /* 360 */ + "blockdev-reopen", /* X_QEMU_CAPS_BLOCKDEV_REOPEN */ + "storage.werror", /* X_QEMU_CAPS_STORAGE_WERROR */ "fsdev.multidevs", /* QEMU_CAPS_FSDEV_MULTIDEVS */ "virtio.packed", /* X_QEMU_CAPS_VIRTIO_PACKED_QUEUES */ "pcie-root-port.hotplug", /* QEMU_CAPS_PCIE_ROOT_PORT_HOTPLUG */ - "aio.io_uring", /* QEMU_CAPS_AIO_IO_URING */ - "machine.pseries.cap-cfpc", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC */ /* 365 */ + "aio.io_uring", /* QEMU_CAPS_AIO_IO_URING */ + "machine.pseries.cap-cfpc", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC */ "machine.pseries.cap-sbbc", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_SBBC */ "machine.pseries.cap-ibs", /* X_QEMU_CAPS_MACHINE_PSERIES_CAP_IBS */ "tcg", /* QEMU_CAPS_TCG */ - "virtio-blk-pci.scsi.default.disabled", /* QEMU_CAPS_VIRTIO_BLK_SCSI_DEFAULT_DISABLED */ - "pvscsi", /* QEMU_CAPS_SCSI_PVSCSI */ /* 370 */ + "virtio-blk-pci.scsi.default.disabled", /* QEMU_CAPS_VIRTIO_BLK_SCSI_DEFAULT_DISABLED */ + "pvscsi", /* QEMU_CAPS_SCSI_PVSCSI */ "cpu.migratable", /* QEMU_CAPS_CPU_MIGRATABLE */ "query-cpu-model-expansion.migratable", /* X_QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_MIGRATABLE */ "fw_cfg", /* X_QEMU_CAPS_FW_CFG */ - "migration-param.bandwidth", /* X_QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH */ - "migration-param.downtime", /* X_QEMU_CAPS_MIGRATION_PARAM_DOWNTIME */ /* 375 */ + "migration-param.bandwidth", /* X_QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH */ + "migration-param.downtime", /* X_QEMU_CAPS_MIGRATION_PARAM_DOWNTIME */ "migration-param.xbzrle-cache-size", /* X_QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE */ "intel-iommu.aw-bits", /* QEMU_CAPS_INTEL_IOMMU_AW_BITS */ "spapr-tpm-proxy", /* QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY */ - "numa.hmat", /* QEMU_CAPS_NUMA_HMAT */ - "blockdev-hostdev-scsi", /* X_QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI */ /* 380 */ + "numa.hmat", /* QEMU_CAPS_NUMA_HMAT */ + "blockdev-hostdev-scsi", /* X_QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI */ "usb-host.hostdevice", /* QEMU_CAPS_USB_HOST_HOSTDEVICE */ "virtio-balloon.free-page-reporting", /* QEMU_CAPS_VIRTIO_BALLOON_FREE_PAGE_REPORTING */ "block-export-add", /* X_QEMU_CAPS_BLOCK_EXPORT_ADD */ - "netdev.vhost-vdpa", /* QEMU_CAPS_NETDEV_VHOST_VDPA */ - "fsdev.createmode", /* X_QEMU_CAPS_FSDEV_CREATEMODE */ /* 385 */ + "netdev.vhost-vdpa", /* QEMU_CAPS_NETDEV_VHOST_VDPA */ + "fsdev.createmode", /* X_QEMU_CAPS_FSDEV_CREATEMODE */ "ncr53c90", /* QEMU_CAPS_SCSI_NCR53C90 */ "dc390", /* QEMU_CAPS_SCSI_DC390 */ "am53c974", /* QEMU_CAPS_SCSI_AM53C974 */ - "virtio-pmem-pci", /* QEMU_CAPS_DEVICE_VIRTIO_PMEM_PCI */ - "vhost-user-fs.bootindex", /* QEMU_CAPS_VHOST_USER_FS_BOOTINDEX */ /* 390 */ + "virtio-pmem-pci", /* QEMU_CAPS_DEVICE_VIRTIO_PMEM_PCI */ + "vhost-user-fs.bootindex", /* QEMU_CAPS_VHOST_USER_FS_BOOTINDEX */ "vhost-user-blk", /* QEMU_CAPS_DEVICE_VHOST_USER_BLK */ "cpu-max", /* QEMU_CAPS_CPU_MAX */ "memory-backend-file.x-use-canonical-path-for-ramblock-id", /* QEMU_CAPS_X_USE_CANONICAL_PATH_FOR_RAMBLOCK_ID */ - "vnc-opts", /* X_QEMU_CAPS_VNC_OPTS */ - "migration-param.block-bitmap-mapping", /* X_QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING */ /* 395 */ + "vnc-opts", /* X_QEMU_CAPS_VNC_OPTS */ + "migration-param.block-bitmap-mapping", /* X_QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING */ "vnc-power-control", /* QEMU_CAPS_VNC_POWER_CONTROL */ "audiodev", /* X_QEMU_CAPS_AUDIODEV */ "blockdev-backup", /* X_QEMU_CAPS_BLOCKDEV_BACKUP */ - "object.qapified", /* X_QEMU_CAPS_OBJECT_JSON */ - "rotation-rate", /* QEMU_CAPS_ROTATION_RATE */ /* 400 */ + "object.qapified", /* X_QEMU_CAPS_OBJECT_JSON */ + "rotation-rate", /* QEMU_CAPS_ROTATION_RATE */ "compat-deprecated", /* X_QEMU_CAPS_COMPAT_DEPRECATED */ "acpi-index", /* QEMU_CAPS_ACPI_INDEX */ "input-linux", /* QEMU_CAPS_INPUT_LINUX */ - "virtio-gpu-gl-pci", /* QEMU_CAPS_VIRTIO_GPU_GL_PCI */ - "virtio-vga-gl", /* QEMU_CAPS_VIRTIO_VGA_GL */ /* 405 */ + "virtio-gpu-gl-pci", /* QEMU_CAPS_VIRTIO_GPU_GL_PCI */ + "virtio-vga-gl", /* QEMU_CAPS_VIRTIO_VGA_GL */ "confidential-guest-support", /* QEMU_CAPS_MACHINE_CONFIDENTAL_GUEST_SUPPORT */ "query-display-options", /* X_QEMU_CAPS_QUERY_DISPLAY_OPTIONS */ "s390-pv-guest", /* QEMU_CAPS_S390_PV_GUEST */ - "set-action", /* X_QEMU_CAPS_SET_ACTION */ - "virtio-blk.queue-size", /* QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE */ /* 410 */ + "set-action", /* X_QEMU_CAPS_SET_ACTION */ + "virtio-blk.queue-size", /* QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE */ "virtio-mem-pci", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI */ "memory-backend-file.reserve", /* QEMU_CAPS_MEMORY_BACKEND_RESERVE */ "piix4.acpi-root-pci-hotplug", /* QEMU_CAPS_PIIX4_ACPI_ROOT_PCI_HOTPLUG */ - "netdev.json", /* QEMU_CAPS_NETDEV_JSON */ - "chardev.json", /* QEMU_CAPS_CHARDEV_JSON */ /* 415 */ + "netdev.json", /* QEMU_CAPS_NETDEV_JSON */ + "chardev.json", /* QEMU_CAPS_CHARDEV_JSON */ "device.json", /* X_QEMU_CAPS_DEVICE_JSON_BROKEN_HOTPLUG */ "query-dirty-rate", /* QEMU_CAPS_QUERY_DIRTY_RATE */ "rbd-encryption", /* QEMU_CAPS_RBD_ENCRYPTION */ - "sev-guest-kernel-hashes", /* QEMU_CAPS_SEV_GUEST_KERNEL_HASHES */ - "sev-inject-launch-secret", /* QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET */ /* 420 */ + "sev-guest-kernel-hashes", /* QEMU_CAPS_SEV_GUEST_KERNEL_HASHES */ + "sev-inject-launch-secret", /* QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET */ "device.json+hotplug", /* QEMU_CAPS_DEVICE_JSON */ "hvf", /* QEMU_CAPS_HVF */ "virtio-mem-pci.prealloc", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_PREALLOC */ - "calc-dirty-rate", /* QEMU_CAPS_CALC_DIRTY_RATE */ - "dirtyrate-param.mode", /* QEMU_CAPS_DIRTYRATE_MODE */ /* 425 */ + "calc-dirty-rate", /* QEMU_CAPS_CALC_DIRTY_RATE */ + "dirtyrate-param.mode", /* QEMU_CAPS_DIRTYRATE_MODE */ "blockdev.nbd.tls-hostname", /* QEMU_CAPS_BLOCKDEV_NBD_TLS_HOSTNAME */ "memory-backend-file.prealloc-threads", /* QEMU_CAPS_MEMORY_BACKEND_PREALLOC_THREADS */ "virtio-iommu-pci", /* QEMU_CAPS_DEVICE_VIRTIO_IOMMU_PCI */ - "virtio-iommu.boot-bypass", /* QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS */ - "virtio-net.rss", /* QEMU_CAPS_VIRTIO_NET_RSS */ /* 430 */ + "virtio-iommu.boot-bypass", /* QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS */ + "virtio-net.rss", /* QEMU_CAPS_VIRTIO_NET_RSS */ "chardev.qemu-vdagent", /* QEMU_CAPS_CHARDEV_QEMU_VDAGENT */ "display-dbus", /* QEMU_CAPS_DISPLAY_DBUS */ "iothread.thread-pool-max", /* QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX */ - "usb-host.guest-resets-all", /* QEMU_CAPS_USB_HOST_GUESTS_RESETS_ALL */ - "migration.blocked-reasons", /* QEMU_CAPS_MIGRATION_BLOCKED_REASONS */ /* 435 */ + "usb-host.guest-resets-all", /* QEMU_CAPS_USB_HOST_GUESTS_RESETS_ALL */ + "migration.blocked-reasons", /* QEMU_CAPS_MIGRATION_BLOCKED_REASONS */ "query-stats", /* QEMU_CAPS_QUERY_STATS */ "query-stats-schemas", /* QEMU_CAPS_QUERY_STATS_SCHEMAS */ "sgx-epc", /* QEMU_CAPS_SGX_EPC */ - "thread-context", /* QEMU_CAPS_THREAD_CONTEXT */ - "screenshot-format-png", /* QEMU_CAPS_SCREENSHOT_FORMAT_PNG */ /* 440 */ + "thread-context", /* QEMU_CAPS_THREAD_CONTEXT */ + "screenshot-format-png", /* QEMU_CAPS_SCREENSHOT_FORMAT_PNG */ "machine-hpet", /* QEMU_CAPS_MACHINE_HPET */ "netdev.stream", /* QEMU_CAPS_NETDEV_STREAM */ "virtio-crypto", /* QEMU_CAPS_DEVICE_VIRTIO_CRYPTO */ - "cryptodev-backend-lkcf", /* QEMU_CAPS_OBJECT_CRYPTO_LKCF */ - "pvpanic-pci", /* QEMU_CAPS_DEVICE_PANIC_PCI */ /* 445 */ + "cryptodev-backend-lkcf", /* QEMU_CAPS_OBJECT_CRYPTO_LKCF */ + "pvpanic-pci", /* QEMU_CAPS_DEVICE_PANIC_PCI */ "netdev.stream.reconnect", /* QEMU_CAPS_NETDEV_STREAM_RECONNECT */ "virtio-gpu.blob", /* QEMU_CAPS_VIRTIO_GPU_BLOB */ "rbd-encryption-layering", /* QEMU_CAPS_RBD_ENCRYPTION_LAYERING */ - "rbd-encryption-luks-any", /* QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY */ - "qcow2-discard-no-unref", /* QEMU_CAPS_QCOW2_DISCARD_NO_UNREF */ /* 450 */ + "rbd-encryption-luks-any", /* QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY */ + "qcow2-discard-no-unref", /* QEMU_CAPS_QCOW2_DISCARD_NO_UNREF */ "run-with.async-teardown", /* QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN */ "virtio-blk-vhost-vdpa", /* QEMU_CAPS_DEVICE_VIRTIO_BLK_VHOST_VDPA */ "virtio-blk.iothread-mapping", /* QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING */ - "smp-clusters", /* QEMU_CAPS_SMP_CLUSTERS */ - "virtio-mem-pci.dynamic-memslots", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_DYNAMIC_MEMSLOTS */ /* 455 */ + "smp-clusters", /* QEMU_CAPS_SMP_CLUSTERS */ + "virtio-mem-pci.dynamic-memslots", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_DYNAMIC_MEMSLOTS */ "blockjob.backing-mask-protocol", /* QEMU_CAPS_BLOCKJOB_BACKING_MASK_PROTOCOL */ "display-reload", /* QEMU_CAPS_DISPLAY_RELOAD */ "usb-mtp", /* QEMU_CAPS_DEVICE_USB_MTP */ - "machine.virt.ras", /* QEMU_CAPS_MACHINE_VIRT_RAS */ - "virtio-sound", /* QEMU_CAPS_DEVICE_VIRTIO_SOUND */ /* 460 */ + "machine.virt.ras", /* QEMU_CAPS_MACHINE_VIRT_RAS */ + "virtio-sound", /* QEMU_CAPS_DEVICE_VIRTIO_SOUND */ "sev-snp-guest", /* QEMU_CAPS_SEV_SNP_GUEST */ "netdev.user", /* QEMU_CAPS_NETDEV_USER */ "acpi-erst", /* QEMU_CAPS_DEVICE_ACPI_ERST */ - "intel-iommu.dma-translation", /* QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION */ - "machine-i8042-opt", /* QEMU_CAPS_MACHINE_I8042_OPT */ /* 465 */ + "intel-iommu.dma-translation", /* QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION */ + "machine-i8042-opt", /* QEMU_CAPS_MACHINE_I8042_OPT */ "snapshot-internal-qmp", /* X_QEMU_CAPS_SNAPSHOT_INTERNAL_QMP */ "chardev-reconnect-miliseconds", /* QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS */ "virtio-ccw.loadparm", /* QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM */ - "netdev-stream-reconnect-miliseconds", /* QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS */ - "query-cpu-model-expansion.deprecated-props", /* QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS */ /* 470 */ + "netdev-stream-reconnect-miliseconds", /* QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS */ + "query-cpu-model-expansion.deprecated-props", /* QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS */ "migrate-incoming.exit-on-error", /* QEMU_CAPS_MIGRATE_INCOMING_EXIT_ON_ERROR */ "machine.virt.aia", /* QEMU_CAPS_MACHINE_VIRT_AIA */ "virtio-mem-ccw", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_CCW */ - "blockdev-set-active", /* QEMU_CAPS_BLOCKDEV_SET_ACTIVE */ - "shim", /* QEMU_CAPS_MACHINE_SHIM */ /* 475 */ + "blockdev-set-active", /* QEMU_CAPS_BLOCKDEV_SET_ACTIVE */ + "shim", /* QEMU_CAPS_MACHINE_SHIM */ "virtio-scsi.iothread-mapping", /* QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING */ "machine.virt.highmem-mmio-size", /* QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE */ "bus-floppy", /* QEMU_CAPS_BUS_FLOPPY */ - "nvme", /* QEMU_CAPS_DEVICE_NVME */ - "nvme-ns", /* QEMU_CAPS_DEVICE_NVME_NS */ /* 480 */ + "nvme", /* QEMU_CAPS_DEVICE_NVME */ + "nvme-ns", /* QEMU_CAPS_DEVICE_NVME_NS */ "amd-iommu", /* QEMU_CAPS_AMD_IOMMU */ "amd-iommu.pci-id", /* QEMU_CAPS_AMD_IOMMU_PCI_ID */ "usb-bot", /* QEMU_CAPS_DEVICE_USB_BOT */ - "tdx-guest", /* QEMU_CAPS_TDX_GUEST */ - "qom-list-get", /* QEMU_CAPS_QOM_LIST_GET */ /* 485 */ + "tdx-guest", /* QEMU_CAPS_TDX_GUEST */ + "qom-list-get", /* QEMU_CAPS_QOM_LIST_GET */ "acpi-generic-initiator", /* QEMU_CAPS_ACPI_GENERIC_INITIATOR */ "disk-timed-stats", /* QEMU_CAPS_DISK_TIMED_STATS */ "query-accelerators", /* QEMU_CAPS_QUERY_ACCELERATORS */ - "mshv", /* QEMU_CAPS_MSHV */ - "virtio-iommu.aw-bits", /* QEMU_CAPS_VIRTIO_IOMMU_AW_BITS */ /* 490 */ + "mshv", /* QEMU_CAPS_MSHV */ + "virtio-iommu.aw-bits", /* QEMU_CAPS_VIRTIO_IOMMU_AW_BITS */ "scsi-block.migrate-pr", /* QEMU_CAPS_DEVICE_SCSI_BLOCK_MIGRATE_PR */ "iommufd", /* QEMU_CAPS_OBJECT_IOMMUFD */ "uefi-vars", /* QEMU_CAPS_DEVICE_UEFI_VARS */ - "query-block-flat", /* QEMU_CAPS_QUERY_BLOCK_FLAT */ - "amd-iommu.xtsup", /* QEMU_CAPS_AMD_IOMMU_XTSUP */ /* 495 */ + "query-block-flat", /* QEMU_CAPS_QUERY_BLOCK_FLAT */ + "amd-iommu.xtsup", /* QEMU_CAPS_AMD_IOMMU_XTSUP */ "blockdev-mirror.target-is-zero", /* QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO */ "object-monitor-qmp", /* QEMU_CAPS_OBJECT_MONITOR_QMP */ "arm-smmuv3", /* QEMU_CAPS_DEVICE_ARM_SMMUV3 */ - "arm-smmuv3.smmu_per_bus", /* QEMU_CAPS_ARM_SMMUV3_SMMU_PER_BUS */ - "arm-smmuv3.accel", /* QEMU_CAPS_ARM_SMMUV3_ACCEL */ /* 500 */ + "arm-smmuv3.smmu_per_bus", /* QEMU_CAPS_ARM_SMMUV3_SMMU_PER_BUS */ + "arm-smmuv3.accel", /* QEMU_CAPS_ARM_SMMUV3_ACCEL */ "arm-smmuv3.cmdqv", /* QEMU_CAPS_ARM_SMMUV3_CMDQV */ "iothread.poll-weight", /* QEMU_CAPS_IOTHREAD_POLL_WEIGHT */ "win-dmp.guest-aware", /* QEMU_CAPS_WIN_DMP_GUEST_AWARE */ @@ -1356,6 +1358,8 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "ioh3420", QEMU_CAPS_DEVICE_IOH3420 }, { "x3130-upstream", QEMU_CAPS_DEVICE_X3130_UPSTREAM }, { "xio3130-downstream", QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM }, + { "pcie-upstream-port", QEMU_CAPS_DEVICE_PCIE_UPSTREAM_PORT }, + { "pcie-downstream-port", QEMU_CAPS_DEVICE_PCIE_DOWNSTREAM_PORT }, { "rtl8139", QEMU_CAPS_DEVICE_RTL8139 }, { "e1000", QEMU_CAPS_DEVICE_E1000 }, { "virtio-net-pci", QEMU_CAPS_DEVICE_VIRTIO_NET }, diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 28303fd8f0..3e76a0f1cc 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -316,437 +316,439 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_DEVICE_IOH3420, /* -device ioh3420 */ QEMU_CAPS_DEVICE_X3130_UPSTREAM, /* -device x3130-upstream */ QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM, /* -device xio3130-downstream */ - QEMU_CAPS_DEVICE_RTL8139, /* -device rtl8139 */ + QEMU_CAPS_DEVICE_PCIE_UPSTREAM_PORT, /* -device pcie-upstream-port */ /* 195 */ + QEMU_CAPS_DEVICE_PCIE_DOWNSTREAM_PORT, /* -device pcie-downstream-port */ + QEMU_CAPS_DEVICE_RTL8139, /* -device rtl8139 */ QEMU_CAPS_DEVICE_E1000, /* -device e1000 */ QEMU_CAPS_DEVICE_VIRTIO_NET, /* -device virtio-net-* */ X_QEMU_CAPS_MACH_VIRT_GIC_VERSION, /* -machine virt,gic-version */ - X_QEMU_CAPS_INCOMING_DEFER, /* -incoming defer and migrate_incoming */ - QEMU_CAPS_DEVICE_VIRTIO_GPU, /* -device virtio-gpu-* */ /* 200 */ + X_QEMU_CAPS_INCOMING_DEFER, /* -incoming defer and migrate_incoming */ + QEMU_CAPS_DEVICE_VIRTIO_GPU, /* -device virtio-gpu-* */ QEMU_CAPS_VIRTIO_GPU_VIRGL, /* -device virtio-gpu-*.virgl */ QEMU_CAPS_VIRTIO_KEYBOARD, /* -device virtio-keyboard-{device,pci} */ QEMU_CAPS_VIRTIO_MOUSE, /* -device virtio-mouse-{device,pci} */ - QEMU_CAPS_VIRTIO_TABLET, /* -device virtio-tablet-{device,pci} */ - QEMU_CAPS_VIRTIO_INPUT_HOST, /* -device virtio-input-host-{device,pci} */ /* 205 */ + QEMU_CAPS_VIRTIO_TABLET, /* -device virtio-tablet-{device,pci} */ + QEMU_CAPS_VIRTIO_INPUT_HOST, /* -device virtio-input-host-{device,pci} */ X_QEMU_CAPS_CHARDEV_FILE_APPEND, /* -chardev file,append=on|off */ X_QEMU_CAPS_ICH9_DISABLE_S3, /* -M q35 S3 BIOS Advertisement on/off */ X_QEMU_CAPS_ICH9_DISABLE_S4, /* -M q35 S4 BIOS Advertisement on/off */ + + /* 210 */ X_QEMU_CAPS_VSERPORT_CHANGE, /* VSERPORT_CHANGE event */ QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE, /* virtio-balloon-{device,pci,ccw}. * deflate-on-oom */ - - /* 210 */ QEMU_CAPS_SCSI_MPTSAS1068, /* -device mptsas1068 */ QEMU_CAPS_SPICE_GL, /* -spice gl */ QEMU_CAPS_QXL_VRAM64, /* -device qxl.vram64_size_mb */ - X_QEMU_CAPS_QXL_VGA_VRAM64, /* -device qxl-vga.vram64_size_mb */ - X_QEMU_CAPS_CHARDEV_LOGFILE, /* -chardev logfile=xxxx */ /* 215 */ + X_QEMU_CAPS_QXL_VGA_VRAM64, /* -device qxl-vga.vram64_size_mb */ + X_QEMU_CAPS_CHARDEV_LOGFILE, /* -chardev logfile=xxxx */ X_QEMU_CAPS_NAME_DEBUG_THREADS, /* Is -name debug-threads= available */ X_QEMU_CAPS_OBJECT_SECRET, /* -object secret */ QEMU_CAPS_DEVICE_PXB, /* -device pxb */ - QEMU_CAPS_DEVICE_PXB_PCIE, /* -device pxb-pcie */ - X_QEMU_CAPS_DEVICE_TRAY_MOVED, /* DEVICE_TRAY_MOVED event */ /* 220 */ + QEMU_CAPS_DEVICE_PXB_PCIE, /* -device pxb-pcie */ + X_QEMU_CAPS_DEVICE_TRAY_MOVED, /* DEVICE_TRAY_MOVED event */ X_QEMU_CAPS_NEC_USB_XHCI_PORTS, /* -device nec-usb-xhci.p3 ports setting */ X_QEMU_CAPS_VIRTIO_SCSI_IOTHREAD, /* virtio-scsi-{pci,ccw}.iothread */ X_QEMU_CAPS_NAME_GUEST, /* -name guest= */ - X_QEMU_CAPS_QXL_MAX_OUTPUTS, /* -device qxl,max-outputs= */ - X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS, /* -device qxl-vga,max-outputs= */ /* 225 */ + X_QEMU_CAPS_QXL_MAX_OUTPUTS, /* -device qxl,max-outputs= */ + X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS, /* -device qxl-vga,max-outputs= */ X_QEMU_CAPS_SPICE_UNIX, /* -spice unix */ X_QEMU_CAPS_DRIVE_DETECT_ZEROES, /* -drive detect-zeroes= */ X_QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */ - X_QEMU_CAPS_DISPLAY, /* -display */ - QEMU_CAPS_DEVICE_INTEL_IOMMU, /* -device intel-iommu */ /* 230 */ + X_QEMU_CAPS_DISPLAY, /* -display */ + QEMU_CAPS_DEVICE_INTEL_IOMMU, /* -device intel-iommu */ X_QEMU_CAPS_MACHINE_SMM_OPT, /* -machine xxx,smm=on/off/auto */ X_QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, /* virtio-*pci.disable-legacy */ X_QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS, /* qmp command query-hotpluggable-cpus */ - X_QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE, /* virtio-net-*.rx_queue_size */ - X_QEMU_CAPS_MACHINE_IOMMU, /* -machine iommu=on */ /* 235 */ + X_QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE, /* virtio-net-*.rx_queue_size */ + X_QEMU_CAPS_MACHINE_IOMMU, /* -machine iommu=on */ QEMU_CAPS_DEVICE_VIRTIO_VGA, /* -device virtio-vga */ X_QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH, /* -drive bps_max_length = and friends */ QEMU_CAPS_DEVICE_IVSHMEM_PLAIN, /* -device ivshmem-plain */ - QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL, /* -device ivshmem-doorbell */ - X_QEMU_CAPS_QUERY_QMP_SCHEMA, /* query-qmp-schema command */ /* 240 */ + QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL, /* -device ivshmem-doorbell */ + X_QEMU_CAPS_QUERY_QMP_SCHEMA, /* query-qmp-schema command */ X_QEMU_CAPS_GLUSTER_DEBUG_LEVEL, /* -drive gluster.debug_level={0..9} */ QEMU_CAPS_DEVICE_VHOST_SCSI, /* -device vhost-scsi-{ccw,pci} */ X_QEMU_CAPS_DRIVE_IOTUNE_GROUP, /* -drive throttling.group=<name> */ - QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION, /* qmp query-cpu-model-expansion */ - X_QEMU_CAPS_VIRTIO_NET_HOST_MTU, /* virtio-net-*.host_mtu */ /* 245 */ + QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION, /* qmp query-cpu-model-expansion */ + X_QEMU_CAPS_VIRTIO_NET_HOST_MTU, /* virtio-net-*.host_mtu */ QEMU_CAPS_SPICE_RENDERNODE, /* -spice rendernode */ QEMU_CAPS_DEVICE_NVDIMM, /* -device nvdimm */ QEMU_CAPS_DEVICE_PCIE_ROOT_PORT, /* -device pcie-root-port */ - QEMU_CAPS_QUERY_CPU_DEFINITIONS, /* qmp query-cpu-definitions */ - X_QEMU_CAPS_BLOCK_WRITE_THRESHOLD, /* BLOCK_WRITE_THRESHOLD event */ /* 250 */ + QEMU_CAPS_QUERY_CPU_DEFINITIONS, /* qmp query-cpu-definitions */ + X_QEMU_CAPS_BLOCK_WRITE_THRESHOLD, /* BLOCK_WRITE_THRESHOLD event */ X_QEMU_CAPS_QUERY_NAMED_BLOCK_NODES, /* qmp query-named-block-nodes */ X_QEMU_CAPS_CPU_CACHE, /* -cpu supports host-cache-info and l3-cache properties */ QEMU_CAPS_DEVICE_QEMU_XHCI, /* -device qemu-xhci */ - X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP, /* -machine kernel_irqchip */ - X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP_SPLIT, /* -machine kernel_irqchip=split */ /* 255 */ + X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP, /* -machine kernel_irqchip */ + X_QEMU_CAPS_MACHINE_KERNEL_IRQCHIP_SPLIT, /* -machine kernel_irqchip=split */ QEMU_CAPS_INTEL_IOMMU_INTREMAP, /* intel-iommu.intremap */ QEMU_CAPS_INTEL_IOMMU_CACHING_MODE, /* intel-iommu.caching-mode */ QEMU_CAPS_INTEL_IOMMU_EIM, /* intel-iommu.eim */ - QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB, /* intel-iommu.device-iotlb */ - X_QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM, /* virtio-*-pci.iommu_platform */ /* 260 */ + QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB, /* intel-iommu.device-iotlb */ + X_QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM, /* virtio-*-pci.iommu_platform */ X_QEMU_CAPS_VIRTIO_PCI_ATS, /* virtio-*-pci.ats */ X_QEMU_CAPS_LOADPARM, /* -machine loadparm */ QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, /* -device spapr-pci-host-bridge */ - QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE, /* spapr-pci-host-bridge.numa_node= */ - X_QEMU_CAPS_VNC_MULTI_SERVERS, /* -vnc vnc=unix:/path */ /* 265 */ + QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE, /* spapr-pci-host-bridge.numa_node= */ + X_QEMU_CAPS_VNC_MULTI_SERVERS, /* -vnc vnc=unix:/path */ X_QEMU_CAPS_VIRTIO_NET_TX_QUEUE_SIZE, /* virtio-net-*.tx_queue_size */ X_QEMU_CAPS_CHARDEV_RECONNECT, /* -chardev reconnect */ X_QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS, /* -device virtio-(vga|gpu-*),max-outputs= */ - X_QEMU_CAPS_VXHS, /* -drive file.driver=vxhs via query-qmp-schema */ - X_QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES, /* virtio-blk-*.num-queues */ /* 270 */ + X_QEMU_CAPS_VXHS, /* -drive file.driver=vxhs via query-qmp-schema */ + X_QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES, /* virtio-blk-*.num-queues */ X_QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT, /* -machine pseries,resize-hpt */ QEMU_CAPS_DEVICE_VMCOREINFO, /* -device vmcoreinfo */ QEMU_CAPS_DEVICE_SPAPR_VTY, /* -device spapr-vty */ - QEMU_CAPS_DEVICE_SCLPLMCONSOLE, /* -device sclplmconsole */ - X_QEMU_CAPS_NUMA_DIST, /* -numa dist */ /* 275 */ + QEMU_CAPS_DEVICE_SCLPLMCONSOLE, /* -device sclplmconsole */ + X_QEMU_CAPS_NUMA_DIST, /* -numa dist */ X_QEMU_CAPS_DISK_SHARE_RW, /* share-rw=on for concurrent disk access */ X_QEMU_CAPS_ISCSI_PASSWORD_SECRET, /* -drive file.driver=iscsi,...,password-secret= */ QEMU_CAPS_DEVICE_ISA_SERIAL, /* -device isa-serial */ - QEMU_CAPS_DEVICE_PL011, /* -device pl011 (not user-instantiable) */ - X_QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT, /* -machine pseries,max-cpu-compat= */ /* 280 */ + QEMU_CAPS_DEVICE_PL011, /* -device pl011 (not user-instantiable) */ + X_QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT, /* -machine pseries,max-cpu-compat= */ X_QEMU_CAPS_DUMP_COMPLETED, /* DUMP_COMPLETED event */ QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW, /* -device virtio-gpu-ccw */ QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW, /* -device virtio-keyboard-ccw */ - QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW, /* -device virtio-mouse-ccw */ - QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW, /* -device virtio-tablet-ccw */ /* 285 */ + QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW, /* -device virtio-mouse-ccw */ + QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW, /* -device virtio-tablet-ccw */ X_QEMU_CAPS_QCOW2_LUKS, /* qcow2 format support LUKS encryption */ QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE, /* -device pcie-pci-bridge */ X_QEMU_CAPS_SECCOMP_BLACKLIST, /* -sandbox.elevateprivileges */ - X_QEMU_CAPS_QUERY_CPUS_FAST, /* query-cpus-fast command */ - X_QEMU_CAPS_DISK_WRITE_CACHE, /* qemu block frontends support write-cache param */ /* 290 */ + X_QEMU_CAPS_QUERY_CPUS_FAST, /* query-cpus-fast command */ + X_QEMU_CAPS_DISK_WRITE_CACHE, /* qemu block frontends support write-cache param */ QEMU_CAPS_NBD_TLS, /* NBD server supports TLS transport */ QEMU_CAPS_DEVICE_TPM_CRB, /* -device tpm-crb */ QEMU_CAPS_PR_MANAGER_HELPER, /* -object pr-manager-helper */ - X_QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ - X_QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-file,discard-data */ /* 295 */ + X_QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ + X_QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-file,discard-data */ X_QEMU_CAPS_CCW, /* -device virtual-css-bridge */ X_QEMU_CAPS_CCW_CSSID_UNRESTRICTED, /* virtual-css-bridge.cssid-unrestricted= */ QEMU_CAPS_DEVICE_VFIO_CCW, /* -device vfio-ccw */ - X_QEMU_CAPS_SDL_GL, /* -sdl gl */ - QEMU_CAPS_SCREENDUMP_DEVICE, /* screendump command accepts device & head */ /* 300 */ + X_QEMU_CAPS_SDL_GL, /* -sdl gl */ + QEMU_CAPS_SCREENDUMP_DEVICE, /* screendump command accepts device & head */ QEMU_CAPS_HDA_OUTPUT, /* -device hda-output */ X_QEMU_CAPS_BLOCKDEV_DEL, /* blockdev-del is supported */ QEMU_CAPS_DEVICE_VMGENID, /* -device vmgenid */ - QEMU_CAPS_DEVICE_VHOST_VSOCK, /* -device vhost-vsock-* */ - X_QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE, /* Passing pre-opened FDs for chardevs on commandline */ /* 305 */ + QEMU_CAPS_DEVICE_VHOST_VSOCK, /* -device vhost-vsock-* */ + X_QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE, /* Passing pre-opened FDs for chardevs on commandline */ QEMU_CAPS_DEVICE_TPM_EMULATOR, /* -tpmdev emulator */ QEMU_CAPS_DEVICE_MCH, /* Northbridge in q35 machine types */ QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES, /* -global mch.extended-tseg-mbytes */ - QEMU_CAPS_SEV_GUEST, /* -object sev-guest,... */ - X_QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE, /* -machine pseries.cap-hpt-max-page-size */ /* 310 */ + QEMU_CAPS_SEV_GUEST, /* -object sev-guest,... */ + X_QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE, /* -machine pseries.cap-hpt-max-page-size */ X_QEMU_CAPS_MACHINE_PSERIES_CAP_HTM, /* -machine pseries.cap-htm */ X_QEMU_CAPS_USB_STORAGE_WERROR, /* -device usb-storage,werror=..,rerror=.. */ QEMU_CAPS_EGL_HEADLESS, /* -display egl-headless */ - X_QEMU_CAPS_VFIO_PCI_DISPLAY, /* -device vfio-pci.display */ - X_QEMU_CAPS_BLOCKDEV, /* -blockdev and blockdev-add are supported */ /* 315 */ + X_QEMU_CAPS_VFIO_PCI_DISPLAY, /* -device vfio-pci.display */ + X_QEMU_CAPS_BLOCKDEV, /* -blockdev and blockdev-add are supported */ QEMU_CAPS_DEVICE_VFIO_AP, /* -device vfio-ap */ QEMU_CAPS_DEVICE_ZPCI, /* -device zpci */ QEMU_CAPS_OBJECT_MEMORY_MEMFD, /* -object memory-backend-memfd */ - QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB, /* -object memory-backend-memfd.hugetlb */ - X_QEMU_CAPS_IOTHREAD_POLLING, /* -object iothread.poll-max-ns */ /* 320 */ + QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB, /* -object memory-backend-memfd.hugetlb */ + X_QEMU_CAPS_IOTHREAD_POLLING, /* -object iothread.poll-max-ns */ X_QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV, /* -machine pseries.cap-nested-hv */ QEMU_CAPS_EGL_HEADLESS_RENDERNODE, /* -display egl-headless,rendernode= */ X_QEMU_CAPS_OBJECT_MEMORY_FILE_ALIGN, /* -object memory-backend-file,align= */ - QEMU_CAPS_OBJECT_MEMORY_FILE_PMEM, /* -object memory-backend-file,pmem= */ - QEMU_CAPS_DEVICE_NVDIMM_UNARMED, /* -device nvdimm,unarmed= */ /* 325 */ + QEMU_CAPS_OBJECT_MEMORY_FILE_PMEM, /* -object memory-backend-file,pmem= */ + QEMU_CAPS_DEVICE_NVDIMM_UNARMED, /* -device nvdimm,unarmed= */ X_QEMU_CAPS_SCSI_DISK_DEVICE_ID, /* 'device_id' property of scsi disk */ QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL, /* virtio *-pci-{non-}transitional devices */ X_QEMU_CAPS_OVERCOMMIT, /* -overcommit */ - X_QEMU_CAPS_QUERY_CURRENT_MACHINE, /* query-current-machine command */ - QEMU_CAPS_MACHINE_VIRT_IOMMU, /* -machine virt,iommu */ /* 330 */ + X_QEMU_CAPS_QUERY_CURRENT_MACHINE, /* query-current-machine command */ + QEMU_CAPS_MACHINE_VIRT_IOMMU, /* -machine virt,iommu */ X_QEMU_CAPS_BITMAP_MERGE, /* block-dirty-bitmap-merge */ X_QEMU_CAPS_NBD_BITMAP, /* nbd-server-add supports bitmap */ QEMU_CAPS_X86_MAX_CPU, /* max-x86_64-cpu type exists */ - QEMU_CAPS_CPU_UNAVAILABLE_FEATURES, /* "unavailable-features" CPU property */ - QEMU_CAPS_CANONICAL_CPU_FEATURES, /* avoid CPU feature aliases */ /* 335 */ + QEMU_CAPS_CPU_UNAVAILABLE_FEATURES, /* "unavailable-features" CPU property */ + QEMU_CAPS_CANONICAL_CPU_FEATURES, /* avoid CPU feature aliases */ QEMU_CAPS_DEVICE_BOCHS_DISPLAY, /* -device bochs-display */ QEMU_CAPS_MIGRATION_FILE_DROP_CACHE, /* migration with disk cache on is safe for type='file' disks */ QEMU_CAPS_DBUS_VMSTATE, /* -object dbus-vmstate */ - QEMU_CAPS_DEVICE_VHOST_USER_GPU, /* -device vhost-user-gpu */ - QEMU_CAPS_DEVICE_VHOST_USER_VGA, /* -device vhost-user-vga */ /* 340 */ + QEMU_CAPS_DEVICE_VHOST_USER_GPU, /* -device vhost-user-gpu */ + QEMU_CAPS_DEVICE_VHOST_USER_VGA, /* -device vhost-user-vga */ X_QEMU_CAPS_INCREMENTAL_BACKUP, /* incremental backup is supported */ QEMU_CAPS_QUERY_CPU_MODEL_BASELINE, /* qmp query-cpu-model-baseline */ QEMU_CAPS_QUERY_CPU_MODEL_COMPARISON, /* qmp query-cpu-model-comparison */ - QEMU_CAPS_DEVICE_RAMFB, /* -device ramfb */ - X_QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST, /* -machine pseries.cap-ccf-assist */ /* 345 */ + QEMU_CAPS_DEVICE_RAMFB, /* -device ramfb */ + X_QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST, /* -machine pseries.cap-ccf-assist */ QEMU_CAPS_ARM_MAX_CPU, /* max-arm-cpu type exists */ X_QEMU_CAPS_BLOCK_FILE_AUTO_READONLY_DYNAMIC, /* the auto-read-only property of block backends for files is dynamic */ X_QEMU_CAPS_SAVEVM_MONITOR_NODES, /* 'savevm' handles monitor-owned nodes properly */ - QEMU_CAPS_DRIVE_NVME, /* -drive file.driver=nvme */ - QEMU_CAPS_SMP_DIES, /* -smp dies= */ /* 350 */ + QEMU_CAPS_DRIVE_NVME, /* -drive file.driver=nvme */ + QEMU_CAPS_SMP_DIES, /* -smp dies= */ QEMU_CAPS_DEVICE_I8042, /* PS/2 controller, use virQEMUCapsSupportsI8042() to query this capability */ QEMU_CAPS_OBJECT_RNG_BUILTIN, /* -object rng-builtin */ X_QEMU_CAPS_VIRTIO_NET_FAILOVER, /* virtio-net-*.failover */ - QEMU_CAPS_DEVICE_TPM_SPAPR, /* -device tpm-spapr */ - QEMU_CAPS_CPU_KVM_NO_ADJVTIME, /* cpu.kvm-no-adjvtime */ /* 355 */ + QEMU_CAPS_DEVICE_TPM_SPAPR, /* -device tpm-spapr */ + QEMU_CAPS_CPU_KVM_NO_ADJVTIME, /* cpu.kvm-no-adjvtime */ QEMU_CAPS_DEVICE_VHOST_USER_FS, /* -device vhost-user-fs */ X_QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT, /* query-named-block-nodes supports the 'flat' option */ X_QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY, /* blockdev-snapshot has the 'allow-write-only-overlay' feature */ - X_QEMU_CAPS_BLOCKDEV_REOPEN, /* 'blockdev-reopen' qmp command is supported */ - X_QEMU_CAPS_STORAGE_WERROR, /* virtio-blk,scsi-hd.werror */ /* 360 */ + X_QEMU_CAPS_BLOCKDEV_REOPEN, /* 'blockdev-reopen' qmp command is supported */ + X_QEMU_CAPS_STORAGE_WERROR, /* virtio-blk,scsi-hd.werror */ QEMU_CAPS_FSDEV_MULTIDEVS, /* fsdev.multidevs */ X_QEMU_CAPS_VIRTIO_PACKED_QUEUES, /* virtio.packed */ QEMU_CAPS_PCIE_ROOT_PORT_HOTPLUG, /* pcie-root-port.hotplug */ - QEMU_CAPS_AIO_IO_URING, /* -blockdev {...,"aio":"io_uring",...} */ - X_QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC, /* -machine pseries.cap-cfpc */ /* 365 */ + QEMU_CAPS_AIO_IO_URING, /* -blockdev {...,"aio":"io_uring",...} */ + X_QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC, /* -machine pseries.cap-cfpc */ X_QEMU_CAPS_MACHINE_PSERIES_CAP_SBBC, /* -machine pseries.cap-sbbc */ X_QEMU_CAPS_MACHINE_PSERIES_CAP_IBS, /* -machine pseries.cap-ibs */ QEMU_CAPS_TCG, /* QEMU does support TCG */ - QEMU_CAPS_VIRTIO_BLK_SCSI_DEFAULT_DISABLED, /* virtio-blk-pci.scsi disabled by default */ - QEMU_CAPS_SCSI_PVSCSI, /* -device pvscsi */ /* 370 */ + QEMU_CAPS_VIRTIO_BLK_SCSI_DEFAULT_DISABLED, /* virtio-blk-pci.scsi disabled by default */ + QEMU_CAPS_SCSI_PVSCSI, /* -device pvscsi */ QEMU_CAPS_CPU_MIGRATABLE, /* -cpu ...,migratable=on|off */ X_QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_MIGRATABLE, /* query-cpu-model-expansion supports migratable:false */ X_QEMU_CAPS_FW_CFG, /* -fw_cfg command line option */ - X_QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH, /* max-bandwidth field in migrate-set-parameters */ - X_QEMU_CAPS_MIGRATION_PARAM_DOWNTIME, /* downtime-limit field in migrate-set-parameters */ /* 375 */ + X_QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH, /* max-bandwidth field in migrate-set-parameters */ + X_QEMU_CAPS_MIGRATION_PARAM_DOWNTIME, /* downtime-limit field in migrate-set-parameters */ X_QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, /* xbzrle-cache-size field in migrate-set-parameters */ QEMU_CAPS_INTEL_IOMMU_AW_BITS, /* intel-iommu.aw-bits */ QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY, /* -device spapr-tpm-proxy */ - QEMU_CAPS_NUMA_HMAT, /* -numa hmat */ - X_QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI, /* -blockdev used for (i)SCSI hostdevs */ /* 380 */ + QEMU_CAPS_NUMA_HMAT, /* -numa hmat */ + X_QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI, /* -blockdev used for (i)SCSI hostdevs */ QEMU_CAPS_USB_HOST_HOSTDEVICE, /* -device usb-host.hostdevice */ QEMU_CAPS_VIRTIO_BALLOON_FREE_PAGE_REPORTING, /*virtio balloon free-page-reporting */ X_QEMU_CAPS_BLOCK_EXPORT_ADD, /* 'block-export-add' command is supported */ - QEMU_CAPS_NETDEV_VHOST_VDPA, /* -netdev vhost-vdpa*/ - X_QEMU_CAPS_FSDEV_CREATEMODE, /* fsdev.createmode */ /* 385 */ + QEMU_CAPS_NETDEV_VHOST_VDPA, /* -netdev vhost-vdpa*/ + X_QEMU_CAPS_FSDEV_CREATEMODE, /* fsdev.createmode */ QEMU_CAPS_SCSI_NCR53C90, /* built-in SCSI */ QEMU_CAPS_SCSI_DC390, /* -device dc-390 */ QEMU_CAPS_SCSI_AM53C974, /* -device am53c974 */ - QEMU_CAPS_DEVICE_VIRTIO_PMEM_PCI, /* -device virtio-pmem-pci */ - QEMU_CAPS_VHOST_USER_FS_BOOTINDEX, /* vhost-user-fs.bootindex */ /* 390 */ + QEMU_CAPS_DEVICE_VIRTIO_PMEM_PCI, /* -device virtio-pmem-pci */ + QEMU_CAPS_VHOST_USER_FS_BOOTINDEX, /* vhost-user-fs.bootindex */ QEMU_CAPS_DEVICE_VHOST_USER_BLK, /* -device vhost-user-blk */ QEMU_CAPS_CPU_MAX, /* -cpu max */ QEMU_CAPS_X_USE_CANONICAL_PATH_FOR_RAMBLOCK_ID, /* -object memory-backend-file,x-use-canonical-path-for-ramblock-id= */ - X_QEMU_CAPS_VNC_OPTS, /* -vnc uses QemuOpts parser instead of custom code */ - X_QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING, /* block-bitmap-mapping in migrate-set-parameters */ /* 395 */ + X_QEMU_CAPS_VNC_OPTS, /* -vnc uses QemuOpts parser instead of custom code */ + X_QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING, /* block-bitmap-mapping in migrate-set-parameters */ QEMU_CAPS_VNC_POWER_CONTROL, /* -vnc power-control option */ X_QEMU_CAPS_AUDIODEV, /* -audiodev instead of QEMU_AUDIO_DRV */ X_QEMU_CAPS_BLOCKDEV_BACKUP, /* qemu supports the blockdev-backup job */ - X_QEMU_CAPS_OBJECT_JSON, /* parameters for object-add are formally described */ - QEMU_CAPS_ROTATION_RATE, /* scsi-disk / ide-drive rotation-rate prop */ /* 400 */ + X_QEMU_CAPS_OBJECT_JSON, /* parameters for object-add are formally described */ + QEMU_CAPS_ROTATION_RATE, /* scsi-disk / ide-drive rotation-rate prop */ X_QEMU_CAPS_COMPAT_DEPRECATED, /* -compat deprecated-(input|output) is supported */ QEMU_CAPS_ACPI_INDEX, /* PCI device 'acpi-index' property */ QEMU_CAPS_INPUT_LINUX, /* -object input-linux */ - QEMU_CAPS_VIRTIO_GPU_GL_PCI, /* -device virtio-gpu-gl-pci */ - QEMU_CAPS_VIRTIO_VGA_GL, /* -device virtio-vga-gl */ /* 405 */ + QEMU_CAPS_VIRTIO_GPU_GL_PCI, /* -device virtio-gpu-gl-pci */ + QEMU_CAPS_VIRTIO_VGA_GL, /* -device virtio-vga-gl */ QEMU_CAPS_MACHINE_CONFIDENTAL_GUEST_SUPPORT, /* -machine confidential-guest-support */ X_QEMU_CAPS_QUERY_DISPLAY_OPTIONS, /* 'query-display-options' qmp command present */ QEMU_CAPS_S390_PV_GUEST, /* -object s390-pv-guest,... */ - X_QEMU_CAPS_SET_ACTION, /* 'set-action' QMP command */ - QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE, /* virtio-blk-*.queue-size */ /* 410 */ + X_QEMU_CAPS_SET_ACTION, /* 'set-action' QMP command */ + QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE, /* virtio-blk-*.queue-size */ QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI, /* -device virtio-mem-pci */ QEMU_CAPS_MEMORY_BACKEND_RESERVE, /* -object memory-backend-*.reserve= */ QEMU_CAPS_PIIX4_ACPI_ROOT_PCI_HOTPLUG, /* -M pc PIIX4_PM.acpi-root-pci-hotplug */ - QEMU_CAPS_NETDEV_JSON, /* -netdev accepts JSON */ - QEMU_CAPS_CHARDEV_JSON, /* Reserved for '-chardev' JSON support. For now used only in tests. */ /* 415 */ + QEMU_CAPS_NETDEV_JSON, /* -netdev accepts JSON */ + QEMU_CAPS_CHARDEV_JSON, /* Reserved for '-chardev' JSON support. For now used only in tests. */ X_QEMU_CAPS_DEVICE_JSON_BROKEN_HOTPLUG, /* -device accepts JSON (must not be used - users are filtering the capbility) */ QEMU_CAPS_QUERY_DIRTY_RATE, /* accepts query-dirty-rate */ QEMU_CAPS_RBD_ENCRYPTION, /* Ceph RBD encryption support */ - QEMU_CAPS_SEV_GUEST_KERNEL_HASHES, /* sev-guest.kernel-hashes= */ - QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET, /* 'sev-inject-launch-secret' qmp command present */ /* 420 */ + QEMU_CAPS_SEV_GUEST_KERNEL_HASHES, /* sev-guest.kernel-hashes= */ + QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET, /* 'sev-inject-launch-secret' qmp command present */ QEMU_CAPS_DEVICE_JSON, /* -device accepts JSON (and works with hot-unplug) */ QEMU_CAPS_HVF, /* Whether Hypervisor.framework is available */ QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_PREALLOC, /* -device virtio-mem-pci.prealloc= */ - QEMU_CAPS_CALC_DIRTY_RATE, /* accepts calc-dirty-rate */ - QEMU_CAPS_DIRTYRATE_MODE , /* calc-dirty-rate accepts mode parameter */ /* 425 */ + QEMU_CAPS_CALC_DIRTY_RATE, /* accepts calc-dirty-rate */ + QEMU_CAPS_DIRTYRATE_MODE , /* calc-dirty-rate accepts mode parameter */ QEMU_CAPS_BLOCKDEV_NBD_TLS_HOSTNAME, /* tls hostname can be overridden for NBD clients */ QEMU_CAPS_MEMORY_BACKEND_PREALLOC_THREADS, /* -object memory-backend-*.prealloc-threads */ QEMU_CAPS_DEVICE_VIRTIO_IOMMU_PCI, /* -device virtio-iommu-pci */ - QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS, /* virtio-iommu.boot-bypass */ - QEMU_CAPS_VIRTIO_NET_RSS, /* virtio-net rss feature */ /* 430 */ + QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS, /* virtio-iommu.boot-bypass */ + QEMU_CAPS_VIRTIO_NET_RSS, /* virtio-net rss feature */ QEMU_CAPS_CHARDEV_QEMU_VDAGENT, /* -chardev qemu-vdagent */ QEMU_CAPS_DISPLAY_DBUS, /* -display dbus */ QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX, /* -object iothread.thread-pool-max */ - QEMU_CAPS_USB_HOST_GUESTS_RESETS_ALL, /* -device usb-host.guest-resets-all */ - QEMU_CAPS_MIGRATION_BLOCKED_REASONS, /* query-migrate returns 'blocked-reasons */ /* 435 */ + QEMU_CAPS_USB_HOST_GUESTS_RESETS_ALL, /* -device usb-host.guest-resets-all */ + QEMU_CAPS_MIGRATION_BLOCKED_REASONS, /* query-migrate returns 'blocked-reasons */ QEMU_CAPS_QUERY_STATS, /* accepts query-stats */ QEMU_CAPS_QUERY_STATS_SCHEMAS, /* accepts query-stats-schemas */ QEMU_CAPS_SGX_EPC, /* -object sgx-epc,... */ - QEMU_CAPS_THREAD_CONTEXT, /* -object thread-context */ - QEMU_CAPS_SCREENSHOT_FORMAT_PNG, /* screendump command supports png format */ /* 440 */ + QEMU_CAPS_THREAD_CONTEXT, /* -object thread-context */ + QEMU_CAPS_SCREENSHOT_FORMAT_PNG, /* screendump command supports png format */ QEMU_CAPS_MACHINE_HPET, /* the HPET timer is configured via -machine, rather than -no-hpet */ QEMU_CAPS_NETDEV_STREAM, /* -netdev stream */ QEMU_CAPS_DEVICE_VIRTIO_CRYPTO, /* virtio-crypto device */ - QEMU_CAPS_OBJECT_CRYPTO_LKCF, /* -object cryptodev-backend-lkcf */ - QEMU_CAPS_DEVICE_PANIC_PCI, /* -device pvpanic-pci */ /* 445 */ + QEMU_CAPS_OBJECT_CRYPTO_LKCF, /* -object cryptodev-backend-lkcf */ + QEMU_CAPS_DEVICE_PANIC_PCI, /* -device pvpanic-pci */ QEMU_CAPS_NETDEV_STREAM_RECONNECT, /* -netdev stream supports reconnect */ QEMU_CAPS_VIRTIO_GPU_BLOB, /* -device virtio-gpu-*.blob= */ QEMU_CAPS_RBD_ENCRYPTION_LAYERING, /* layered encryption support for Ceph RBD */ - QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY, /* luks-any (LUKS and LUKS2) encryption format for Ceph RBD */ - QEMU_CAPS_QCOW2_DISCARD_NO_UNREF, /* qcow2 block driver allows discards without unrefing the sector */ /* 450 */ + QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY, /* luks-any (LUKS and LUKS2) encryption format for Ceph RBD */ + QEMU_CAPS_QCOW2_DISCARD_NO_UNREF, /* qcow2 block driver allows discards without unrefing the sector */ QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN, /* asynchronous teardown -run-with async-teardown=on|off */ QEMU_CAPS_DEVICE_VIRTIO_BLK_VHOST_VDPA, /* virtio-blk-vhost-vdpa block driver */ QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING, /* virtio-blk supports per-virtqueue iothread mapping */ - QEMU_CAPS_SMP_CLUSTERS, /* -smp clusters= */ - QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_DYNAMIC_MEMSLOTS, /* -device virtio-mem-pci.dynamic-memslots= */ /* 455 */ + QEMU_CAPS_SMP_CLUSTERS, /* -smp clusters= */ + QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_DYNAMIC_MEMSLOTS, /* -device virtio-mem-pci.dynamic-memslots= */ QEMU_CAPS_BLOCKJOB_BACKING_MASK_PROTOCOL, /* backing-mask-protocol of block-commit/block-stream */ QEMU_CAPS_DISPLAY_RELOAD, /* 'display-reload' qmp command is supported */ QEMU_CAPS_DEVICE_USB_MTP, /* -device usb-mtp */ - QEMU_CAPS_MACHINE_VIRT_RAS, /* -machine virt,ras= */ - QEMU_CAPS_DEVICE_VIRTIO_SOUND, /* -device virtio-sound-* */ /* 460 */ + QEMU_CAPS_MACHINE_VIRT_RAS, /* -machine virt,ras= */ + QEMU_CAPS_DEVICE_VIRTIO_SOUND, /* -device virtio-sound-* */ QEMU_CAPS_SEV_SNP_GUEST, /* -object sev-snp-guest */ QEMU_CAPS_NETDEV_USER, /* -netdev user */ QEMU_CAPS_DEVICE_ACPI_ERST, /* -device acpi-erst */ - QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION, /* intel-iommu.dma-translation */ - QEMU_CAPS_MACHINE_I8042_OPT, /* -machine xxx,i8042=on/off; use virQEMUCapsSupportsI8042Toggle() to query this capability */ /* 465 */ + QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION, /* intel-iommu.dma-translation */ + QEMU_CAPS_MACHINE_I8042_OPT, /* -machine xxx,i8042=on/off; use virQEMUCapsSupportsI8042Toggle() to query this capability */ X_QEMU_CAPS_SNAPSHOT_INTERNAL_QMP, /* internal snapshot support via QMP commands 'snapshot-save'/'snapshot-delete' */ QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for chardevs supported */ QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM, /* loadparm available on CCW device for multi device boot */ - QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for netdev stream supported */ - QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS, /* query-cpu-model-expansion may report deprecated CPU properties */ /* 470 */ + QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for netdev stream supported */ + QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS, /* query-cpu-model-expansion may report deprecated CPU properties */ QEMU_CAPS_MIGRATE_INCOMING_EXIT_ON_ERROR, /* exit-on-error argument of migrate-incoming command */ QEMU_CAPS_MACHINE_VIRT_AIA, /* -machine virt,aia=(none|aplic|aplic-imsic), RISC-V only */ QEMU_CAPS_DEVICE_VIRTIO_MEM_CCW, /* -device virtio-mem-ccw */ - QEMU_CAPS_BLOCKDEV_SET_ACTIVE, /* blockdev-set-active QMP command supported */ - QEMU_CAPS_MACHINE_SHIM, /* -shim command line argument */ /* 475 */ + QEMU_CAPS_BLOCKDEV_SET_ACTIVE, /* blockdev-set-active QMP command supported */ + QEMU_CAPS_MACHINE_SHIM, /* -shim command line argument */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING, /* virtio-scsi supports per-virtqueue iothread mapping */ QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE, /* -machine virt,highmem-mmio-size=<size> */ QEMU_CAPS_BUS_FLOPPY, /* floppy bus supported (isa-fdc/sysbus-fdc) */ - QEMU_CAPS_DEVICE_NVME, /* -device nvme */ - QEMU_CAPS_DEVICE_NVME_NS, /* -device nvme-ns */ /* 480 */ + QEMU_CAPS_DEVICE_NVME, /* -device nvme */ + QEMU_CAPS_DEVICE_NVME_NS, /* -device nvme-ns */ QEMU_CAPS_AMD_IOMMU, /* -device amd-iommu */ QEMU_CAPS_AMD_IOMMU_PCI_ID, /* amd-iommu.pci-id */ QEMU_CAPS_DEVICE_USB_BOT, /* -device usb-bot */ - QEMU_CAPS_TDX_GUEST, /* -object tdx-guest,... */ - QEMU_CAPS_QOM_LIST_GET, /* qom-list-get QMP command */ /* 485 */ + QEMU_CAPS_TDX_GUEST, /* -object tdx-guest,... */ + QEMU_CAPS_QOM_LIST_GET, /* qom-list-get QMP command */ QEMU_CAPS_ACPI_GENERIC_INITIATOR, /* -object acpi-generic-initiator */ QEMU_CAPS_DISK_TIMED_STATS, /* timed stats support ('stats-intervals' property of disk frontends) */ QEMU_CAPS_QUERY_ACCELERATORS, /* query-accelerators command */ - QEMU_CAPS_MSHV, /* -accel mshv */ - QEMU_CAPS_VIRTIO_IOMMU_AW_BITS, /* virtio-iommu.aw-bits */ /* 490 */ + QEMU_CAPS_MSHV, /* -accel mshv */ + QEMU_CAPS_VIRTIO_IOMMU_AW_BITS, /* virtio-iommu.aw-bits */ QEMU_CAPS_DEVICE_SCSI_BLOCK_MIGRATE_PR, /* persistent reservation migration support */ QEMU_CAPS_OBJECT_IOMMUFD, /* -object iommufd */ QEMU_CAPS_DEVICE_UEFI_VARS, /* -device uefi-vars-{x64,sysbus} */ - QEMU_CAPS_QUERY_BLOCK_FLAT, /* 'query-block' command supports 'flat' */ - QEMU_CAPS_AMD_IOMMU_XTSUP, /* amd-iommu.xtsup */ /* 495 */ + QEMU_CAPS_QUERY_BLOCK_FLAT, /* 'query-block' command supports 'flat' */ + QEMU_CAPS_AMD_IOMMU_XTSUP, /* amd-iommu.xtsup */ QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO, /* 'blockdev-mirror' supports 'target-is-zero' */ QEMU_CAPS_OBJECT_MONITOR_QMP, /* 'monitor-qmp' -object */ QEMU_CAPS_DEVICE_ARM_SMMUV3, /* -device arm-smmuv3 */ - QEMU_CAPS_ARM_SMMUV3_SMMU_PER_BUS, /* arm-smmuv3.smmu_per_bus */ - QEMU_CAPS_ARM_SMMUV3_ACCEL, /* arm-smmuv3.accel */ /* 500 */ + QEMU_CAPS_ARM_SMMUV3_SMMU_PER_BUS, /* arm-smmuv3.smmu_per_bus */ + QEMU_CAPS_ARM_SMMUV3_ACCEL, /* arm-smmuv3.accel */ QEMU_CAPS_ARM_SMMUV3_CMDQV, /* arm-smmuv3.cmdqv */ QEMU_CAPS_IOTHREAD_POLL_WEIGHT, /* -object iothread.poll-weight */ QEMU_CAPS_WIN_DMP_GUEST_AWARE, /* 'win-dmp' is offered only to a guest that can use it */ diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index a8292a9782..905b03cd5f 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -2498,10 +2498,16 @@ qemuDomainPCIControllerSetDefaultModelName(virDomainControllerDef *cont, *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420; break; case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT: - *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCIE_UPSTREAM_PORT)) + *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_UPSTREAM_PORT; + else + *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM; break; case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT: - *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCIE_DOWNSTREAM_PORT)) + *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_DOWNSTREAM_PORT; + else + *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM; break; case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS: *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index e946f55351..16beb3ca6a 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -4248,6 +4248,9 @@ virValidateControllerPCIModelNameToQEMUCaps(int modelName) return QEMU_CAPS_DEVICE_X3130_UPSTREAM; case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM: return QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM; + case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_UPSTREAM_PORT: + case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_DOWNSTREAM_PORT: + return 0; case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB: return QEMU_CAPS_DEVICE_PXB; case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE: @@ -4430,14 +4433,16 @@ qemuValidateDomainDeviceDefControllerPCI(const virDomainControllerDef *cont, break; case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT: - if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM) { + if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM && + pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_UPSTREAM_PORT) { virReportControllerInvalidValue(cont, model, modelName, "modelName"); return -1; } break; case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT: - if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM) { + if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM && + pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_DOWNSTREAM_PORT) { virReportControllerInvalidValue(cont, model, modelName, "modelName"); return -1; } @@ -4754,6 +4759,7 @@ qemuValidateDomainDeviceDefControllerPCI(const virDomainControllerDef *cont, case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: default: virReportEnumRangeError(virDomainControllerModelPCI, cont->model); + return -1; } /* hotplug */ diff --git a/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.args b/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.args new file mode 100644 index 0000000000..39a2a98fa1 --- /dev/null +++ b/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.args @@ -0,0 +1,47 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/var/lib/libvirt/qemu/domain--1-q35-test \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.local/share \ +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.cache \ +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=q35-test,debug-threads=on \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-q35-test/master-key.aes"}' \ +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=2097152k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648}' \ +-overcommit mem-lock=off \ +-smp 2,sockets=2,cores=1,threads=1 \ +-uuid 11dbdcdd-4c3b-482b-8903-9bdb8c0a2774 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=@mon-fd@,server=on,wait=off \ +-object '{"qom-type":"monitor-qmp","id":"monitor","chardev":"charmonitor"}' \ +-rtc base=utc \ +-no-shutdown \ +-boot strict=on \ +-device '{"driver":"pcie-root-port","port":16,"chassis":1,"id":"pci.1","bus":"pcie.0","addr":"0x2"}' \ +-device '{"driver":"x3130-upstream","id":"pci.2","bus":"pci.1","addr":"0x0"}' \ +-device '{"driver":"xio3130-downstream","port":0,"chassis":3,"id":"pci.3","bus":"pci.2","addr":"0x0"}' \ +-device '{"driver":"xio3130-downstream","port":1,"chassis":4,"id":"pci.4","bus":"pci.2","addr":"0x1"}' \ +-device '{"driver":"xio3130-downstream","port":2,"chassis":5,"id":"pci.5","bus":"pci.2","addr":"0x2"}' \ +-device '{"driver":"pcie-downstream-port","port":39,"chassis":30,"id":"pci.6","bus":"pci.2","addr":"0x3"}' \ +-device '{"driver":"x3130-upstream","id":"pci.7","bus":"pci.3","addr":"0x0"}' \ +-device '{"driver":"xio3130-downstream","port":4,"chassis":8,"id":"pci.8","bus":"pci.2","addr":"0x4"}' \ +-device '{"driver":"xio3130-downstream","port":5,"chassis":9,"id":"pci.9","bus":"pci.2","addr":"0x5"}' \ +-device '{"driver":"xio3130-downstream","port":6,"chassis":10,"id":"pci.10","bus":"pci.2","addr":"0x6"}' \ +-device '{"driver":"qemu-xhci","id":"usb","bus":"pci.4","addr":"0x0"}' \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","read-only":false}' \ +-device '{"driver":"ide-hd","bus":"ide.0","drive":"libvirt-1-storage","id":"sata0-0-0","bootindex":1}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"qxl-vga","id":"video0","max_outputs":1,"ram_size":67108864,"vram_size":33554432,"vram64_size_mb":0,"vgamem_mb":8,"bus":"pcie.0","addr":"0x1"}' \ +-global ICH9-LPC.noreboot=off \ +-watchdog-action reset \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.xml b/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.xml new file mode 100644 index 0000000000..0b76ecd411 --- /dev/null +++ b/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.x86_64-latest.xml @@ -0,0 +1,91 @@ +<domain type='qemu'> + <name>q35-test</name> + <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid> + <memory unit='KiB'>2097152</memory> + <currentMemory unit='KiB'>2097152</currentMemory> + <vcpu placement='static' cpuset='0-1'>2</vcpu> + <os> + <type arch='x86_64' machine='q35'>hvm</type> + <boot dev='hd'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='sda' bus='sata'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='pci' index='0' model='pcie-root'/> + <controller type='pci' index='1' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='1' port='0x10'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </controller> + <controller type='pci' index='2' model='pcie-switch-upstream-port'> + <model name='x3130-upstream'/> + <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> + </controller> + <controller type='pci' index='3' model='pcie-switch-downstream-port'> + <model name='xio3130-downstream'/> + <target chassis='3' port='0x0'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> + </controller> + <controller type='pci' index='4' model='pcie-switch-downstream-port'> + <model name='xio3130-downstream'/> + <target chassis='4' port='0x1'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/> + </controller> + <controller type='pci' index='5' model='pcie-switch-downstream-port'> + <model name='xio3130-downstream'/> + <target chassis='5' port='0x2'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/> + </controller> + <controller type='pci' index='6' model='pcie-switch-downstream-port'> + <model name='pcie-downstream-port'/> + <target chassis='30' port='0x27'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0'/> + </controller> + <controller type='pci' index='7' model='pcie-switch-upstream-port'> + <model name='x3130-upstream'/> + <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> + </controller> + <controller type='pci' index='8' model='pcie-switch-downstream-port'> + <model name='xio3130-downstream'/> + <target chassis='8' port='0x4'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x0'/> + </controller> + <controller type='pci' index='9' model='pcie-switch-downstream-port'> + <model name='xio3130-downstream'/> + <target chassis='9' port='0x5'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x05' function='0x0'/> + </controller> + <controller type='pci' index='10' model='pcie-switch-downstream-port'> + <model name='xio3130-downstream'/> + <target chassis='10' port='0x6'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/> + </controller> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='usb' index='0' model='qemu-xhci'> + <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> + </controller> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='qxl' ram='65536' vram='32768' vgamem='8192' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> + </video> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.xml b/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.xml new file mode 100644 index 0000000000..19d5e96233 --- /dev/null +++ b/tests/qemuxmlconfdata/pcie-switch-downstream-port-model-generic.xml @@ -0,0 +1,44 @@ +<domain type='qemu'> + <name>q35-test</name> + <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid> + <memory unit='KiB'>2097152</memory> + <currentMemory unit='KiB'>2097152</currentMemory> + <vcpu placement='static' cpuset='0-1'>2</vcpu> + <os> + <type arch='x86_64' machine='q35'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='sda' bus='sata'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='pci' index='0' model='pcie-root'/> + <controller type='pci' index='1' model='pcie-root-port'/> + <controller type='pci' index='2' model='pcie-switch-upstream-port'/> + <controller type='pci' index='3' model='pcie-switch-downstream-port'/> + <controller type='pci' index='4' model='pcie-switch-downstream-port'/> + <controller type='pci' index='5' model='pcie-switch-downstream-port'/> + <controller type='pci' index='6' model='pcie-switch-downstream-port'> + <model name='pcie-downstream-port'/> + <target chassis='30' port='0x27'/> + </controller> + <controller type='pci' index='7' model='pcie-switch-upstream-port'/> + <controller type='pci' index='8' model='pcie-switch-downstream-port'/> + <controller type='pci' index='9' model='pcie-switch-downstream-port'/> + <controller type='pci' index='10' model='pcie-switch-downstream-port'/> + <controller type='sata' index='0'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='qxl' ram='65536' vram='32768' vgamem='8192' heads='1'/> + </video> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.args b/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.args new file mode 100644 index 0000000000..bd5d3541c2 --- /dev/null +++ b/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.args @@ -0,0 +1,42 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/var/lib/libvirt/qemu/domain--1-q35-test \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.local/share \ +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.cache \ +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=q35-test,debug-threads=on \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-q35-test/master-key.aes"}' \ +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=2097152k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648}' \ +-overcommit mem-lock=off \ +-smp 2,sockets=2,cores=1,threads=1 \ +-uuid 11dbdcdd-4c3b-482b-8903-9bdb8c0a2774 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=@mon-fd@,server=on,wait=off \ +-object '{"qom-type":"monitor-qmp","id":"monitor","chardev":"charmonitor"}' \ +-rtc base=utc \ +-no-shutdown \ +-boot strict=on \ +-device '{"driver":"pcie-root-port","port":16,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x2"}' \ +-device '{"driver":"pcie-root-port","port":17,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x2.0x1"}' \ +-device '{"driver":"x3130-upstream","id":"pci.3","bus":"pci.1","addr":"0x0"}' \ +-device '{"driver":"pcie-upstream-port","id":"pci.4","bus":"pci.2","addr":"0x0"}' \ +-device '{"driver":"pcie-root-port","port":18,"chassis":5,"id":"pci.5","bus":"pcie.0","addr":"0x2.0x2"}' \ +-device '{"driver":"qemu-xhci","id":"usb","bus":"pci.5","addr":"0x0"}' \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","read-only":false}' \ +-device '{"driver":"ide-hd","bus":"ide.0","drive":"libvirt-1-storage","id":"sata0-0-0","bootindex":1}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"qxl-vga","id":"video0","max_outputs":1,"ram_size":67108864,"vram_size":33554432,"vram64_size_mb":0,"vgamem_mb":8,"bus":"pcie.0","addr":"0x1"}' \ +-global ICH9-LPC.noreboot=off \ +-watchdog-action reset \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.xml b/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.xml new file mode 100644 index 0000000000..07cc8947c2 --- /dev/null +++ b/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.x86_64-latest.xml @@ -0,0 +1,66 @@ +<domain type='qemu'> + <name>q35-test</name> + <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid> + <memory unit='KiB'>2097152</memory> + <currentMemory unit='KiB'>2097152</currentMemory> + <vcpu placement='static' cpuset='0-1'>2</vcpu> + <os> + <type arch='x86_64' machine='q35'>hvm</type> + <boot dev='hd'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='sda' bus='sata'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='pci' index='0' model='pcie-root'/> + <controller type='pci' index='1' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='1' port='0x10'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/> + </controller> + <controller type='pci' index='2' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='2' port='0x11'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> + </controller> + <controller type='pci' index='3' model='pcie-switch-upstream-port'> + <model name='x3130-upstream'/> + <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> + </controller> + <controller type='pci' index='4' model='pcie-switch-upstream-port'> + <model name='pcie-upstream-port'/> + <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> + </controller> + <controller type='pci' index='5' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='5' port='0x12'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/> + </controller> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='usb' index='0' model='qemu-xhci'> + <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> + </controller> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='qxl' ram='65536' vram='32768' vgamem='8192' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> + </video> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.xml b/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.xml new file mode 100644 index 0000000000..d015b2631e --- /dev/null +++ b/tests/qemuxmlconfdata/pcie-switch-upstream-port-model-generic.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>q35-test</name> + <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid> + <memory unit='KiB'>2097152</memory> + <currentMemory unit='KiB'>2097152</currentMemory> + <vcpu placement='static' cpuset='0-1'>2</vcpu> + <os> + <type arch='x86_64' machine='q35'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='sda' bus='sata'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='pci' index='0' model='pcie-root'/> + <controller type='pci' index='1' model='pcie-root-port'/> + <controller type='pci' index='2' model='pcie-root-port'/> + <controller type='pci' index='3' model='pcie-switch-upstream-port'/> + <controller type='pci' index='4' model='pcie-switch-upstream-port'> + <model name='pcie-upstream-port'/> + </controller> + <controller type='sata' index='0'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='qxl' ram='65536' vram='32768' vgamem='8192' heads='1'/> + </video> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 555c029f58..196503163f 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -2785,7 +2785,9 @@ mymain(void) DO_TEST_CAPS_LATEST_PARSE_ERROR("pcie-root-port-too-many"); DO_TEST_CAPS_LATEST("pcie-switch-upstream-port"); + DO_TEST_CAPS_LATEST("pcie-switch-upstream-port-model-generic"); DO_TEST_CAPS_LATEST("pcie-switch-downstream-port"); + DO_TEST_CAPS_LATEST("pcie-switch-downstream-port-model-generic"); DO_TEST_CAPS_LATEST("pci-expander-bus"); DO_TEST_CAPS_LATEST_PARSE_ERROR("pci-expander-bus-bad-node"); -- 2.43.0