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 <[email protected]>
---
 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

Reply via email to