[libvirt] [PATCH 0/8] qemu: separate out deprecated capabilities

Ján Tomko (8): DO NOT PUSH: allow skipping selected lines in group-qemu-caps.pl Introduce virQEMUCapsDeprecated array Split out virQEMUCapsSetFromNodes Use virQEMUCapsSetFromNodes where possible qemustatusxml2xmltests: remove deprecated qemu capabilities virQEMUCapsSetFromNodes: Skip setting deprecated flags Delete deprecated qemu capabilities from the enum DO NOT PUSH: fix capabilities grouping src/qemu/qemu_capabilities.c | 452 +++++++++--------- src/qemu/qemu_capabilities.h | 305 ++++-------- src/qemu/qemu_domain.c | 16 +- tests/group-qemu-caps.pl | 21 + tests/qemucaps2xmltest.c | 17 +- .../blockjob-mirror-in.xml | 1 - .../disk-secinfo-upgrade-out.xml | 51 -- .../migration-in-params-in.xml | 53 -- .../migration-out-nbd-out.xml | 51 -- .../migration-out-nbd-tls-in.xml | 51 -- .../migration-out-params-in.xml | 53 -- tests/qemustatusxml2xmldata/modern-in.xml | 51 -- .../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 - 13 files changed, 339 insertions(+), 784 deletions(-) -- 2.19.2

After running: tests/group-qemu-caps.pl the capabilities with numbers in the skip function will be dropped from qemu_capabilities.[ch] and printed into qemu_capabilities.[ch].dropped. --- tests/group-qemu-caps.pl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/group-qemu-caps.pl b/tests/group-qemu-caps.pl index 514764f47f..6b761520d8 100755 --- a/tests/group-qemu-caps.pl +++ b/tests/group-qemu-caps.pl @@ -55,6 +55,17 @@ if (®roup_caps($prefix . 'src/qemu/qemu_capabilities.h', exit $ret; +sub skip { + my $num = shift; + + return 0; # coverity[dead_error_begin] + + foreach my $i (0 .. 12, 14 .. 32, 34 .. 45, 47 .. 49, 51 .. 53, 56, 57, 59, 60, 65, 74 .. 76, 79, 81 .. 86, 90, 92 .. 94, 99, 100, 111, 112, 116, 117, 126, 127, 133, 135 .. 137, 143 .. 145, 147, 150, 151, 164, 166, 221, 226, 230) { + return 1 if ($i == $num); + } + return 0; +} + sub regroup_caps { my $filename = shift; my $start_regex = shift; @@ -67,6 +78,10 @@ sub regroup_caps { my @original = <FILE>; close FILE; + my $dropped = $filename . ".dropped"; + + open DROPPED, '>', $dropped or die "cannot open $dropped: $!"; + my @fixed; my $game_on = 0; my $counter = 0; @@ -74,6 +89,11 @@ sub regroup_caps { if ($game_on) { next if ($_ =~ '/\* [0-9]+ \*/'); next if (/^\s+$/); + if (skip($counter)) { + print DROPPED "$_"; + $counter++; + next; + } if ($counter % $step == 0) { if ($counter != 0) { push @fixed, "\n"; @@ -120,5 +140,6 @@ sub regroup_caps { print FILE $line; } close FILE; + close DROPPED; } } -- 2.19.2

To prevent domains started with older libvirtd from disappearing, we need to be able to parse the string representation of QEMU capabilities, even if we no longer use them in the code. Put those in a separate array where we won't bother with enum constants. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 95 ++++++++++++++++++++++++++++++++++++ src/qemu/qemu_capabilities.h | 1 + 2 files changed, 96 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b48bcbebee..7160860ab4 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -524,6 +524,101 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "scsi-disk.device_id", ); +#define VIR_QEMU_CAPS_DEPRECATED_LAST 92 /* chosen by fair dice roll */ +VIR_ENUM_IMPL(virQEMUCapsDeprecated, VIR_QEMU_CAPS_DEPRECATED_LAST, + "kqemu", /* X_QEMU_CAPS_KQEMU, Whether KQEMU is compiled in */ + "vnc-colon", /* X_QEMU_CAPS_VNC_COLON, VNC takes or address + display */ + "no-reboot", /* X_QEMU_CAPS_NO_REBOOT, Is the -no-reboot flag available */ + "drive", /* X_QEMU_CAPS_DRIVE, Is the new -drive arg available */ + "drive-boot", /* X_QEMU_CAPS_DRIVE_BOOT, Does -drive support boot=on */ + "name", /* X_QEMU_CAPS_NAME, Is the -name flag available */ + "uuid", /* X_QEMU_CAPS_UUID, Is the -uuid flag available */ + "domid", /* X_QEMU_CAPS_DOMID, Xenner: -domid flag available */ + "vnet-hdr", /* X_QEMU_CAPS_VNET_HDR */ + "migrate-kvm-stdio", /* X_QEMU_CAPS_MIGRATE_KVM_STDIO, avoid kvm tcp migration bug */ + "migrate-qemu-tcp", /* X_QEMU_CAPS_MIGRATE_QEMU_TCP, have qemu tcp migration */ + "migrate-qemu-exec", /* X_QEMU_CAPS_MIGRATE_QEMU_EXEC, have qemu exec migration */ + "drive-cache-v2", /* X_QEMU_CAPS_DRIVE_CACHE_V2, cache= flag wanting new v2 values */ + "drive-format", /* X_QEMU_CAPS_DRIVE_FORMAT, Is -drive format= avail */ + "vga", /* X_QEMU_CAPS_VGA, Is -vga avail */ + "0.10", /* X_QEMU_CAPS_0_10, features added in qemu-0.10.0 or later */ + "pci-device", /* X_QEMU_CAPS_PCIDEVICE, PCI device assignment supported */ + "mem-path", /* X_QEMU_CAPS_MEM_PATH, mmap'ped guest backing supported */ + "drive-serial", /* X_QEMU_CAPS_DRIVE_SERIAL, -driver serial= available */ + "xen-domid", /* X_QEMU_CAPS_XEN_DOMID, -xen-domid */ + "migrate-qemu-unix", /* X_QEMU_CAPS_MIGRATE_QEMU_UNIX, qemu migration via unix sockets */ + "chardev", /* X_QEMU_CAPS_CHARDEV, Is the new -chardev arg available */ + "enable-kvm", /* X_QEMU_CAPS_ENABLE_KVM, -enable-kvm flag */ + "monitor-json", /* X_QEMU_CAPS_MONITOR_JSON, JSON mode for monitor */ + "balloon", /* X_QEMU_CAPS_BALLOON, -balloon available */ + "device", /* X_QEMU_CAPS_DEVICE, Is the -device arg available */ + "sdl", /* X_QEMU_CAPS_SDL, Is the new -sdl arg available */ + "smp-topology", /* X_QEMU_CAPS_SMP_TOPOLOGY, -smp has sockets/cores/threads */ + "netdev", /* X_QEMU_CAPS_NETDEV, -netdev flag & netdev_add/remove */ + "rtc", /* X_QEMU_CAPS_RTC, The -rtc flag for clock options */ + "vhost-net", /* X_QEMU_CAPS_VHOST_NET, vhost-net support available */ + "rtc-td-hack", /* X_QEMU_CAPS_RTC_TD_HACK, -rtc-td-hack available */ + "no-kvm-pit", /* X_QEMU_CAPS_NO_KVM_PIT, -no-kvm-pit-reinjection supported */ + "tdf", /* X_QEMU_CAPS_TDF, -tdf flag (user-mode pit catchup) */ + "pci-configfd", /* X_QEMU_CAPS_PCI_CONFIGFD, pci-assign.configfd */ + "nodefconfig", /* X_QEMU_CAPS_NODEFCONFIG, -nodefconfig */ + "boot-menu", /* X_QEMU_CAPS_BOOT_MENU, -boot menu=on support */ + "enable-kqemu", /* X_QEMU_CAPS_ENABLE_KQEMU, -enable-kqemu flag */ + "fsdev", /* X_QEMU_CAPS_FSDEV, -fstype filesystem passthrough */ + "nesting", /* X_QEMU_CAPS_NESTING, -enable-nesting (SVM/VMX) */ + "name-process", /* X_QEMU_CAPS_NAME_PROCESS, Is -name process= available */ + "drive-readonly", /* X_QEMU_CAPS_DRIVE_READONLY, -drive readonly=on|off */ + "smbios-type", /* X_QEMU_CAPS_SMBIOS_TYPE, Is -smbios type= available */ + "vga-qxl", /* X_QEMU_CAPS_VGA_QXL, The 'qxl' arg for '-vga' */ + "vga-none", /* X_QEMU_CAPS_VGA_NONE, The 'none' arg for '-vga' */ + "migrate-qemu-fd", /* X_QEMU_CAPS_MIGRATE_QEMU_FD, -incoming fd:n */ + "boot-index", /* X_QEMU_CAPS_BOOTINDEX, -device bootindex property */ + "drive-aio", /* X_QEMU_CAPS_DRIVE_AIO, -drive aio= supported */ + "pci-multibus", /* X_QEMU_CAPS_PCI_MULTIBUS, bus=pci.0 vs bus=pci */ + "pci-bootindex", /* X_QEMU_CAPS_PCI_BOOTINDEX, pci-assign.bootindex */ + "chardev-spicevmc", /* X_QEMU_CAPS_CHARDEV_SPICEVMC, newer -chardev spicevmc */ + "device-spicevmc", /* X_QEMU_CAPS_DEVICE_SPICEVMC, older -device spicevmc*/ + "device-qxl-vga", /* X_QEMU_CAPS_DEVICE_QXL_VGA, primary qxl device named qxl-vga? */ + "pci-multifunction", /* X_QEMU_CAPS_PCI_MULTIFUNCTION, -device multifunction=on|off */ + "cache-directsync", /* X_QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, Is cache=directsync supported? */ + "no-shutdown", /* X_QEMU_CAPS_NO_SHUTDOWN, usable -no-shutdown */ + "cache-unsafe", /* X_QEMU_CAPS_DRIVE_CACHE_UNSAFE, Is cache=unsafe supported? */ + "rombar", /* X_QEMU_CAPS_PCI_ROMBAR, -device rombar=0|1 */ + "fsdev-readonly", /* X_QEMU_CAPS_FSDEV_READONLY, -fsdev readonly supported */ + "blk-sg-io", /* X_QEMU_CAPS_VIRTIO_BLK_SG_IO, SG_IO commands */ + "drive-copy-on-read", /* X_QEMU_CAPS_DRIVE_COPY_ON_READ, -drive copy-on-read */ + "cpu-host", /* X_QEMU_CAPS_CPU_HOST, support for -cpu host */ + "fsdev-writeout", /* X_QEMU_CAPS_FSDEV_WRITEOUT, -fsdev writeout supported */ + "drive-iotune", /* X_QEMU_CAPS_DRIVE_IOTUNE, -drive bps= and friends */ + "system_wakeup", /* X_QEMU_CAPS_WAKEUP, system_wakeup monitor command */ + "block-job-sync", /* X_QEMU_CAPS_BLOCKJOB_SYNC, old block_job_cancel, block_stream */ + "scsi-cd", /* X_QEMU_CAPS_SCSI_CD, -device scsi-cd */ + "ide-cd", /* X_QEMU_CAPS_IDE_CD, -device ide-cd */ + "no-user-config", /* X_QEMU_CAPS_NO_USER_CONFIG, -no-user-config */ + "balloon-event", /* X_QEMU_CAPS_BALLOON_EVENT, Async event for balloon changes */ + "bridge", /* X_QEMU_CAPS_NETDEV_BRIDGE, bridge helper support */ + "dump-guest-core", /* X_QEMU_CAPS_DUMP_GUEST_CORE, dump-guest-core-parameter */ + "seamless-migration", /* X_QEMU_CAPS_SEAMLESS_MIGRATION, seamless-migration for SPICE */ + "usb-redir.bootindex", /* X_QEMU_CAPS_USB_REDIR_BOOTINDEX, usb-redir.bootindex */ + "usb-host.bootindex", /* X_QEMU_CAPS_USB_HOST_BOOTINDEX, usb-host.bootindex */ + "usb-net", /* X_QEMU_CAPS_DEVICE_USB_NET, -device usb-net */ + "add-fd", /* X_QEMU_CAPS_ADD_FD, -add-fd */ + "dtb", /* X_QEMU_CAPS_DTB, -dtb file */ + "ipv6-migration", /* X_QEMU_CAPS_IPV6_MIGRATION, -incoming [::] */ + "machine-opt", /* X_QEMU_CAPS_MACHINE_OPT, -machine xxxx*/ + "machine-usb-opt", /* X_QEMU_CAPS_MACHINE_USB_OPT, -machine xxx,usb=on/off */ + "vfio-pci.bootindex", /* X_QEMU_CAPS_VFIO_PCI_BOOTINDEX, bootindex param for vfio-pci device */ + "scsi-generic", /* X_QEMU_CAPS_DEVICE_SCSI_GENERIC, -device scsi-generic */ + "scsi-generic.bootindex", /* X_QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX, -device scsi-generic.bootindex */ + "vnc-websocket", /* X_QEMU_CAPS_VNC_WEBSOCKET, -vnc x:y,websocket */ + "vnc-share-policy", /* X_QEMU_CAPS_VNC_SHARE_POLICY, set display sharing policy */ + "device-del-event", /* X_QEMU_CAPS_DEVICE_DEL_EVENT, DEVICE_DELETED event */ + "spiceport", /* X_QEMU_CAPS_CHARDEV_SPICEPORT, -chardev spiceport */ + "host-pci-multidomain", /* X_QEMU_CAPS_HOST_PCI_MULTIDOMAIN, support domain > 0 in host pci address */ + "device-tray-moved-event", /* X_QEMU_CAPS_DEVICE_TRAY_MOVED, DEVICE_TRAY_MOVED event */ + "qxl-vga.max_outputs", /* X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS, -device qxl-vga,max-outputs= */ + "display", /* X_QEMU_CAPS_DISPLAY, -display */ + ); struct virQEMUCapsMachineType { char *name; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index ba84052bca..6fa402a846 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -612,6 +612,7 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, unsigned int *version); VIR_ENUM_DECL(virQEMUCaps); +VIR_ENUM_DECL(virQEMUCapsDeprecated); bool virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuCaps, virDomainVirtType virtType, -- 2.19.2

On 2/21/19 4:42 PM, Ján Tomko wrote:
To prevent domains started with older libvirtd from disappearing, we need to be able to parse the string representation of QEMU capabilities, even if we no longer use them in the code.
Put those in a separate array where we won't bother with enum constants.
Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 95 ++++++++++++++++++++++++++++++++++++ src/qemu/qemu_capabilities.h | 1 + 2 files changed, 96 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b48bcbebee..7160860ab4 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -524,6 +524,101 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "scsi-disk.device_id", );
+#define VIR_QEMU_CAPS_DEPRECATED_LAST 92 /* chosen by fair dice roll */
Problem I have with this apporach is that as soon as we deprecate some other capability we have to change this number too. Since we don't need str<->enum translation can't we just have a static array of these strings and then in 6/8 use virStringListHasString() instead of virQEMUCapsDeprecatedTypeFromString()?
+VIR_ENUM_IMPL(virQEMUCapsDeprecated, VIR_QEMU_CAPS_DEPRECATED_LAST, + "kqemu", /* X_QEMU_CAPS_KQEMU, Whether KQEMU is compiled in */ + "vnc-colon", /* X_QEMU_CAPS_VNC_COLON, VNC takes or address + display */ + "no-reboot", /* X_QEMU_CAPS_NO_REBOOT, Is the -no-reboot flag available */ + "drive", /* X_QEMU_CAPS_DRIVE, Is the new -drive arg available */ + "drive-boot", /* X_QEMU_CAPS_DRIVE_BOOT, Does -drive support boot=on */ + "name", /* X_QEMU_CAPS_NAME, Is the -name flag available */ + "uuid", /* X_QEMU_CAPS_UUID, Is the -uuid flag available */ + "domid", /* X_QEMU_CAPS_DOMID, Xenner: -domid flag available */ + "vnet-hdr", /* X_QEMU_CAPS_VNET_HDR */ + "migrate-kvm-stdio", /* X_QEMU_CAPS_MIGRATE_KVM_STDIO, avoid kvm tcp migration bug */ + "migrate-qemu-tcp", /* X_QEMU_CAPS_MIGRATE_QEMU_TCP, have qemu tcp migration */ + "migrate-qemu-exec", /* X_QEMU_CAPS_MIGRATE_QEMU_EXEC, have qemu exec migration */ + "drive-cache-v2", /* X_QEMU_CAPS_DRIVE_CACHE_V2, cache= flag wanting new v2 values */ + "drive-format", /* X_QEMU_CAPS_DRIVE_FORMAT, Is -drive format= avail */ + "vga", /* X_QEMU_CAPS_VGA, Is -vga avail */ + "0.10", /* X_QEMU_CAPS_0_10, features added in qemu-0.10.0 or later */ + "pci-device", /* X_QEMU_CAPS_PCIDEVICE, PCI device assignment supported */ + "mem-path", /* X_QEMU_CAPS_MEM_PATH, mmap'ped guest backing supported */ + "drive-serial", /* X_QEMU_CAPS_DRIVE_SERIAL, -driver serial= available */ + "xen-domid", /* X_QEMU_CAPS_XEN_DOMID, -xen-domid */ + "migrate-qemu-unix", /* X_QEMU_CAPS_MIGRATE_QEMU_UNIX, qemu migration via unix sockets */ + "chardev", /* X_QEMU_CAPS_CHARDEV, Is the new -chardev arg available */ + "enable-kvm", /* X_QEMU_CAPS_ENABLE_KVM, -enable-kvm flag */ + "monitor-json", /* X_QEMU_CAPS_MONITOR_JSON, JSON mode for monitor */ + "balloon", /* X_QEMU_CAPS_BALLOON, -balloon available */ + "device", /* X_QEMU_CAPS_DEVICE, Is the -device arg available */ + "sdl", /* X_QEMU_CAPS_SDL, Is the new -sdl arg available */ + "smp-topology", /* X_QEMU_CAPS_SMP_TOPOLOGY, -smp has sockets/cores/threads */ + "netdev", /* X_QEMU_CAPS_NETDEV, -netdev flag & netdev_add/remove */ + "rtc", /* X_QEMU_CAPS_RTC, The -rtc flag for clock options */ + "vhost-net", /* X_QEMU_CAPS_VHOST_NET, vhost-net support available */ + "rtc-td-hack", /* X_QEMU_CAPS_RTC_TD_HACK, -rtc-td-hack available */ + "no-kvm-pit", /* X_QEMU_CAPS_NO_KVM_PIT, -no-kvm-pit-reinjection supported */ + "tdf", /* X_QEMU_CAPS_TDF, -tdf flag (user-mode pit catchup) */ + "pci-configfd", /* X_QEMU_CAPS_PCI_CONFIGFD, pci-assign.configfd */ + "nodefconfig", /* X_QEMU_CAPS_NODEFCONFIG, -nodefconfig */ + "boot-menu", /* X_QEMU_CAPS_BOOT_MENU, -boot menu=on support */ + "enable-kqemu", /* X_QEMU_CAPS_ENABLE_KQEMU, -enable-kqemu flag */ + "fsdev", /* X_QEMU_CAPS_FSDEV, -fstype filesystem passthrough */ + "nesting", /* X_QEMU_CAPS_NESTING, -enable-nesting (SVM/VMX) */ + "name-process", /* X_QEMU_CAPS_NAME_PROCESS, Is -name process= available */ + "drive-readonly", /* X_QEMU_CAPS_DRIVE_READONLY, -drive readonly=on|off */ + "smbios-type", /* X_QEMU_CAPS_SMBIOS_TYPE, Is -smbios type= available */ + "vga-qxl", /* X_QEMU_CAPS_VGA_QXL, The 'qxl' arg for '-vga' */ + "vga-none", /* X_QEMU_CAPS_VGA_NONE, The 'none' arg for '-vga' */ + "migrate-qemu-fd", /* X_QEMU_CAPS_MIGRATE_QEMU_FD, -incoming fd:n */ + "boot-index", /* X_QEMU_CAPS_BOOTINDEX, -device bootindex property */ + "drive-aio", /* X_QEMU_CAPS_DRIVE_AIO, -drive aio= supported */ + "pci-multibus", /* X_QEMU_CAPS_PCI_MULTIBUS, bus=pci.0 vs bus=pci */ + "pci-bootindex", /* X_QEMU_CAPS_PCI_BOOTINDEX, pci-assign.bootindex */ + "chardev-spicevmc", /* X_QEMU_CAPS_CHARDEV_SPICEVMC, newer -chardev spicevmc */ + "device-spicevmc", /* X_QEMU_CAPS_DEVICE_SPICEVMC, older -device spicevmc*/ + "device-qxl-vga", /* X_QEMU_CAPS_DEVICE_QXL_VGA, primary qxl device named qxl-vga? */ + "pci-multifunction", /* X_QEMU_CAPS_PCI_MULTIFUNCTION, -device multifunction=on|off */ + "cache-directsync", /* X_QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, Is cache=directsync supported? */ + "no-shutdown", /* X_QEMU_CAPS_NO_SHUTDOWN, usable -no-shutdown */ + "cache-unsafe", /* X_QEMU_CAPS_DRIVE_CACHE_UNSAFE, Is cache=unsafe supported? */ + "rombar", /* X_QEMU_CAPS_PCI_ROMBAR, -device rombar=0|1 */ + "fsdev-readonly", /* X_QEMU_CAPS_FSDEV_READONLY, -fsdev readonly supported */ + "blk-sg-io", /* X_QEMU_CAPS_VIRTIO_BLK_SG_IO, SG_IO commands */ + "drive-copy-on-read", /* X_QEMU_CAPS_DRIVE_COPY_ON_READ, -drive copy-on-read */ + "cpu-host", /* X_QEMU_CAPS_CPU_HOST, support for -cpu host */ + "fsdev-writeout", /* X_QEMU_CAPS_FSDEV_WRITEOUT, -fsdev writeout supported */ + "drive-iotune", /* X_QEMU_CAPS_DRIVE_IOTUNE, -drive bps= and friends */ + "system_wakeup", /* X_QEMU_CAPS_WAKEUP, system_wakeup monitor command */ + "block-job-sync", /* X_QEMU_CAPS_BLOCKJOB_SYNC, old block_job_cancel, block_stream */ + "scsi-cd", /* X_QEMU_CAPS_SCSI_CD, -device scsi-cd */ + "ide-cd", /* X_QEMU_CAPS_IDE_CD, -device ide-cd */ + "no-user-config", /* X_QEMU_CAPS_NO_USER_CONFIG, -no-user-config */ + "balloon-event", /* X_QEMU_CAPS_BALLOON_EVENT, Async event for balloon changes */ + "bridge", /* X_QEMU_CAPS_NETDEV_BRIDGE, bridge helper support */ + "dump-guest-core", /* X_QEMU_CAPS_DUMP_GUEST_CORE, dump-guest-core-parameter */ + "seamless-migration", /* X_QEMU_CAPS_SEAMLESS_MIGRATION, seamless-migration for SPICE */ + "usb-redir.bootindex", /* X_QEMU_CAPS_USB_REDIR_BOOTINDEX, usb-redir.bootindex */ + "usb-host.bootindex", /* X_QEMU_CAPS_USB_HOST_BOOTINDEX, usb-host.bootindex */ + "usb-net", /* X_QEMU_CAPS_DEVICE_USB_NET, -device usb-net */ + "add-fd", /* X_QEMU_CAPS_ADD_FD, -add-fd */ + "dtb", /* X_QEMU_CAPS_DTB, -dtb file */ + "ipv6-migration", /* X_QEMU_CAPS_IPV6_MIGRATION, -incoming [::] */ + "machine-opt", /* X_QEMU_CAPS_MACHINE_OPT, -machine xxxx*/ + "machine-usb-opt", /* X_QEMU_CAPS_MACHINE_USB_OPT, -machine xxx,usb=on/off */ + "vfio-pci.bootindex", /* X_QEMU_CAPS_VFIO_PCI_BOOTINDEX, bootindex param for vfio-pci device */ + "scsi-generic", /* X_QEMU_CAPS_DEVICE_SCSI_GENERIC, -device scsi-generic */ + "scsi-generic.bootindex", /* X_QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX, -device scsi-generic.bootindex */ + "vnc-websocket", /* X_QEMU_CAPS_VNC_WEBSOCKET, -vnc x:y,websocket */ + "vnc-share-policy", /* X_QEMU_CAPS_VNC_SHARE_POLICY, set display sharing policy */ + "device-del-event", /* X_QEMU_CAPS_DEVICE_DEL_EVENT, DEVICE_DELETED event */ + "spiceport", /* X_QEMU_CAPS_CHARDEV_SPICEPORT, -chardev spiceport */ + "host-pci-multidomain", /* X_QEMU_CAPS_HOST_PCI_MULTIDOMAIN, support domain > 0 in host pci address */ + "device-tray-moved-event", /* X_QEMU_CAPS_DEVICE_TRAY_MOVED, DEVICE_TRAY_MOVED event */ + "qxl-vga.max_outputs", /* X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS, -device qxl-vga,max-outputs= */ + "display", /* X_QEMU_CAPS_DISPLAY, -display */ + );
struct virQEMUCapsMachineType { char *name; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index ba84052bca..6fa402a846 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -612,6 +612,7 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, unsigned int *version);
VIR_ENUM_DECL(virQEMUCaps); +VIR_ENUM_DECL(virQEMUCapsDeprecated);
bool virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuCaps, virDomainVirtType virtType,
Michal

On Thu, Mar 07, 2019 at 11:37:00AM +0100, Michal Privoznik wrote:
On 2/21/19 4:42 PM, Ján Tomko wrote:
To prevent domains started with older libvirtd from disappearing, we need to be able to parse the string representation of QEMU capabilities, even if we no longer use them in the code.
Put those in a separate array where we won't bother with enum constants.
Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 95 ++++++++++++++++++++++++++++++++++++ src/qemu/qemu_capabilities.h | 1 + 2 files changed, 96 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b48bcbebee..7160860ab4 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -524,6 +524,101 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "scsi-disk.device_id", ); +#define VIR_QEMU_CAPS_DEPRECATED_LAST 92 /* chosen by fair dice roll */
Problem I have with this apporach is that as soon as we deprecate some other capability we have to change this number too. Since we don't need str<->enum translation can't we just have a static array of these strings and then in 6/8 use virStringListHasString() instead of virQEMUCapsDeprecatedTypeFromString()?
Yes, I'm really not seeing a benefit from this change. We haven't really eliminated the enums, because the enums constants are still there in the comments - merely not in the headers. Since it turns something that was previously compile time guaranteed correct into a magic constant we can screw up it is arguably a step backwards. I could perhaps see us splitting the enums typedef enum { X_QEMU_CAPS_KQEMU, X_QEMU_CAPS_VNC_COLON, X_QEMU_CAPS_NO_REBOOT, ... X_QEMU_CAPS_DISPLAY, X_QEMU_CAPS_LAST } virQEMUCapsDeprecated typedef enum { QEMU_CAPS_KVM = X_QEMU_CAPS_LAST .... } virQEMUCaps; This would need an VIR_ENUM_IMPL_OFFSET() which let us pass in the offset value of the first enum constant. Not sure it buys us very much over what we have today though.
+VIR_ENUM_IMPL(virQEMUCapsDeprecated, VIR_QEMU_CAPS_DEPRECATED_LAST, + "kqemu", /* X_QEMU_CAPS_KQEMU, Whether KQEMU is compiled in */ + "vnc-colon", /* X_QEMU_CAPS_VNC_COLON, VNC takes or address + display */ + "no-reboot", /* X_QEMU_CAPS_NO_REBOOT, Is the -no-reboot flag available */ + "drive", /* X_QEMU_CAPS_DRIVE, Is the new -drive arg available */ + "drive-boot", /* X_QEMU_CAPS_DRIVE_BOOT, Does -drive support boot=on */ + "name", /* X_QEMU_CAPS_NAME, Is the -name flag available */ + "uuid", /* X_QEMU_CAPS_UUID, Is the -uuid flag available */ + "domid", /* X_QEMU_CAPS_DOMID, Xenner: -domid flag available */ + "vnet-hdr", /* X_QEMU_CAPS_VNET_HDR */ + "migrate-kvm-stdio", /* X_QEMU_CAPS_MIGRATE_KVM_STDIO, avoid kvm tcp migration bug */ + "migrate-qemu-tcp", /* X_QEMU_CAPS_MIGRATE_QEMU_TCP, have qemu tcp migration */ + "migrate-qemu-exec", /* X_QEMU_CAPS_MIGRATE_QEMU_EXEC, have qemu exec migration */ + "drive-cache-v2", /* X_QEMU_CAPS_DRIVE_CACHE_V2, cache= flag wanting new v2 values */ + "drive-format", /* X_QEMU_CAPS_DRIVE_FORMAT, Is -drive format= avail */ + "vga", /* X_QEMU_CAPS_VGA, Is -vga avail */ + "0.10", /* X_QEMU_CAPS_0_10, features added in qemu-0.10.0 or later */ + "pci-device", /* X_QEMU_CAPS_PCIDEVICE, PCI device assignment supported */ + "mem-path", /* X_QEMU_CAPS_MEM_PATH, mmap'ped guest backing supported */ + "drive-serial", /* X_QEMU_CAPS_DRIVE_SERIAL, -driver serial= available */ + "xen-domid", /* X_QEMU_CAPS_XEN_DOMID, -xen-domid */ + "migrate-qemu-unix", /* X_QEMU_CAPS_MIGRATE_QEMU_UNIX, qemu migration via unix sockets */ + "chardev", /* X_QEMU_CAPS_CHARDEV, Is the new -chardev arg available */ + "enable-kvm", /* X_QEMU_CAPS_ENABLE_KVM, -enable-kvm flag */ + "monitor-json", /* X_QEMU_CAPS_MONITOR_JSON, JSON mode for monitor */ + "balloon", /* X_QEMU_CAPS_BALLOON, -balloon available */ + "device", /* X_QEMU_CAPS_DEVICE, Is the -device arg available */ + "sdl", /* X_QEMU_CAPS_SDL, Is the new -sdl arg available */ + "smp-topology", /* X_QEMU_CAPS_SMP_TOPOLOGY, -smp has sockets/cores/threads */ + "netdev", /* X_QEMU_CAPS_NETDEV, -netdev flag & netdev_add/remove */ + "rtc", /* X_QEMU_CAPS_RTC, The -rtc flag for clock options */ + "vhost-net", /* X_QEMU_CAPS_VHOST_NET, vhost-net support available */ + "rtc-td-hack", /* X_QEMU_CAPS_RTC_TD_HACK, -rtc-td-hack available */ + "no-kvm-pit", /* X_QEMU_CAPS_NO_KVM_PIT, -no-kvm-pit-reinjection supported */ + "tdf", /* X_QEMU_CAPS_TDF, -tdf flag (user-mode pit catchup) */ + "pci-configfd", /* X_QEMU_CAPS_PCI_CONFIGFD, pci-assign.configfd */ + "nodefconfig", /* X_QEMU_CAPS_NODEFCONFIG, -nodefconfig */ + "boot-menu", /* X_QEMU_CAPS_BOOT_MENU, -boot menu=on support */ + "enable-kqemu", /* X_QEMU_CAPS_ENABLE_KQEMU, -enable-kqemu flag */ + "fsdev", /* X_QEMU_CAPS_FSDEV, -fstype filesystem passthrough */ + "nesting", /* X_QEMU_CAPS_NESTING, -enable-nesting (SVM/VMX) */ + "name-process", /* X_QEMU_CAPS_NAME_PROCESS, Is -name process= available */ + "drive-readonly", /* X_QEMU_CAPS_DRIVE_READONLY, -drive readonly=on|off */ + "smbios-type", /* X_QEMU_CAPS_SMBIOS_TYPE, Is -smbios type= available */ + "vga-qxl", /* X_QEMU_CAPS_VGA_QXL, The 'qxl' arg for '-vga' */ + "vga-none", /* X_QEMU_CAPS_VGA_NONE, The 'none' arg for '-vga' */ + "migrate-qemu-fd", /* X_QEMU_CAPS_MIGRATE_QEMU_FD, -incoming fd:n */ + "boot-index", /* X_QEMU_CAPS_BOOTINDEX, -device bootindex property */ + "drive-aio", /* X_QEMU_CAPS_DRIVE_AIO, -drive aio= supported */ + "pci-multibus", /* X_QEMU_CAPS_PCI_MULTIBUS, bus=pci.0 vs bus=pci */ + "pci-bootindex", /* X_QEMU_CAPS_PCI_BOOTINDEX, pci-assign.bootindex */ + "chardev-spicevmc", /* X_QEMU_CAPS_CHARDEV_SPICEVMC, newer -chardev spicevmc */ + "device-spicevmc", /* X_QEMU_CAPS_DEVICE_SPICEVMC, older -device spicevmc*/ + "device-qxl-vga", /* X_QEMU_CAPS_DEVICE_QXL_VGA, primary qxl device named qxl-vga? */ + "pci-multifunction", /* X_QEMU_CAPS_PCI_MULTIFUNCTION, -device multifunction=on|off */ + "cache-directsync", /* X_QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, Is cache=directsync supported? */ + "no-shutdown", /* X_QEMU_CAPS_NO_SHUTDOWN, usable -no-shutdown */ + "cache-unsafe", /* X_QEMU_CAPS_DRIVE_CACHE_UNSAFE, Is cache=unsafe supported? */ + "rombar", /* X_QEMU_CAPS_PCI_ROMBAR, -device rombar=0|1 */ + "fsdev-readonly", /* X_QEMU_CAPS_FSDEV_READONLY, -fsdev readonly supported */ + "blk-sg-io", /* X_QEMU_CAPS_VIRTIO_BLK_SG_IO, SG_IO commands */ + "drive-copy-on-read", /* X_QEMU_CAPS_DRIVE_COPY_ON_READ, -drive copy-on-read */ + "cpu-host", /* X_QEMU_CAPS_CPU_HOST, support for -cpu host */ + "fsdev-writeout", /* X_QEMU_CAPS_FSDEV_WRITEOUT, -fsdev writeout supported */ + "drive-iotune", /* X_QEMU_CAPS_DRIVE_IOTUNE, -drive bps= and friends */ + "system_wakeup", /* X_QEMU_CAPS_WAKEUP, system_wakeup monitor command */ + "block-job-sync", /* X_QEMU_CAPS_BLOCKJOB_SYNC, old block_job_cancel, block_stream */ + "scsi-cd", /* X_QEMU_CAPS_SCSI_CD, -device scsi-cd */ + "ide-cd", /* X_QEMU_CAPS_IDE_CD, -device ide-cd */ + "no-user-config", /* X_QEMU_CAPS_NO_USER_CONFIG, -no-user-config */ + "balloon-event", /* X_QEMU_CAPS_BALLOON_EVENT, Async event for balloon changes */ + "bridge", /* X_QEMU_CAPS_NETDEV_BRIDGE, bridge helper support */ + "dump-guest-core", /* X_QEMU_CAPS_DUMP_GUEST_CORE, dump-guest-core-parameter */ + "seamless-migration", /* X_QEMU_CAPS_SEAMLESS_MIGRATION, seamless-migration for SPICE */ + "usb-redir.bootindex", /* X_QEMU_CAPS_USB_REDIR_BOOTINDEX, usb-redir.bootindex */ + "usb-host.bootindex", /* X_QEMU_CAPS_USB_HOST_BOOTINDEX, usb-host.bootindex */ + "usb-net", /* X_QEMU_CAPS_DEVICE_USB_NET, -device usb-net */ + "add-fd", /* X_QEMU_CAPS_ADD_FD, -add-fd */ + "dtb", /* X_QEMU_CAPS_DTB, -dtb file */ + "ipv6-migration", /* X_QEMU_CAPS_IPV6_MIGRATION, -incoming [::] */ + "machine-opt", /* X_QEMU_CAPS_MACHINE_OPT, -machine xxxx*/ + "machine-usb-opt", /* X_QEMU_CAPS_MACHINE_USB_OPT, -machine xxx,usb=on/off */ + "vfio-pci.bootindex", /* X_QEMU_CAPS_VFIO_PCI_BOOTINDEX, bootindex param for vfio-pci device */ + "scsi-generic", /* X_QEMU_CAPS_DEVICE_SCSI_GENERIC, -device scsi-generic */ + "scsi-generic.bootindex", /* X_QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX, -device scsi-generic.bootindex */ + "vnc-websocket", /* X_QEMU_CAPS_VNC_WEBSOCKET, -vnc x:y,websocket */ + "vnc-share-policy", /* X_QEMU_CAPS_VNC_SHARE_POLICY, set display sharing policy */ + "device-del-event", /* X_QEMU_CAPS_DEVICE_DEL_EVENT, DEVICE_DELETED event */ + "spiceport", /* X_QEMU_CAPS_CHARDEV_SPICEPORT, -chardev spiceport */ + "host-pci-multidomain", /* X_QEMU_CAPS_HOST_PCI_MULTIDOMAIN, support domain > 0 in host pci address */ + "device-tray-moved-event", /* X_QEMU_CAPS_DEVICE_TRAY_MOVED, DEVICE_TRAY_MOVED event */ + "qxl-vga.max_outputs", /* X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS, -device qxl-vga,max-outputs= */ + "display", /* X_QEMU_CAPS_DISPLAY, -display */ + ); struct virQEMUCapsMachineType { char *name; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index ba84052bca..6fa402a846 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -612,6 +612,7 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, unsigned int *version); VIR_ENUM_DECL(virQEMUCaps); +VIR_ENUM_DECL(virQEMUCapsDeprecated); bool virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuCaps, virDomainVirtType virtType,
Michal
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

Add a function that will convert the "name" attributes from the passed nodes to QEMU capabilities. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 51 +++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 7160860ab4..a355ee2e37 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3442,6 +3442,38 @@ virQEMUCapsParseSEVInfo(virQEMUCapsPtr qemuCaps, xmlXPathContextPtr ctxt) } +static int +virQEMUCapsSetFromNodes(virQEMUCapsPtr qemuCaps, + xmlNodePtr *nodes, + size_t n) +{ + size_t i; + char *str = NULL; + int ret = -1; + + for (i = 0; i < n; i++) { + int flag; + if (!(str = virXMLPropString(nodes[i], "name"))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("missing flag name in QEMU capabilities cache")); + goto cleanup; + } + flag = virQEMUCapsTypeFromString(str); + if (flag < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown qemu capabilities flag %s"), str); + goto cleanup; + } + VIR_FREE(str); + virQEMUCapsSet(qemuCaps, flag); + } + ret = 0; + cleanup: + VIR_FREE(str); + return ret; +} + + /* * Parsing a doc that looks like * @@ -3515,22 +3547,9 @@ virQEMUCapsLoadCache(virArch hostArch, goto cleanup; } VIR_DEBUG("Got flags %d", n); - for (i = 0; i < n; i++) { - int flag; - if (!(str = virXMLPropString(nodes[i], "name"))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("missing flag name in QEMU capabilities cache")); - goto cleanup; - } - flag = virQEMUCapsTypeFromString(str); - if (flag < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown qemu capabilities flag %s"), str); - goto cleanup; - } - VIR_FREE(str); - virQEMUCapsSet(qemuCaps, flag); - } + + if (virQEMUCapsSetFromNodes(qemuCaps, nodes, n) < 0) + goto cleanup; VIR_FREE(nodes); if (virXPathUInt("string(./version)", ctxt, &qemuCaps->version) < 0) { -- 2.19.2

On 2/21/19 4:42 PM, Ján Tomko wrote:
Add a function that will convert the "name" attributes from the passed nodes to QEMU capabilities.
Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 51 +++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 16 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 7160860ab4..a355ee2e37 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3442,6 +3442,38 @@ virQEMUCapsParseSEVInfo(virQEMUCapsPtr qemuCaps, xmlXPathContextPtr ctxt) }
+static int +virQEMUCapsSetFromNodes(virQEMUCapsPtr qemuCaps, + xmlNodePtr *nodes, + size_t n) +{ + size_t i; + char *str = NULL;
VIR_AUTOFREE() And if you declare the variable only in the loop body then ..
+ int ret = -1; + + for (i = 0; i < n; i++) { + int flag; + if (!(str = virXMLPropString(nodes[i], "name"))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("missing flag name in QEMU capabilities cache")); + goto cleanup; + } + flag = virQEMUCapsTypeFromString(str); + if (flag < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown qemu capabilities flag %s"), str); + goto cleanup; + } + VIR_FREE(str);
.. this can be dropped too.
+ virQEMUCapsSet(qemuCaps, flag); + } + ret = 0; + cleanup: + VIR_FREE(str); + return ret; +} +
Michal

Remove some code duplication. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_capabilities.h | 4 ++++ src/qemu/qemu_domain.c | 16 ++-------------- tests/qemucaps2xmltest.c | 17 +++-------------- 4 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index a355ee2e37..b12f5914aa 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3442,7 +3442,7 @@ virQEMUCapsParseSEVInfo(virQEMUCapsPtr qemuCaps, xmlXPathContextPtr ctxt) } -static int +int virQEMUCapsSetFromNodes(virQEMUCapsPtr qemuCaps, xmlNodePtr *nodes, size_t n) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 6fa402a846..d1303da3cf 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -516,6 +516,10 @@ virQEMUCapsPtr virQEMUCapsNew(void); void virQEMUCapsSet(virQEMUCapsPtr qemuCaps, virQEMUCapsFlags flag) ATTRIBUTE_NONNULL(1); +int virQEMUCapsSetFromNodes(virQEMUCapsPtr qemuCaps, + xmlNodePtr *nodes, + size_t nnodes) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); void virQEMUCapsSetList(virQEMUCapsPtr qemuCaps, ...) ATTRIBUTE_NONNULL(1); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index bbd4a5efe8..ef44252cba 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2995,20 +2995,8 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, if (!(qemuCaps = virQEMUCapsNew())) goto error; - for (i = 0; i < n; i++) { - char *str = virXMLPropString(nodes[i], "name"); - if (str) { - int flag = virQEMUCapsTypeFromString(str); - if (flag < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown qemu capabilities flag %s"), str); - VIR_FREE(str); - goto error; - } - VIR_FREE(str); - virQEMUCapsSet(qemuCaps, flag); - } - } + if (virQEMUCapsSetFromNodes(qemuCaps, nodes, n) < 0) + goto error; VIR_STEAL_PTR(priv->qemuCaps, qemuCaps); } diff --git a/tests/qemucaps2xmltest.c b/tests/qemucaps2xmltest.c index 0d9b4e679a..3e96c643da 100644 --- a/tests/qemucaps2xmltest.c +++ b/tests/qemucaps2xmltest.c @@ -38,7 +38,7 @@ testQemuGetCaps(char *caps) virQEMUCapsPtr qemuCaps = NULL; xmlDocPtr xml; xmlXPathContextPtr ctxt = NULL; - ssize_t i, n; + ssize_t n; xmlNodePtr *nodes = NULL; if (!(xml = virXMLParseStringCtxt(caps, "(test caps)", &ctxt))) @@ -52,19 +52,8 @@ testQemuGetCaps(char *caps) if (!(qemuCaps = virQEMUCapsNew())) goto error; - for (i = 0; i < n; i++) { - char *str = virXMLPropString(nodes[i], "name"); - if (str) { - int flag = virQEMUCapsTypeFromString(str); - if (flag < 0) { - fprintf(stderr, "Unknown qemu capabilities flag %s", str); - VIR_FREE(str); - goto error; - } - VIR_FREE(str); - virQEMUCapsSet(qemuCaps, flag); - } - } + if (virQEMUCapsSetFromNodes(qemuCaps, nodes, n) < 0) + goto error; VIR_FREE(nodes); xmlFreeDoc(xml); -- 2.19.2

Stop testing whether we format the deprecated capabilities back for the files where the input and output differ. Capabilities with separate output files are left alone, since we will still need to parse files contating them correctly, we just don't have to format them back. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- .../blockjob-mirror-in.xml | 1 - .../migration-in-params-in.xml | 53 ------------------- .../migration-out-nbd-tls-in.xml | 51 ------------------ .../migration-out-params-in.xml | 53 ------------------- tests/qemustatusxml2xmldata/modern-in.xml | 51 ------------------ .../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 - 6 files changed, 210 deletions(-) diff --git a/tests/qemustatusxml2xmldata/blockjob-mirror-in.xml b/tests/qemustatusxml2xmldata/blockjob-mirror-in.xml index 32bde1ba66..6b522f5ae1 100644 --- a/tests/qemustatusxml2xmldata/blockjob-mirror-in.xml +++ b/tests/qemustatusxml2xmldata/blockjob-mirror-in.xml @@ -5,7 +5,6 @@ <vcpu id='0' pid='3803519'/> </vcpus> <qemuCaps> - <flag name='vnet-hdr'/> <flag name='qxl.vgamem_mb'/> <flag name='qxl-vga.vgamem_mb'/> <flag name='pc-dimm'/> diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml b/tests/qemustatusxml2xmldata/migration-in-params-in.xml index 03f18b4f3d..b3c6b0758b 100644 --- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml @@ -11,37 +11,16 @@ </vcpus> <qemuCaps> <flag name='kvm'/> - <flag name='mem-path'/> - <flag name='drive-serial'/> - <flag name='monitor-json'/> - <flag name='sdl'/> - <flag name='netdev'/> - <flag name='rtc'/> - <flag name='vhost-net'/> <flag name='no-hpet'/> - <flag name='no-kvm-pit'/> - <flag name='pci-configfd'/> - <flag name='nodefconfig'/> - <flag name='boot-menu'/> - <flag name='fsdev'/> - <flag name='name-process'/> - <flag name='smbios-type'/> <flag name='spice'/> - <flag name='vga-none'/> - <flag name='boot-index'/> <flag name='hda-duplex'/> - <flag name='drive-aio'/> - <flag name='pci-bootindex'/> <flag name='ccid-emulated'/> <flag name='ccid-passthru'/> - <flag name='chardev-spicevmc'/> <flag name='virtio-tx-alg'/> - <flag name='pci-multifunction'/> <flag name='virtio-blk-pci.ioeventfd'/> <flag name='sga'/> <flag name='virtio-blk-pci.event_idx'/> <flag name='virtio-net-pci.event_idx'/> - <flag name='cache-directsync'/> <flag name='piix3-usb-uhci'/> <flag name='piix4-usb-uhci'/> <flag name='usb-ehci'/> @@ -50,28 +29,16 @@ <flag name='pci-ohci'/> <flag name='usb-redir'/> <flag name='usb-hub'/> - <flag name='no-shutdown'/> - <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> <flag name='no-acpi'/> - <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> - <flag name='drive-copy-on-read'/> - <flag name='fsdev-writeout'/> - <flag name='drive-iotune'/> - <flag name='system_wakeup'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> <flag name='transaction'/> <flag name='block-job-async'/> - <flag name='scsi-cd'/> - <flag name='ide-cd'/> - <flag name='no-user-config'/> <flag name='hda-micro'/> <flag name='dump-guest-memory'/> <flag name='nec-usb-xhci'/> - <flag name='balloon-event'/> - <flag name='bridge'/> <flag name='lsi'/> <flag name='virtio-scsi-pci'/> <flag name='blockio'/> @@ -82,13 +49,9 @@ <flag name='scsi-disk.wwn'/> <flag name='seccomp-sandbox'/> <flag name='reboot-timeout'/> - <flag name='dump-guest-core'/> - <flag name='seamless-migration'/> <flag name='block-commit'/> <flag name='vnc'/> <flag name='drive-mirror'/> - <flag name='usb-redir.bootindex'/> - <flag name='usb-host.bootindex'/> <flag name='blockdev-snapshot-sync'/> <flag name='qxl'/> <flag name='VGA'/> @@ -96,30 +59,18 @@ <flag name='vmware-svga'/> <flag name='device-video-primary'/> <flag name='usb-serial'/> - <flag name='usb-net'/> - <flag name='add-fd'/> <flag name='nbd-server'/> <flag name='virtio-rng'/> <flag name='rng-random'/> <flag name='rng-egd'/> - <flag name='dtb'/> <flag name='megasas'/> - <flag name='ipv6-migration'/> - <flag name='machine-opt'/> - <flag name='machine-usb-opt'/> <flag name='tpm-passthrough'/> <flag name='tpm-tis'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='vfio-pci.bootindex'/> - <flag name='scsi-generic'/> - <flag name='scsi-generic.bootindex'/> <flag name='mem-merge'/> - <flag name='vnc-websocket'/> <flag name='drive-discard'/> <flag name='mlock'/> - <flag name='vnc-share-policy'/> - <flag name='device-del-event'/> <flag name='dmi-to-pci-bridge'/> <flag name='i440fx-pci-hole64-size'/> <flag name='q35-pci-hole64-size'/> @@ -131,9 +82,7 @@ <flag name='boot-strict'/> <flag name='pvpanic'/> <flag name='spice-file-xfer-disable'/> - <flag name='spiceport'/> <flag name='usb-kbd'/> - <flag name='host-pci-multidomain'/> <flag name='msg-timestamp'/> <flag name='active-commit'/> <flag name='change-backing-file'/> @@ -184,7 +133,6 @@ <flag name='secret'/> <flag name='pxb'/> <flag name='pxb-pcie'/> - <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> <flag name='virtio-scsi-pci.iothread'/> <flag name='name-guest'/> @@ -192,7 +140,6 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> - <flag name='display'/> <flag name='intel-iommu'/> <flag name='smm'/> <flag name='virtio-pci-disable-legacy'/> diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-tls-in.xml b/tests/qemustatusxml2xmldata/migration-out-nbd-tls-in.xml index be1dc7347e..25b5d62b3f 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-tls-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-tls-in.xml @@ -10,35 +10,16 @@ </vcpus> <qemuCaps> <flag name='kvm'/> - <flag name='mem-path'/> - <flag name='drive-serial'/> - <flag name='monitor-json'/> - <flag name='sdl'/> - <flag name='netdev'/> - <flag name='rtc'/> - <flag name='vhost-net'/> <flag name='no-hpet'/> - <flag name='no-kvm-pit'/> - <flag name='nodefconfig'/> - <flag name='boot-menu'/> - <flag name='fsdev'/> - <flag name='name-process'/> - <flag name='smbios-type'/> <flag name='spice'/> - <flag name='vga-none'/> - <flag name='boot-index'/> <flag name='hda-duplex'/> - <flag name='drive-aio'/> <flag name='ccid-emulated'/> <flag name='ccid-passthru'/> - <flag name='chardev-spicevmc'/> <flag name='virtio-tx-alg'/> - <flag name='pci-multifunction'/> <flag name='virtio-blk-pci.ioeventfd'/> <flag name='sga'/> <flag name='virtio-blk-pci.event_idx'/> <flag name='virtio-net-pci.event_idx'/> - <flag name='cache-directsync'/> <flag name='piix3-usb-uhci'/> <flag name='piix4-usb-uhci'/> <flag name='usb-ehci'/> @@ -47,28 +28,16 @@ <flag name='pci-ohci'/> <flag name='usb-redir'/> <flag name='usb-hub'/> - <flag name='no-shutdown'/> - <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> <flag name='no-acpi'/> - <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> - <flag name='drive-copy-on-read'/> - <flag name='fsdev-writeout'/> - <flag name='drive-iotune'/> - <flag name='system_wakeup'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> <flag name='transaction'/> <flag name='block-job-async'/> - <flag name='scsi-cd'/> - <flag name='ide-cd'/> - <flag name='no-user-config'/> <flag name='hda-micro'/> <flag name='dump-guest-memory'/> <flag name='nec-usb-xhci'/> - <flag name='balloon-event'/> - <flag name='bridge'/> <flag name='lsi'/> <flag name='virtio-scsi-pci'/> <flag name='blockio'/> @@ -79,13 +48,9 @@ <flag name='scsi-disk.wwn'/> <flag name='seccomp-sandbox'/> <flag name='reboot-timeout'/> - <flag name='dump-guest-core'/> - <flag name='seamless-migration'/> <flag name='block-commit'/> <flag name='vnc'/> <flag name='drive-mirror'/> - <flag name='usb-redir.bootindex'/> - <flag name='usb-host.bootindex'/> <flag name='blockdev-snapshot-sync'/> <flag name='qxl'/> <flag name='VGA'/> @@ -93,30 +58,18 @@ <flag name='vmware-svga'/> <flag name='device-video-primary'/> <flag name='usb-serial'/> - <flag name='usb-net'/> - <flag name='add-fd'/> <flag name='nbd-server'/> <flag name='virtio-rng'/> <flag name='rng-random'/> <flag name='rng-egd'/> - <flag name='dtb'/> <flag name='megasas'/> - <flag name='ipv6-migration'/> - <flag name='machine-opt'/> - <flag name='machine-usb-opt'/> <flag name='tpm-passthrough'/> <flag name='tpm-tis'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='vfio-pci.bootindex'/> - <flag name='scsi-generic'/> - <flag name='scsi-generic.bootindex'/> <flag name='mem-merge'/> - <flag name='vnc-websocket'/> <flag name='drive-discard'/> <flag name='mlock'/> - <flag name='vnc-share-policy'/> - <flag name='device-del-event'/> <flag name='dmi-to-pci-bridge'/> <flag name='i440fx-pci-hole64-size'/> <flag name='q35-pci-hole64-size'/> @@ -128,9 +81,7 @@ <flag name='boot-strict'/> <flag name='pvpanic'/> <flag name='spice-file-xfer-disable'/> - <flag name='spiceport'/> <flag name='usb-kbd'/> - <flag name='host-pci-multidomain'/> <flag name='msg-timestamp'/> <flag name='active-commit'/> <flag name='change-backing-file'/> @@ -180,7 +131,6 @@ <flag name='secret'/> <flag name='pxb'/> <flag name='pxb-pcie'/> - <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> <flag name='virtio-scsi-pci.iothread'/> <flag name='name-guest'/> @@ -188,7 +138,6 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> - <flag name='display'/> <flag name='intel-iommu'/> <flag name='smm'/> <flag name='virtio-pci-disable-legacy'/> diff --git a/tests/qemustatusxml2xmldata/migration-out-params-in.xml b/tests/qemustatusxml2xmldata/migration-out-params-in.xml index ae2064830a..daa45e3f88 100644 --- a/tests/qemustatusxml2xmldata/migration-out-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-params-in.xml @@ -11,37 +11,16 @@ </vcpus> <qemuCaps> <flag name='kvm'/> - <flag name='mem-path'/> - <flag name='drive-serial'/> - <flag name='monitor-json'/> - <flag name='sdl'/> - <flag name='netdev'/> - <flag name='rtc'/> - <flag name='vhost-net'/> <flag name='no-hpet'/> - <flag name='no-kvm-pit'/> - <flag name='pci-configfd'/> - <flag name='nodefconfig'/> - <flag name='boot-menu'/> - <flag name='fsdev'/> - <flag name='name-process'/> - <flag name='smbios-type'/> <flag name='spice'/> - <flag name='vga-none'/> - <flag name='boot-index'/> <flag name='hda-duplex'/> - <flag name='drive-aio'/> - <flag name='pci-bootindex'/> <flag name='ccid-emulated'/> <flag name='ccid-passthru'/> - <flag name='chardev-spicevmc'/> <flag name='virtio-tx-alg'/> - <flag name='pci-multifunction'/> <flag name='virtio-blk-pci.ioeventfd'/> <flag name='sga'/> <flag name='virtio-blk-pci.event_idx'/> <flag name='virtio-net-pci.event_idx'/> - <flag name='cache-directsync'/> <flag name='piix3-usb-uhci'/> <flag name='piix4-usb-uhci'/> <flag name='usb-ehci'/> @@ -50,28 +29,16 @@ <flag name='pci-ohci'/> <flag name='usb-redir'/> <flag name='usb-hub'/> - <flag name='no-shutdown'/> - <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> <flag name='no-acpi'/> - <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> - <flag name='drive-copy-on-read'/> - <flag name='fsdev-writeout'/> - <flag name='drive-iotune'/> - <flag name='system_wakeup'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> <flag name='transaction'/> <flag name='block-job-async'/> - <flag name='scsi-cd'/> - <flag name='ide-cd'/> - <flag name='no-user-config'/> <flag name='hda-micro'/> <flag name='dump-guest-memory'/> <flag name='nec-usb-xhci'/> - <flag name='balloon-event'/> - <flag name='bridge'/> <flag name='lsi'/> <flag name='virtio-scsi-pci'/> <flag name='blockio'/> @@ -82,13 +49,9 @@ <flag name='scsi-disk.wwn'/> <flag name='seccomp-sandbox'/> <flag name='reboot-timeout'/> - <flag name='dump-guest-core'/> - <flag name='seamless-migration'/> <flag name='block-commit'/> <flag name='vnc'/> <flag name='drive-mirror'/> - <flag name='usb-redir.bootindex'/> - <flag name='usb-host.bootindex'/> <flag name='blockdev-snapshot-sync'/> <flag name='qxl'/> <flag name='VGA'/> @@ -96,30 +59,18 @@ <flag name='vmware-svga'/> <flag name='device-video-primary'/> <flag name='usb-serial'/> - <flag name='usb-net'/> - <flag name='add-fd'/> <flag name='nbd-server'/> <flag name='virtio-rng'/> <flag name='rng-random'/> <flag name='rng-egd'/> - <flag name='dtb'/> <flag name='megasas'/> - <flag name='ipv6-migration'/> - <flag name='machine-opt'/> - <flag name='machine-usb-opt'/> <flag name='tpm-passthrough'/> <flag name='tpm-tis'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='vfio-pci.bootindex'/> - <flag name='scsi-generic'/> - <flag name='scsi-generic.bootindex'/> <flag name='mem-merge'/> - <flag name='vnc-websocket'/> <flag name='drive-discard'/> <flag name='mlock'/> - <flag name='vnc-share-policy'/> - <flag name='device-del-event'/> <flag name='dmi-to-pci-bridge'/> <flag name='i440fx-pci-hole64-size'/> <flag name='q35-pci-hole64-size'/> @@ -131,9 +82,7 @@ <flag name='boot-strict'/> <flag name='pvpanic'/> <flag name='spice-file-xfer-disable'/> - <flag name='spiceport'/> <flag name='usb-kbd'/> - <flag name='host-pci-multidomain'/> <flag name='msg-timestamp'/> <flag name='active-commit'/> <flag name='change-backing-file'/> @@ -184,7 +133,6 @@ <flag name='secret'/> <flag name='pxb'/> <flag name='pxb-pcie'/> - <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> <flag name='virtio-scsi-pci.iothread'/> <flag name='name-guest'/> @@ -192,7 +140,6 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> - <flag name='display'/> <flag name='intel-iommu'/> <flag name='smm'/> <flag name='virtio-pci-disable-legacy'/> diff --git a/tests/qemustatusxml2xmldata/modern-in.xml b/tests/qemustatusxml2xmldata/modern-in.xml index 08f7f40761..78a91c745f 100644 --- a/tests/qemustatusxml2xmldata/modern-in.xml +++ b/tests/qemustatusxml2xmldata/modern-in.xml @@ -10,35 +10,16 @@ </vcpus> <qemuCaps> <flag name='kvm'/> - <flag name='mem-path'/> - <flag name='drive-serial'/> - <flag name='monitor-json'/> - <flag name='sdl'/> - <flag name='netdev'/> - <flag name='rtc'/> - <flag name='vhost-net'/> <flag name='no-hpet'/> - <flag name='no-kvm-pit'/> - <flag name='nodefconfig'/> - <flag name='boot-menu'/> - <flag name='fsdev'/> - <flag name='name-process'/> - <flag name='smbios-type'/> <flag name='spice'/> - <flag name='vga-none'/> - <flag name='boot-index'/> <flag name='hda-duplex'/> - <flag name='drive-aio'/> <flag name='ccid-emulated'/> <flag name='ccid-passthru'/> - <flag name='chardev-spicevmc'/> <flag name='virtio-tx-alg'/> - <flag name='pci-multifunction'/> <flag name='virtio-blk-pci.ioeventfd'/> <flag name='sga'/> <flag name='virtio-blk-pci.event_idx'/> <flag name='virtio-net-pci.event_idx'/> - <flag name='cache-directsync'/> <flag name='piix3-usb-uhci'/> <flag name='piix4-usb-uhci'/> <flag name='usb-ehci'/> @@ -47,28 +28,16 @@ <flag name='pci-ohci'/> <flag name='usb-redir'/> <flag name='usb-hub'/> - <flag name='no-shutdown'/> - <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> <flag name='no-acpi'/> - <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> - <flag name='drive-copy-on-read'/> - <flag name='fsdev-writeout'/> - <flag name='drive-iotune'/> - <flag name='system_wakeup'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> <flag name='transaction'/> <flag name='block-job-async'/> - <flag name='scsi-cd'/> - <flag name='ide-cd'/> - <flag name='no-user-config'/> <flag name='hda-micro'/> <flag name='dump-guest-memory'/> <flag name='nec-usb-xhci'/> - <flag name='balloon-event'/> - <flag name='bridge'/> <flag name='lsi'/> <flag name='virtio-scsi-pci'/> <flag name='blockio'/> @@ -79,13 +48,9 @@ <flag name='scsi-disk.wwn'/> <flag name='seccomp-sandbox'/> <flag name='reboot-timeout'/> - <flag name='dump-guest-core'/> - <flag name='seamless-migration'/> <flag name='block-commit'/> <flag name='vnc'/> <flag name='drive-mirror'/> - <flag name='usb-redir.bootindex'/> - <flag name='usb-host.bootindex'/> <flag name='blockdev-snapshot-sync'/> <flag name='qxl'/> <flag name='VGA'/> @@ -93,30 +58,18 @@ <flag name='vmware-svga'/> <flag name='device-video-primary'/> <flag name='usb-serial'/> - <flag name='usb-net'/> - <flag name='add-fd'/> <flag name='nbd-server'/> <flag name='virtio-rng'/> <flag name='rng-random'/> <flag name='rng-egd'/> - <flag name='dtb'/> <flag name='megasas'/> - <flag name='ipv6-migration'/> - <flag name='machine-opt'/> - <flag name='machine-usb-opt'/> <flag name='tpm-passthrough'/> <flag name='tpm-tis'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='vfio-pci.bootindex'/> - <flag name='scsi-generic'/> - <flag name='scsi-generic.bootindex'/> <flag name='mem-merge'/> - <flag name='vnc-websocket'/> <flag name='drive-discard'/> <flag name='mlock'/> - <flag name='vnc-share-policy'/> - <flag name='device-del-event'/> <flag name='dmi-to-pci-bridge'/> <flag name='i440fx-pci-hole64-size'/> <flag name='q35-pci-hole64-size'/> @@ -128,9 +81,7 @@ <flag name='boot-strict'/> <flag name='pvpanic'/> <flag name='spice-file-xfer-disable'/> - <flag name='spiceport'/> <flag name='usb-kbd'/> - <flag name='host-pci-multidomain'/> <flag name='msg-timestamp'/> <flag name='active-commit'/> <flag name='change-backing-file'/> @@ -180,7 +131,6 @@ <flag name='secret'/> <flag name='pxb'/> <flag name='pxb-pcie'/> - <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> <flag name='virtio-scsi-pci.iothread'/> <flag name='name-guest'/> @@ -188,7 +138,6 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> - <flag name='display'/> <flag name='intel-iommu'/> <flag name='smm'/> <flag name='virtio-pci-disable-legacy'/> diff --git a/tests/qemustatusxml2xmldata/vcpus-multi-in.xml b/tests/qemustatusxml2xmldata/vcpus-multi-in.xml index c99046ce8d..f9108a1e09 100644 --- a/tests/qemustatusxml2xmldata/vcpus-multi-in.xml +++ b/tests/qemustatusxml2xmldata/vcpus-multi-in.xml @@ -292,7 +292,6 @@ <vcpu id='287' pid='3803806'/> </vcpus> <qemuCaps> - <flag name='vnet-hdr'/> <flag name='qxl.vgamem_mb'/> <flag name='qxl-vga.vgamem_mb'/> <flag name='pc-dimm'/> -- 2.19.2

Prepare for removal of deprecated flags from the capability string array and quietly drop flags present in the deprecated string array if they were not found in the main array. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b12f5914aa..ce50cfdfa5 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3460,9 +3460,15 @@ virQEMUCapsSetFromNodes(virQEMUCapsPtr qemuCaps, } flag = virQEMUCapsTypeFromString(str); if (flag < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown qemu capabilities flag %s"), str); - goto cleanup; + flag = virQEMUCapsDeprecatedTypeFromString(str); + if (flag < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown qemu capabilities flag %s"), str); + goto cleanup; + } else { + VIR_FREE(str); + continue; + } } VIR_FREE(str); virQEMUCapsSet(qemuCaps, flag); -- 2.19.2

On 2/21/19 4:42 PM, Ján Tomko wrote:
Prepare for removal of deprecated flags from the capability string array and quietly drop flags present in the deprecated string array if they were not found in the main array.
Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b12f5914aa..ce50cfdfa5 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3460,9 +3460,15 @@ virQEMUCapsSetFromNodes(virQEMUCapsPtr qemuCaps, } flag = virQEMUCapsTypeFromString(str); if (flag < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown qemu capabilities flag %s"), str); - goto cleanup; + flag = virQEMUCapsDeprecatedTypeFromString(str);
As mentioned in 2/8 I think this should be replaced with virStringListHasString().
+ if (flag < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown qemu capabilities flag %s"), str); + goto cleanup; + } else { + VIR_FREE(str); + continue; + } } VIR_FREE(str); virQEMUCapsSet(qemuCaps, flag);
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario: 1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails. 2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML. 3) user starts a domain D. 4) user saves D into a file 5) sysadmin downgrades libvirt to R-1 6) user tries to restore D from the saved file At this point, since X is not in the saved XML, R - 1 assumes that D is lacking the capability and generates incompatible cmd line which makes qemu fail on loading migration stream. IOW, what one libvirt assumes the other might not. Michal

However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different? Erik

On Thu, Mar 07, 2019 at 12:52:46PM +0100, Erik Skultety wrote:
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different?
Yeah, downgrades of libvirt are not something we claim is supported. If will often work but we're not guaranteeing it & have broken it in the past, especially for running guests. You might be lucky if you have upgraded & immedaitely downgrade, but if you've made changes to guests while the new libvirt was running all bets are off. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On 3/7/19 1:07 PM, Daniel P. Berrangé wrote:
On Thu, Mar 07, 2019 at 12:52:46PM +0100, Erik Skultety wrote:
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different?
Okay, forget about save+restore. Let's just keep the domain D running and then downgrade libvirt. Now, instead of X affecting cmd line let it affect how we talk to qemu on monitor. Since R assumed X always being there then X wouldn't be recorded in status XML. Later when R-1 daemon is starting and parsing the status XML it won't find X and thus might make wrong decissions. For instance, if X would be some capability that affects the way we generate PCI addresses for guest devices, then this would really harm the user. Worse, let just start the domain with R-1, then upgrade to R to test it, call an API over D (at which point the status XML is regenerated, now without X stored in it), find that it's not working so roll back to R-1 and puff. The capability is gone.
Yeah, downgrades of libvirt are not something we claim is supported. If will often work but we're not guaranteeing it & have broken it in the past, especially for running guests. You might be lucky if you have upgraded & immedaitely downgrade, but if you've made changes to guests while the new libvirt was running all bets are off.
Not even in the case I'm describing above? Michal

On Thu, Mar 07, 2019 at 01:23:14PM +0100, Michal Privoznik wrote:
On 3/7/19 1:07 PM, Daniel P. Berrangé wrote:
On Thu, Mar 07, 2019 at 12:52:46PM +0100, Erik Skultety wrote:
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different?
Okay, forget about save+restore. Let's just keep the domain D running and then downgrade libvirt. Now, instead of X affecting cmd line let it affect how we talk to qemu on monitor. Since R assumed X always being there then X wouldn't be recorded in status XML. Later when R-1 daemon is starting and parsing the status XML it won't find X and thus might make wrong decissions. For instance, if X would be some capability that affects the way we generate PCI addresses for guest devices, then this would really harm the user.
Worse, let just start the domain with R-1, then upgrade to R to test it, call an API over D (at which point the status XML is regenerated, now without X stored in it), find that it's not working so roll back to R-1 and puff. The capability is gone.
Yeah, downgrades of libvirt are not something we claim is supported. If will often work but we're not guaranteeing it & have broken it in the past, especially for running guests. You might be lucky if you have upgraded & immedaitely downgrade, but if you've made changes to guests while the new libvirt was running all bets are off.
Not even in the case I'm describing above?
Yep. IMHO if you are upgrading just to test a new version, you should expect to have to stop & start your guests if you see problems after a subsequent downgrade. This kind of testing is not something to be done in production, only in dev/test where VMs are disposable. We should not go out of our way to intentionally break downgrades, but if the best way to change something for new libvirt happens to break dowgrades of running VMs that's acceptable. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On 3/7/19 1:27 PM, Daniel P. Berrangé wrote:
On Thu, Mar 07, 2019 at 01:23:14PM +0100, Michal Privoznik wrote:
On 3/7/19 1:07 PM, Daniel P. Berrangé wrote:
On Thu, Mar 07, 2019 at 12:52:46PM +0100, Erik Skultety wrote:
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different?
Okay, forget about save+restore. Let's just keep the domain D running and then downgrade libvirt. Now, instead of X affecting cmd line let it affect how we talk to qemu on monitor. Since R assumed X always being there then X wouldn't be recorded in status XML. Later when R-1 daemon is starting and parsing the status XML it won't find X and thus might make wrong decissions. For instance, if X would be some capability that affects the way we generate PCI addresses for guest devices, then this would really harm the user.
Worse, let just start the domain with R-1, then upgrade to R to test it, call an API over D (at which point the status XML is regenerated, now without X stored in it), find that it's not working so roll back to R-1 and puff. The capability is gone.
Yeah, downgrades of libvirt are not something we claim is supported. If will often work but we're not guaranteeing it & have broken it in the past, especially for running guests. You might be lucky if you have upgraded & immedaitely downgrade, but if you've made changes to guests while the new libvirt was running all bets are off.
Not even in the case I'm describing above?
Yep. IMHO if you are upgrading just to test a new version, you should expect to have to stop & start your guests if you see problems after a subsequent downgrade. This kind of testing is not something to be done in production, only in dev/test where VMs are disposable.
We should not go out of our way to intentionally break downgrades, but if the best way to change something for new libvirt happens to break dowgrades of running VMs that's acceptable.
Okay then. Jano, can you please send v2? I'll review it. Michal

On Thu, Mar 07, 2019 at 01:23:14PM +0100, Michal Privoznik wrote:
On 3/7/19 1:07 PM, Daniel P. Berrangé wrote:
On Thu, Mar 07, 2019 at 12:52:46PM +0100, Erik Skultety wrote:
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different?
Okay, forget about save+restore. Let's just keep the domain D running and then downgrade libvirt. Now, instead of X affecting cmd line let it affect how we talk to qemu on monitor. Since R assumed X always being there then X wouldn't be recorded in status XML. Later when R-1 daemon is starting and parsing the status XML it won't find X and thus might make wrong decissions. For instance, if X would be some capability that affects the way we generate PCI addresses for guest devices, then this would really harm the user.
Worse, let just start the domain with R-1, then upgrade to R to test it, call an API over D (at which point the status XML is regenerated, now without X stored in it), find that it's not working so roll back to R-1 and puff. The capability is gone.
I understand the X_ flags as something we implicitly expect from QEMU, IOW we bump the minimal version of QEMU we expect (with all the supported distros in mind) and so we mark a bunch of capabilities with X, if we drop them, how is what you're describing an issue since the capability is implicitly assumed to be supported by given version of QEMU regardless of libvirt version? Maybe I misunderstood your example, but I don't think we can ever mark a capability as X if that is still not an integral part of that QEMU version. Therefore, it should not affect the way we construct the cmdline and how we talk to the monitor, right? Erik

On Thu, Mar 07, 2019 at 01:34:15PM +0100, Erik Skultety wrote:
On Thu, Mar 07, 2019 at 01:23:14PM +0100, Michal Privoznik wrote:
On 3/7/19 1:07 PM, Daniel P. Berrangé wrote:
On Thu, Mar 07, 2019 at 12:52:46PM +0100, Erik Skultety wrote:
However, looking at the bigger picture is this a safe thing to do? I mean, imagine the following scenario:
1) say there is capability X that affects certain part of cmd line. And assume that those two possibilities are incompatible. If cmd line is generated one way then migration to a qemu which has cmd line generated the other way fails.
2) in release R we deprecate X and thus do not format it in <capabilities/> in status XML.
3) user starts a domain D.
4) user saves D into a file
5) sysadmin downgrades libvirt to R-1
Do we even support downgrade this way? I know we migrate to older version but isn't that different?
Okay, forget about save+restore. Let's just keep the domain D running and then downgrade libvirt. Now, instead of X affecting cmd line let it affect how we talk to qemu on monitor. Since R assumed X always being there then X wouldn't be recorded in status XML. Later when R-1 daemon is starting and parsing the status XML it won't find X and thus might make wrong decissions. For instance, if X would be some capability that affects the way we generate PCI addresses for guest devices, then this would really harm the user.
Worse, let just start the domain with R-1, then upgrade to R to test it, call an API over D (at which point the status XML is regenerated, now without X stored in it), find that it's not working so roll back to R-1 and puff. The capability is gone.
I understand the X_ flags as something we implicitly expect from QEMU, IOW we bump the minimal version of QEMU we expect (with all the supported distros in mind) and so we mark a bunch of capabilities with X, if we drop them, how is what you're describing an issue since the capability is implicitly assumed to be supported by given version of QEMU regardless of libvirt version? Maybe I misunderstood your example, but I don't think we can ever mark a capability as X if that is still not an integral part of that QEMU version. Therefore, it should not affect the way we construct the cmdline and how we talk to the monitor, right?
I think in general you are right - the X_ flags represent some feature we now assume exists. There's a few exceptions though. The most notable being the first 'KQEMU' which was simply deleted. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

The deprecated capabilities are duplicated in the virQEMUCapsDeprecated array. Remove the copies in the current array. --- src/qemu/qemu_capabilities.c | 131 ------------------ src/qemu/qemu_capabilities.h | 131 ------------------ .../disk-secinfo-upgrade-out.xml | 51 ------- .../migration-out-nbd-out.xml | 51 ------- 4 files changed, 364 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index ce50cfdfa5..7b760d95b4 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -63,99 +63,21 @@ VIR_LOG_INIT("qemu.qemu_capabilities"); * daemon restarts */ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, - /* 0 */ - "kqemu", - "vnc-colon", - "no-reboot", - "drive", - "drive-boot", - - /* 5 */ - "name", - "uuid", - "domid", - "vnet-hdr", - "migrate-kvm-stdio", - - /* 10 */ - "migrate-qemu-tcp", - "migrate-qemu-exec", - "drive-cache-v2", "kvm", - "drive-format", - - /* 15 */ - "vga", - "0.10", - "pci-device", - "mem-path", - "drive-serial", - - /* 20 */ - "xen-domid", - "migrate-qemu-unix", - "chardev", - "enable-kvm", - "monitor-json", - - /* 25 */ - "balloon", - "device", - "sdl", - "smp-topology", - "netdev", - - /* 30 */ - "rtc", - "vhost-net", - "rtc-td-hack", "no-hpet", - "no-kvm-pit", - - /* 35 */ - "tdf", - "pci-configfd", - "nodefconfig", - "boot-menu", - "enable-kqemu", - - /* 40 */ - "fsdev", - "nesting", - "name-process", - "drive-readonly", - "smbios-type", - - /* 45 */ - "vga-qxl", "spice", - "vga-none", - "migrate-qemu-fd", - "boot-index", /* 50 */ "hda-duplex", - "drive-aio", - "pci-multibus", - "pci-bootindex", "ccid-emulated", /* 55 */ "ccid-passthru", - "chardev-spicevmc", - "device-spicevmc", "virtio-tx-alg", - "device-qxl-vga", - - /* 60 */ - "pci-multifunction", "virtio-blk-pci.ioeventfd", "sga", "virtio-blk-pci.event_idx", "virtio-net-pci.event_idx", - - /* 65 */ - "cache-directsync", "piix3-usb-uhci", "piix4-usb-uhci", "usb-ehci", @@ -166,45 +88,21 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "pci-ohci", "usb-redir", "usb-hub", - "no-shutdown", - - /* 75 */ - "cache-unsafe", - "rombar", "ich9-ahci", "no-acpi", - "fsdev-readonly", /* 80 */ "virtio-blk-pci.scsi", - "blk-sg-io", - "drive-copy-on-read", - "cpu-host", - "fsdev-writeout", - - /* 85 */ - "drive-iotune", - "system_wakeup", "scsi-disk.channel", "scsi-block", "transaction", - - /* 90 */ - "block-job-sync", "block-job-async", - "scsi-cd", - "ide-cd", - "no-user-config", /* 95 */ "hda-micro", "dump-guest-memory", "nec-usb-xhci", "virtio-s390", - "balloon-event", - - /* 100 */ - "bridge", "lsi", "virtio-scsi-pci", "blockio", @@ -219,15 +117,11 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 110 */ "reboot-timeout", - "dump-guest-core", - "seamless-migration", "block-commit", "vnc", /* 115 */ "drive-mirror", - "usb-redir.bootindex", - "usb-host.bootindex", "blockdev-snapshot-sync", "qxl", @@ -240,8 +134,6 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 125 */ "usb-serial", - "usb-net", - "add-fd", "nbd-server", "virtio-rng", @@ -249,13 +141,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "rng-random", "rng-egd", "virtio-ccw", - "dtb", "megasas", - - /* 135 */ - "ipv6-migration", - "machine-opt", - "machine-usb-opt", "tpm-passthrough", "tpm-tis", @@ -263,19 +149,9 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "nvram", "pci-bridge", "vfio-pci", - "vfio-pci.bootindex", - "scsi-generic", - - /* 145 */ - "scsi-generic.bootindex", "mem-merge", - "vnc-websocket", "drive-discard", "mlock", - - /* 150 */ - "vnc-share-policy", - "device-del-event", "dmi-to-pci-bridge", "i440fx-pci-hole64-size", "q35-pci-hole64-size", @@ -292,11 +168,9 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "pvpanic", "enable-fips", "spice-file-xfer-disable", - "spiceport", /* 165 */ "usb-kbd", - "host-pci-multidomain", "msg-timestamp", "active-commit", "change-backing-file", @@ -373,20 +247,15 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 220 */ "pxb-pcie", - "device-tray-moved-event", "nec-usb-xhci-ports", "virtio-scsi-pci.iothread", "name-guest", /* 225 */ "qxl.max_outputs", - "qxl-vga.max_outputs", "spice-unix", "drive-detect-zeroes", "tls-creds-x509", - - /* 230 */ - "display", "intel-iommu", "smm", "virtio-pci-disable-legacy", diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index d1303da3cf..32dc8ccc1e 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -45,99 +45,21 @@ * X_ flags and re-group what's left. */ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ - /* 0 */ - X_QEMU_CAPS_KQEMU, /* Whether KQEMU is compiled in */ - X_QEMU_CAPS_VNC_COLON, /* VNC takes or address + display */ - X_QEMU_CAPS_NO_REBOOT, /* Is the -no-reboot flag available */ - X_QEMU_CAPS_DRIVE, /* Is the new -drive arg available */ - X_QEMU_CAPS_DRIVE_BOOT, /* Does -drive support boot=on */ - - /* 5 */ - X_QEMU_CAPS_NAME, /* Is the -name flag available */ - X_QEMU_CAPS_UUID, /* Is the -uuid flag available */ - X_QEMU_CAPS_DOMID, /* Xenner: -domid flag available */ - X_QEMU_CAPS_VNET_HDR, - X_QEMU_CAPS_MIGRATE_KVM_STDIO, /* avoid kvm tcp migration bug */ - - /* 10 */ - X_QEMU_CAPS_MIGRATE_QEMU_TCP, /* have qemu tcp migration */ - X_QEMU_CAPS_MIGRATE_QEMU_EXEC, /* have qemu exec migration */ - X_QEMU_CAPS_DRIVE_CACHE_V2, /* cache= flag wanting new v2 values */ QEMU_CAPS_KVM, /* Whether KVM is usable / was used during probing */ - X_QEMU_CAPS_DRIVE_FORMAT, /* Is -drive format= avail */ - - /* 15 */ - X_QEMU_CAPS_VGA, /* Is -vga avail */ - X_QEMU_CAPS_0_10, /* features added in qemu-0.10.0 or later */ - X_QEMU_CAPS_PCIDEVICE, /* PCI device assignment supported */ - X_QEMU_CAPS_MEM_PATH, /* mmap'ped guest backing supported */ - X_QEMU_CAPS_DRIVE_SERIAL, /* -driver serial= available */ - - /* 20 */ - X_QEMU_CAPS_XEN_DOMID, /* -xen-domid */ - X_QEMU_CAPS_MIGRATE_QEMU_UNIX, /* qemu migration via unix sockets */ - X_QEMU_CAPS_CHARDEV, /* Is the new -chardev arg available */ - X_QEMU_CAPS_ENABLE_KVM, /* -enable-kvm flag */ - X_QEMU_CAPS_MONITOR_JSON, /* JSON mode for monitor */ - - /* 25 */ - X_QEMU_CAPS_BALLOON, /* -balloon available */ - X_QEMU_CAPS_DEVICE, /* Is the -device arg available */ - X_QEMU_CAPS_SDL, /* Is the new -sdl arg available */ - X_QEMU_CAPS_SMP_TOPOLOGY, /* -smp has sockets/cores/threads */ - X_QEMU_CAPS_NETDEV, /* -netdev flag & netdev_add/remove */ - - /* 30 */ - X_QEMU_CAPS_RTC, /* The -rtc flag for clock options */ - X_QEMU_CAPS_VHOST_NET, /* vhost-net support available */ - X_QEMU_CAPS_RTC_TD_HACK, /* -rtc-td-hack available */ QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ - X_QEMU_CAPS_NO_KVM_PIT, /* -no-kvm-pit-reinjection supported */ - - /* 35 */ - X_QEMU_CAPS_TDF, /* -tdf flag (user-mode pit catchup) */ - X_QEMU_CAPS_PCI_CONFIGFD, /* pci-assign.configfd */ - X_QEMU_CAPS_NODEFCONFIG, /* -nodefconfig */ - X_QEMU_CAPS_BOOT_MENU, /* -boot menu=on support */ - X_QEMU_CAPS_ENABLE_KQEMU, /* -enable-kqemu flag */ - - /* 40 */ - X_QEMU_CAPS_FSDEV, /* -fstype filesystem passthrough */ - X_QEMU_CAPS_NESTING, /* -enable-nesting (SVM/VMX) */ - X_QEMU_CAPS_NAME_PROCESS, /* Is -name process= available */ - X_QEMU_CAPS_DRIVE_READONLY, /* -drive readonly=on|off */ - X_QEMU_CAPS_SMBIOS_TYPE, /* Is -smbios type= available */ - - /* 45 */ - X_QEMU_CAPS_VGA_QXL, /* The 'qxl' arg for '-vga' */ QEMU_CAPS_SPICE, /* Is -spice avail */ - X_QEMU_CAPS_VGA_NONE, /* The 'none' arg for '-vga' */ - X_QEMU_CAPS_MIGRATE_QEMU_FD, /* -incoming fd:n */ - X_QEMU_CAPS_BOOTINDEX, /* -device bootindex property */ /* 50 */ QEMU_CAPS_HDA_DUPLEX, /* -device hda-duplex */ - X_QEMU_CAPS_DRIVE_AIO, /* -drive aio= supported */ - X_QEMU_CAPS_PCI_MULTIBUS, /* bus=pci.0 vs bus=pci */ - X_QEMU_CAPS_PCI_BOOTINDEX, /* pci-assign.bootindex */ QEMU_CAPS_CCID_EMULATED, /* -device ccid-card-emulated */ /* 55 */ QEMU_CAPS_CCID_PASSTHRU, /* -device ccid-card-passthru */ - X_QEMU_CAPS_CHARDEV_SPICEVMC, /* newer -chardev spicevmc */ - X_QEMU_CAPS_DEVICE_SPICEVMC, /* older -device spicevmc*/ QEMU_CAPS_VIRTIO_TX_ALG, /* -device virtio-net-pci,tx=string */ - X_QEMU_CAPS_DEVICE_QXL_VGA, /* primary qxl device named qxl-vga? */ - - /* 60 */ - X_QEMU_CAPS_PCI_MULTIFUNCTION, /* -device multifunction=on|off */ QEMU_CAPS_VIRTIO_IOEVENTFD, /* virtio-{net|blk}-pci.ioeventfd=on */ QEMU_CAPS_SGA, /* Serial Graphics Adapter */ QEMU_CAPS_VIRTIO_BLK_EVENT_IDX, /* virtio-blk-pci.event_idx */ QEMU_CAPS_VIRTIO_NET_EVENT_IDX, /* virtio-net-pci.event_idx */ - - /* 65 */ - X_QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, /* Is cache=directsync supported? */ QEMU_CAPS_PIIX3_USB_UHCI, /* -device piix3-usb-uhci */ QEMU_CAPS_PIIX4_USB_UHCI, /* -device piix4-usb-uhci */ QEMU_CAPS_USB_EHCI, /* -device usb-ehci */ @@ -148,45 +70,21 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_PCI_OHCI, /* -device pci-ohci */ QEMU_CAPS_USB_REDIR, /* -device usb-redir */ QEMU_CAPS_USB_HUB, /* -device usb-hub */ - X_QEMU_CAPS_NO_SHUTDOWN, /* usable -no-shutdown */ - - /* 75 */ - X_QEMU_CAPS_DRIVE_CACHE_UNSAFE, /* Is cache=unsafe supported? */ - X_QEMU_CAPS_PCI_ROMBAR, /* -device rombar=0|1 */ QEMU_CAPS_ICH9_AHCI, /* -device ich9-ahci */ QEMU_CAPS_NO_ACPI, /* -no-acpi */ - X_QEMU_CAPS_FSDEV_READONLY, /* -fsdev readonly supported */ /* 80 */ QEMU_CAPS_VIRTIO_BLK_SCSI, /* virtio-blk-pci.scsi */ - X_QEMU_CAPS_VIRTIO_BLK_SG_IO, /* SG_IO commands */ - X_QEMU_CAPS_DRIVE_COPY_ON_READ, /* -drive copy-on-read */ - X_QEMU_CAPS_CPU_HOST, /* support for -cpu host */ - X_QEMU_CAPS_FSDEV_WRITEOUT, /* -fsdev writeout supported */ - - /* 85 */ - X_QEMU_CAPS_DRIVE_IOTUNE, /* -drive bps= and friends */ - X_QEMU_CAPS_WAKEUP, /* system_wakeup monitor command */ QEMU_CAPS_SCSI_DISK_CHANNEL, /* Is scsi-disk.channel available? */ QEMU_CAPS_SCSI_BLOCK, /* -device scsi-block */ QEMU_CAPS_TRANSACTION, /* transaction monitor command */ - - /* 90 */ - X_QEMU_CAPS_BLOCKJOB_SYNC, /* old block_job_cancel, block_stream */ QEMU_CAPS_BLOCKJOB_ASYNC, /* new block-job-cancel, block-stream */ - X_QEMU_CAPS_SCSI_CD, /* -device scsi-cd */ - X_QEMU_CAPS_IDE_CD, /* -device ide-cd */ - X_QEMU_CAPS_NO_USER_CONFIG, /* -no-user-config */ /* 95 */ QEMU_CAPS_HDA_MICRO, /* -device hda-micro */ QEMU_CAPS_DUMP_GUEST_MEMORY, /* dump-guest-memory command */ QEMU_CAPS_NEC_USB_XHCI, /* -device nec-usb-xhci */ QEMU_CAPS_VIRTIO_S390, /* -device virtio-*-s390 */ - X_QEMU_CAPS_BALLOON_EVENT, /* Async event for balloon changes */ - - /* 100 */ - X_QEMU_CAPS_NETDEV_BRIDGE, /* bridge helper support */ QEMU_CAPS_SCSI_LSI, /* -device lsi */ QEMU_CAPS_VIRTIO_SCSI, /* -device virtio-scsi-* */ QEMU_CAPS_BLOCKIO, /* -device ...logical_block_size & co */ @@ -201,15 +99,11 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 110 */ QEMU_CAPS_REBOOT_TIMEOUT, /* -boot reboot-timeout */ - X_QEMU_CAPS_DUMP_GUEST_CORE, /* dump-guest-core-parameter */ - X_QEMU_CAPS_SEAMLESS_MIGRATION, /* seamless-migration for SPICE */ QEMU_CAPS_BLOCK_COMMIT, /* block-commit */ QEMU_CAPS_VNC, /* Is -vnc available? */ /* 115 */ QEMU_CAPS_DRIVE_MIRROR, /* drive-mirror monitor command */ - X_QEMU_CAPS_USB_REDIR_BOOTINDEX, /* usb-redir.bootindex */ - X_QEMU_CAPS_USB_HOST_BOOTINDEX, /* usb-host.bootindex */ QEMU_CAPS_DISK_SNAPSHOT, /* blockdev-snapshot-sync command */ QEMU_CAPS_DEVICE_QXL, /* -device qxl */ @@ -222,8 +116,6 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 125 */ QEMU_CAPS_DEVICE_USB_SERIAL, /* -device usb-serial */ - X_QEMU_CAPS_DEVICE_USB_NET, /* -device usb-net */ - X_QEMU_CAPS_ADD_FD, /* -add-fd */ QEMU_CAPS_NBD_SERVER, /* nbd-server-start QMP command */ QEMU_CAPS_DEVICE_VIRTIO_RNG, /* virtio-rng device */ @@ -231,13 +123,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_OBJECT_RNG_RANDOM, /* the rng-random backend for virtio rng */ QEMU_CAPS_OBJECT_RNG_EGD, /* EGD protocol daemon for rng */ QEMU_CAPS_VIRTIO_CCW, /* -device virtio-*-ccw */ - X_QEMU_CAPS_DTB, /* -dtb file */ QEMU_CAPS_SCSI_MEGASAS, /* -device megasas */ - - /* 135 */ - X_QEMU_CAPS_IPV6_MIGRATION, /* -incoming [::] */ - X_QEMU_CAPS_MACHINE_OPT, /* -machine xxxx*/ - X_QEMU_CAPS_MACHINE_USB_OPT, /* -machine xxx,usb=on/off */ QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, /* -tpmdev passthrough */ QEMU_CAPS_DEVICE_TPM_TIS, /* -device tpm_tis */ @@ -245,19 +131,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_DEVICE_NVRAM, /* -global spapr-nvram.reg=xxxx */ QEMU_CAPS_DEVICE_PCI_BRIDGE, /* -device pci-bridge */ QEMU_CAPS_DEVICE_VFIO_PCI, /* -device vfio-pci */ - X_QEMU_CAPS_VFIO_PCI_BOOTINDEX, /* bootindex param for vfio-pci device */ - X_QEMU_CAPS_DEVICE_SCSI_GENERIC, /* -device scsi-generic */ - - /* 145 */ - X_QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX, /* -device scsi-generic.bootindex */ QEMU_CAPS_MEM_MERGE, /* -machine mem-merge */ - X_QEMU_CAPS_VNC_WEBSOCKET, /* -vnc x:y,websocket */ QEMU_CAPS_DRIVE_DISCARD, /* -drive discard=off(ignore)|on(unmap) */ QEMU_CAPS_REALTIME_MLOCK, /* -realtime mlock=on|off */ - - /* 150 */ - X_QEMU_CAPS_VNC_SHARE_POLICY, /* set display sharing policy */ - X_QEMU_CAPS_DEVICE_DEL_EVENT, /* DEVICE_DELETED event */ QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, /* -device i82801b11-bridge */ QEMU_CAPS_I440FX_PCI_HOLE64_SIZE, /* i440FX-pcihost.pci-hole64-size */ QEMU_CAPS_Q35_PCI_HOLE64_SIZE, /* q35-pcihost.pci-hole64-size */ @@ -274,11 +150,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_DEVICE_PANIC, /* -device pvpanic */ QEMU_CAPS_ENABLE_FIPS, /* -enable-fips */ QEMU_CAPS_SPICE_FILE_XFER_DISABLE, /* -spice disable-agent-file-xfer */ - X_QEMU_CAPS_CHARDEV_SPICEPORT, /* -chardev spiceport */ /* 165 */ QEMU_CAPS_DEVICE_USB_KBD, /* -device usb-kbd */ - X_QEMU_CAPS_HOST_PCI_MULTIDOMAIN, /* support domain > 0 in host pci address */ QEMU_CAPS_MSG_TIMESTAMP, /* -msg timestamp */ QEMU_CAPS_ACTIVE_COMMIT, /* block-commit works without 'top' */ QEMU_CAPS_CHANGE_BACKING_FILE, /* change name of backing file in metadata */ @@ -356,20 +230,15 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 220 */ QEMU_CAPS_DEVICE_PXB_PCIE, /* -device pxb-pcie */ - X_QEMU_CAPS_DEVICE_TRAY_MOVED, /* DEVICE_TRAY_MOVED event */ QEMU_CAPS_NEC_USB_XHCI_PORTS, /* -device nec-usb-xhci.p3 ports setting */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD, /* virtio-scsi-{pci,ccw}.iothread */ QEMU_CAPS_NAME_GUEST, /* -name guest= */ /* 225 */ QEMU_CAPS_QXL_MAX_OUTPUTS, /* -device qxl,max-outputs= */ - X_QEMU_CAPS_QXL_VGA_MAX_OUTPUTS, /* -device qxl-vga,max-outputs= */ QEMU_CAPS_SPICE_UNIX, /* -spice unix */ QEMU_CAPS_DRIVE_DETECT_ZEROES, /* -drive detect-zeroes= */ QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */ - - /* 230 */ - X_QEMU_CAPS_DISPLAY, /* -display */ QEMU_CAPS_DEVICE_INTEL_IOMMU, /* -device intel-iommu */ QEMU_CAPS_MACHINE_SMM_OPT, /* -machine xxx,smm=on/off/auto */ QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, /* virtio-*pci.disable-legacy */ diff --git a/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml b/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml index 7a26e93aa4..a4912b40de 100644 --- a/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml +++ b/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml @@ -9,35 +9,16 @@ </vcpus> <qemuCaps> <flag name='kvm'/> - <flag name='mem-path'/> - <flag name='drive-serial'/> - <flag name='monitor-json'/> - <flag name='sdl'/> - <flag name='netdev'/> - <flag name='rtc'/> - <flag name='vhost-net'/> <flag name='no-hpet'/> - <flag name='no-kvm-pit'/> - <flag name='nodefconfig'/> - <flag name='boot-menu'/> - <flag name='fsdev'/> - <flag name='name-process'/> - <flag name='smbios-type'/> <flag name='spice'/> - <flag name='vga-none'/> - <flag name='boot-index'/> <flag name='hda-duplex'/> - <flag name='drive-aio'/> <flag name='ccid-emulated'/> <flag name='ccid-passthru'/> - <flag name='chardev-spicevmc'/> <flag name='virtio-tx-alg'/> - <flag name='pci-multifunction'/> <flag name='virtio-blk-pci.ioeventfd'/> <flag name='sga'/> <flag name='virtio-blk-pci.event_idx'/> <flag name='virtio-net-pci.event_idx'/> - <flag name='cache-directsync'/> <flag name='piix3-usb-uhci'/> <flag name='piix4-usb-uhci'/> <flag name='usb-ehci'/> @@ -46,28 +27,16 @@ <flag name='pci-ohci'/> <flag name='usb-redir'/> <flag name='usb-hub'/> - <flag name='no-shutdown'/> - <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> <flag name='no-acpi'/> - <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> - <flag name='drive-copy-on-read'/> - <flag name='fsdev-writeout'/> - <flag name='drive-iotune'/> - <flag name='system_wakeup'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> <flag name='transaction'/> <flag name='block-job-async'/> - <flag name='scsi-cd'/> - <flag name='ide-cd'/> - <flag name='no-user-config'/> <flag name='hda-micro'/> <flag name='dump-guest-memory'/> <flag name='nec-usb-xhci'/> - <flag name='balloon-event'/> - <flag name='bridge'/> <flag name='lsi'/> <flag name='virtio-scsi-pci'/> <flag name='blockio'/> @@ -78,13 +47,9 @@ <flag name='scsi-disk.wwn'/> <flag name='seccomp-sandbox'/> <flag name='reboot-timeout'/> - <flag name='dump-guest-core'/> - <flag name='seamless-migration'/> <flag name='block-commit'/> <flag name='vnc'/> <flag name='drive-mirror'/> - <flag name='usb-redir.bootindex'/> - <flag name='usb-host.bootindex'/> <flag name='blockdev-snapshot-sync'/> <flag name='qxl'/> <flag name='VGA'/> @@ -92,30 +57,18 @@ <flag name='vmware-svga'/> <flag name='device-video-primary'/> <flag name='usb-serial'/> - <flag name='usb-net'/> - <flag name='add-fd'/> <flag name='nbd-server'/> <flag name='virtio-rng'/> <flag name='rng-random'/> <flag name='rng-egd'/> - <flag name='dtb'/> <flag name='megasas'/> - <flag name='ipv6-migration'/> - <flag name='machine-opt'/> - <flag name='machine-usb-opt'/> <flag name='tpm-passthrough'/> <flag name='tpm-tis'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='vfio-pci.bootindex'/> - <flag name='scsi-generic'/> - <flag name='scsi-generic.bootindex'/> <flag name='mem-merge'/> - <flag name='vnc-websocket'/> <flag name='drive-discard'/> <flag name='mlock'/> - <flag name='vnc-share-policy'/> - <flag name='device-del-event'/> <flag name='dmi-to-pci-bridge'/> <flag name='i440fx-pci-hole64-size'/> <flag name='q35-pci-hole64-size'/> @@ -127,9 +80,7 @@ <flag name='boot-strict'/> <flag name='pvpanic'/> <flag name='spice-file-xfer-disable'/> - <flag name='spiceport'/> <flag name='usb-kbd'/> - <flag name='host-pci-multidomain'/> <flag name='msg-timestamp'/> <flag name='active-commit'/> <flag name='change-backing-file'/> @@ -179,7 +130,6 @@ <flag name='secret'/> <flag name='pxb'/> <flag name='pxb-pcie'/> - <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> <flag name='virtio-scsi-pci.iothread'/> <flag name='name-guest'/> @@ -187,7 +137,6 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> - <flag name='display'/> <flag name='intel-iommu'/> <flag name='smm'/> <flag name='virtio-pci-disable-legacy'/> diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml index 315d8e4c1a..4ef575eddc 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml @@ -7,35 +7,16 @@ </vcpus> <qemuCaps> <flag name='kvm'/> - <flag name='mem-path'/> - <flag name='drive-serial'/> - <flag name='monitor-json'/> - <flag name='sdl'/> - <flag name='netdev'/> - <flag name='rtc'/> - <flag name='vhost-net'/> <flag name='no-hpet'/> - <flag name='no-kvm-pit'/> - <flag name='nodefconfig'/> - <flag name='boot-menu'/> - <flag name='fsdev'/> - <flag name='name-process'/> - <flag name='smbios-type'/> <flag name='spice'/> - <flag name='vga-none'/> - <flag name='boot-index'/> <flag name='hda-duplex'/> - <flag name='drive-aio'/> <flag name='ccid-emulated'/> <flag name='ccid-passthru'/> - <flag name='chardev-spicevmc'/> <flag name='virtio-tx-alg'/> - <flag name='pci-multifunction'/> <flag name='virtio-blk-pci.ioeventfd'/> <flag name='sga'/> <flag name='virtio-blk-pci.event_idx'/> <flag name='virtio-net-pci.event_idx'/> - <flag name='cache-directsync'/> <flag name='piix3-usb-uhci'/> <flag name='piix4-usb-uhci'/> <flag name='usb-ehci'/> @@ -44,28 +25,16 @@ <flag name='pci-ohci'/> <flag name='usb-redir'/> <flag name='usb-hub'/> - <flag name='no-shutdown'/> - <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> <flag name='no-acpi'/> - <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> - <flag name='drive-copy-on-read'/> - <flag name='fsdev-writeout'/> - <flag name='drive-iotune'/> - <flag name='system_wakeup'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> <flag name='transaction'/> <flag name='block-job-async'/> - <flag name='scsi-cd'/> - <flag name='ide-cd'/> - <flag name='no-user-config'/> <flag name='hda-micro'/> <flag name='dump-guest-memory'/> <flag name='nec-usb-xhci'/> - <flag name='balloon-event'/> - <flag name='bridge'/> <flag name='lsi'/> <flag name='virtio-scsi-pci'/> <flag name='blockio'/> @@ -76,13 +45,9 @@ <flag name='scsi-disk.wwn'/> <flag name='seccomp-sandbox'/> <flag name='reboot-timeout'/> - <flag name='dump-guest-core'/> - <flag name='seamless-migration'/> <flag name='block-commit'/> <flag name='vnc'/> <flag name='drive-mirror'/> - <flag name='usb-redir.bootindex'/> - <flag name='usb-host.bootindex'/> <flag name='blockdev-snapshot-sync'/> <flag name='qxl'/> <flag name='VGA'/> @@ -90,30 +55,18 @@ <flag name='vmware-svga'/> <flag name='device-video-primary'/> <flag name='usb-serial'/> - <flag name='usb-net'/> - <flag name='add-fd'/> <flag name='nbd-server'/> <flag name='virtio-rng'/> <flag name='rng-random'/> <flag name='rng-egd'/> - <flag name='dtb'/> <flag name='megasas'/> - <flag name='ipv6-migration'/> - <flag name='machine-opt'/> - <flag name='machine-usb-opt'/> <flag name='tpm-passthrough'/> <flag name='tpm-tis'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='vfio-pci.bootindex'/> - <flag name='scsi-generic'/> - <flag name='scsi-generic.bootindex'/> <flag name='mem-merge'/> - <flag name='vnc-websocket'/> <flag name='drive-discard'/> <flag name='mlock'/> - <flag name='vnc-share-policy'/> - <flag name='device-del-event'/> <flag name='dmi-to-pci-bridge'/> <flag name='i440fx-pci-hole64-size'/> <flag name='q35-pci-hole64-size'/> @@ -125,9 +78,7 @@ <flag name='boot-strict'/> <flag name='pvpanic'/> <flag name='spice-file-xfer-disable'/> - <flag name='spiceport'/> <flag name='usb-kbd'/> - <flag name='host-pci-multidomain'/> <flag name='msg-timestamp'/> <flag name='active-commit'/> <flag name='change-backing-file'/> @@ -177,7 +128,6 @@ <flag name='secret'/> <flag name='pxb'/> <flag name='pxb-pcie'/> - <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> <flag name='virtio-scsi-pci.iothread'/> <flag name='name-guest'/> @@ -185,7 +135,6 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> - <flag name='display'/> <flag name='intel-iommu'/> <flag name='smm'/> <flag name='virtio-pci-disable-legacy'/> -- 2.19.2

To be squashed into the previous patch. Best viewed with --patience --- src/qemu/qemu_capabilities.c | 177 ++++++++++++++++++----------------- src/qemu/qemu_capabilities.h | 177 ++++++++++++++++++----------------- 2 files changed, 180 insertions(+), 174 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 7b760d95b4..3bb4bfbbf2 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -63,333 +63,336 @@ VIR_LOG_INIT("qemu.qemu_capabilities"); * daemon restarts */ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, + /* 0 */ "kvm", "no-hpet", "spice", - - /* 50 */ "hda-duplex", "ccid-emulated", - /* 55 */ + /* 5 */ "ccid-passthru", "virtio-tx-alg", "virtio-blk-pci.ioeventfd", "sga", "virtio-blk-pci.event_idx", + + /* 10 */ "virtio-net-pci.event_idx", "piix3-usb-uhci", "piix4-usb-uhci", "usb-ehci", "ich9-usb-ehci1", - /* 70 */ + /* 15 */ "vt82c686b-usb-uhci", "pci-ohci", "usb-redir", "usb-hub", "ich9-ahci", - "no-acpi", - /* 80 */ + /* 20 */ + "no-acpi", "virtio-blk-pci.scsi", "scsi-disk.channel", "scsi-block", "transaction", - "block-job-async", - /* 95 */ + /* 25 */ + "block-job-async", "hda-micro", "dump-guest-memory", "nec-usb-xhci", "virtio-s390", + + /* 30 */ "lsi", "virtio-scsi-pci", "blockio", "disable-s3", - - /* 105 */ "disable-s4", + + /* 35 */ "usb-redir.filter", "ide-drive.wwn", "scsi-disk.wwn", "seccomp-sandbox", - - /* 110 */ "reboot-timeout", + + /* 40 */ "block-commit", "vnc", - - /* 115 */ "drive-mirror", "blockdev-snapshot-sync", "qxl", - /* 120 */ + /* 45 */ "VGA", "cirrus-vga", "vmware-svga", "device-video-primary", "s390-sclp", - /* 125 */ + /* 50 */ "usb-serial", "nbd-server", "virtio-rng", - - /* 130 */ "rng-random", "rng-egd", + + /* 55 */ "virtio-ccw", "megasas", "tpm-passthrough", "tpm-tis", - - /* 140 */ "nvram", + + /* 60 */ "pci-bridge", "vfio-pci", "mem-merge", "drive-discard", "mlock", + + /* 65 */ "dmi-to-pci-bridge", "i440fx-pci-hole64-size", "q35-pci-hole64-size", - - /* 155 */ "usb-storage", "usb-storage.removable", + + /* 70 */ "virtio-mmio", "ich9-intel-hda", "kvm-pit-lost-tick-policy", - - /* 160 */ "boot-strict", "pvpanic", + + /* 75 */ "enable-fips", "spice-file-xfer-disable", - - /* 165 */ "usb-kbd", "msg-timestamp", "active-commit", - "change-backing-file", - /* 170 */ + /* 80 */ + "change-backing-file", "memory-backend-ram", "numa", "memory-backend-file", "usb-audio", - "rtc-reset-reinjection", - /* 175 */ + /* 85 */ + "rtc-reset-reinjection", "splash-timeout", "iothread", "migrate-rdma", "ivshmem", - "drive-iotune-max", - /* 180 */ + /* 90 */ + "drive-iotune-max", "VGA.vgamem_mb", "vmware-svga.vgamem_mb", "qxl.vgamem_mb", "qxl-vga.vgamem_mb", - "pc-dimm", - /* 185 */ + /* 95 */ + "pc-dimm", "machine-vmport-opt", "aes-key-wrap", "dea-key-wrap", "pci-serial", - "aarch64-off", - /* 190 */ + /* 100 */ + "aarch64-off", "vhost-user-multiqueue", "migration-event", "gpex-pcihost", "ioh3420", - "x3130-upstream", - /* 195 */ + /* 105 */ + "x3130-upstream", "xio3130-downstream", "rtl8139", "e1000", "virtio-net", - "gic-version", - /* 200 */ + /* 110 */ + "gic-version", "incoming-defer", "virtio-gpu", "virtio-gpu.virgl", "virtio-keyboard", - "virtio-mouse", - /* 205 */ + /* 115 */ + "virtio-mouse", "virtio-tablet", "virtio-input-host", "chardev-file-append", "ich9-disable-s3", - "ich9-disable-s4", - /* 210 */ + /* 120 */ + "ich9-disable-s4", "vserport-change-event", "virtio-balloon-pci.deflate-on-oom", "mptsas1068", "spice-gl", - "qxl.vram64_size_mb", - /* 215 */ + /* 125 */ + "qxl.vram64_size_mb", "qxl-vga.vram64_size_mb", "chardev-logfile", "debug-threads", "secret", - "pxb", - /* 220 */ + /* 130 */ + "pxb", "pxb-pcie", "nec-usb-xhci-ports", "virtio-scsi-pci.iothread", "name-guest", - /* 225 */ + /* 135 */ "qxl.max_outputs", "spice-unix", "drive-detect-zeroes", "tls-creds-x509", "intel-iommu", + + /* 140 */ "smm", "virtio-pci-disable-legacy", "query-hotpluggable-cpus", - - /* 235 */ "virtio-net.rx_queue_size", "machine-iommu", + + /* 145 */ "virtio-vga", "drive-iotune-max-length", "ivshmem-plain", - - /* 240 */ "ivshmem-doorbell", "query-qmp-schema", + + /* 150 */ "gluster.debug_level", "vhost-scsi", "drive-iotune-group", - - /* 245 */ "query-cpu-model-expansion", "virtio-net.host_mtu", + + /* 155 */ "spice-rendernode", "nvdimm", "pcie-root-port", - - /* 250 */ "query-cpu-definitions", "block-write-threshold", + + /* 160 */ "query-named-block-nodes", "cpu-cache", "qemu-xhci", - - /* 255 */ "kernel-irqchip", "kernel-irqchip.split", + + /* 165 */ "intel-iommu.intremap", "intel-iommu.caching-mode", "intel-iommu.eim", - - /* 260 */ "intel-iommu.device-iotlb", "virtio.iommu_platform", + + /* 170 */ "virtio.ats", "loadparm", "spapr-pci-host-bridge", - - /* 265 */ "spapr-pci-host-bridge.numa_node", "vnc-multi-servers", + + /* 175 */ "virtio-net.tx_queue_size", "chardev-reconnect", "virtio-gpu.max_outputs", - - /* 270 */ "vxhs", "virtio-blk.num-queues", + + /* 180 */ "machine.pseries.resize-hpt", "vmcoreinfo", "spapr-vty", - - /* 275 */ "sclplmconsole", "numa.dist", + + /* 185 */ "disk-share-rw", "iscsi.password-secret", "isa-serial", - - /* 280 */ "pl011", "machine.pseries.max-cpu-compat", + + /* 190 */ "dump-completed", "virtio-gpu-ccw", "virtio-keyboard-ccw", - - /* 285 */ "virtio-mouse-ccw", "virtio-tablet-ccw", + + /* 195 */ "qcow2-luks", "pcie-pci-bridge", "seccomp-blacklist", - - /* 290 */ "query-cpus-fast", "disk-write-cache", + + /* 200 */ "nbd-tls", "tpm-crb", "pr-manager-helper", - - /* 295 */ "qom-list-properties", "memory-backend-file.discard-data", + + /* 205 */ "virtual-css-bridge", "virtual-css-bridge.cssid-unrestricted", "vfio-ccw", - - /* 300 */ "sdl-gl", "screendump_device", + + /* 210 */ "hda-output", "blockdev-del", "vmgenid", - - /* 305 */ "vhost-vsock", "chardev-fd-pass", + + /* 215 */ "tpm-emulator", "mch", "mch.extended-tseg-mbytes", - - /* 310 */ "sev-guest", "machine.pseries.cap-hpt-max-page-size", + + /* 220 */ "machine.pseries.cap-htm", "usb-storage.werror", "egl-headless", - - /* 315 */ "vfio-pci.display", "blockdev", + + /* 225 */ "vfio-ap", "zpci", "memory-backend-memfd", - - /* 320 */ "memory-backend-memfd.hugetlb", "iothread.poll-max-ns", + + /* 230 */ "machine.pseries.cap-nested-hv", "egl-headless.rendernode", "memory-backend-file.align", - - /* 325 */ "memory-backend-file.pmem", "nvdimm.unarmed", + + /* 235 */ "scsi-disk.device_id", ); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 32dc8ccc1e..7e373f8dcd 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -45,334 +45,337 @@ * X_ flags and re-group what's left. */ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ + /* 0 */ QEMU_CAPS_KVM, /* Whether KVM is usable / was used during probing */ QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ QEMU_CAPS_SPICE, /* Is -spice avail */ - - /* 50 */ QEMU_CAPS_HDA_DUPLEX, /* -device hda-duplex */ QEMU_CAPS_CCID_EMULATED, /* -device ccid-card-emulated */ - /* 55 */ + /* 5 */ QEMU_CAPS_CCID_PASSTHRU, /* -device ccid-card-passthru */ QEMU_CAPS_VIRTIO_TX_ALG, /* -device virtio-net-pci,tx=string */ QEMU_CAPS_VIRTIO_IOEVENTFD, /* virtio-{net|blk}-pci.ioeventfd=on */ QEMU_CAPS_SGA, /* Serial Graphics Adapter */ QEMU_CAPS_VIRTIO_BLK_EVENT_IDX, /* virtio-blk-pci.event_idx */ + + /* 10 */ QEMU_CAPS_VIRTIO_NET_EVENT_IDX, /* virtio-net-pci.event_idx */ QEMU_CAPS_PIIX3_USB_UHCI, /* -device piix3-usb-uhci */ QEMU_CAPS_PIIX4_USB_UHCI, /* -device piix4-usb-uhci */ QEMU_CAPS_USB_EHCI, /* -device usb-ehci */ QEMU_CAPS_ICH9_USB_EHCI1, /* -device ich9-usb-ehci1 and friends */ - /* 70 */ + /* 15 */ QEMU_CAPS_VT82C686B_USB_UHCI, /* -device vt82c686b-usb-uhci */ QEMU_CAPS_PCI_OHCI, /* -device pci-ohci */ QEMU_CAPS_USB_REDIR, /* -device usb-redir */ QEMU_CAPS_USB_HUB, /* -device usb-hub */ QEMU_CAPS_ICH9_AHCI, /* -device ich9-ahci */ - QEMU_CAPS_NO_ACPI, /* -no-acpi */ - /* 80 */ + /* 20 */ + QEMU_CAPS_NO_ACPI, /* -no-acpi */ QEMU_CAPS_VIRTIO_BLK_SCSI, /* virtio-blk-pci.scsi */ QEMU_CAPS_SCSI_DISK_CHANNEL, /* Is scsi-disk.channel available? */ QEMU_CAPS_SCSI_BLOCK, /* -device scsi-block */ QEMU_CAPS_TRANSACTION, /* transaction monitor command */ - QEMU_CAPS_BLOCKJOB_ASYNC, /* new block-job-cancel, block-stream */ - /* 95 */ + /* 25 */ + QEMU_CAPS_BLOCKJOB_ASYNC, /* new block-job-cancel, block-stream */ QEMU_CAPS_HDA_MICRO, /* -device hda-micro */ QEMU_CAPS_DUMP_GUEST_MEMORY, /* dump-guest-memory command */ QEMU_CAPS_NEC_USB_XHCI, /* -device nec-usb-xhci */ QEMU_CAPS_VIRTIO_S390, /* -device virtio-*-s390 */ + + /* 30 */ QEMU_CAPS_SCSI_LSI, /* -device lsi */ QEMU_CAPS_VIRTIO_SCSI, /* -device virtio-scsi-* */ QEMU_CAPS_BLOCKIO, /* -device ...logical_block_size & co */ QEMU_CAPS_PIIX_DISABLE_S3, /* -M pc S3 BIOS Advertisement on/off */ - - /* 105 */ QEMU_CAPS_PIIX_DISABLE_S4, /* -M pc S4 BIOS Advertisement on/off */ + + /* 35 */ QEMU_CAPS_USB_REDIR_FILTER, /* usb-redir.filter */ QEMU_CAPS_IDE_DRIVE_WWN, /* Is ide-drive.wwn available? */ QEMU_CAPS_SCSI_DISK_WWN, /* Is scsi-disk.wwn available? */ QEMU_CAPS_SECCOMP_SANDBOX, /* -sandbox */ - - /* 110 */ QEMU_CAPS_REBOOT_TIMEOUT, /* -boot reboot-timeout */ + + /* 40 */ QEMU_CAPS_BLOCK_COMMIT, /* block-commit */ QEMU_CAPS_VNC, /* Is -vnc available? */ - - /* 115 */ QEMU_CAPS_DRIVE_MIRROR, /* drive-mirror monitor command */ QEMU_CAPS_DISK_SNAPSHOT, /* blockdev-snapshot-sync command */ QEMU_CAPS_DEVICE_QXL, /* -device qxl */ - /* 120 */ + /* 45 */ QEMU_CAPS_DEVICE_VGA, /* -device VGA */ QEMU_CAPS_DEVICE_CIRRUS_VGA, /* -device cirrus-vga */ QEMU_CAPS_DEVICE_VMWARE_SVGA, /* -device vmware-svga */ QEMU_CAPS_DEVICE_VIDEO_PRIMARY, /* -device safe for primary video device */ QEMU_CAPS_DEVICE_SCLPCONSOLE, /* -device sclpconsole */ - /* 125 */ + /* 50 */ QEMU_CAPS_DEVICE_USB_SERIAL, /* -device usb-serial */ QEMU_CAPS_NBD_SERVER, /* nbd-server-start QMP command */ QEMU_CAPS_DEVICE_VIRTIO_RNG, /* virtio-rng device */ - - /* 130 */ QEMU_CAPS_OBJECT_RNG_RANDOM, /* the rng-random backend for virtio rng */ QEMU_CAPS_OBJECT_RNG_EGD, /* EGD protocol daemon for rng */ + + /* 55 */ QEMU_CAPS_VIRTIO_CCW, /* -device virtio-*-ccw */ QEMU_CAPS_SCSI_MEGASAS, /* -device megasas */ QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, /* -tpmdev passthrough */ QEMU_CAPS_DEVICE_TPM_TIS, /* -device tpm_tis */ - - /* 140 */ QEMU_CAPS_DEVICE_NVRAM, /* -global spapr-nvram.reg=xxxx */ + + /* 60 */ QEMU_CAPS_DEVICE_PCI_BRIDGE, /* -device pci-bridge */ QEMU_CAPS_DEVICE_VFIO_PCI, /* -device vfio-pci */ QEMU_CAPS_MEM_MERGE, /* -machine mem-merge */ QEMU_CAPS_DRIVE_DISCARD, /* -drive discard=off(ignore)|on(unmap) */ QEMU_CAPS_REALTIME_MLOCK, /* -realtime mlock=on|off */ + + /* 65 */ QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, /* -device i82801b11-bridge */ QEMU_CAPS_I440FX_PCI_HOLE64_SIZE, /* i440FX-pcihost.pci-hole64-size */ QEMU_CAPS_Q35_PCI_HOLE64_SIZE, /* q35-pcihost.pci-hole64-size */ - - /* 155 */ QEMU_CAPS_DEVICE_USB_STORAGE, /* -device usb-storage */ QEMU_CAPS_USB_STORAGE_REMOVABLE, /* usb-storage.removable */ + + /* 70 */ QEMU_CAPS_DEVICE_VIRTIO_MMIO, /* -device virtio-mmio */ QEMU_CAPS_DEVICE_ICH9_INTEL_HDA, /* -device ich9-intel-hda */ QEMU_CAPS_KVM_PIT_TICK_POLICY, /* kvm-pit.lost_tick_policy */ - - /* 160 */ QEMU_CAPS_BOOT_STRICT, /* -boot strict */ QEMU_CAPS_DEVICE_PANIC, /* -device pvpanic */ + + /* 75 */ QEMU_CAPS_ENABLE_FIPS, /* -enable-fips */ QEMU_CAPS_SPICE_FILE_XFER_DISABLE, /* -spice disable-agent-file-xfer */ - - /* 165 */ QEMU_CAPS_DEVICE_USB_KBD, /* -device usb-kbd */ QEMU_CAPS_MSG_TIMESTAMP, /* -msg timestamp */ QEMU_CAPS_ACTIVE_COMMIT, /* block-commit works without 'top' */ - QEMU_CAPS_CHANGE_BACKING_FILE, /* change name of backing file in metadata */ - /* 170 */ + /* 80 */ + QEMU_CAPS_CHANGE_BACKING_FILE, /* change name of backing file in metadata */ QEMU_CAPS_OBJECT_MEMORY_RAM, /* -object memory-backend-ram */ QEMU_CAPS_NUMA, /* newer -numa handling with disjoint cpu ranges */ QEMU_CAPS_OBJECT_MEMORY_FILE, /* -object memory-backend-file */ QEMU_CAPS_OBJECT_USB_AUDIO, /* usb-audio device support */ - QEMU_CAPS_RTC_RESET_REINJECTION, /* rtc-reset-reinjection monitor command */ - /* 175 */ + /* 85 */ + QEMU_CAPS_RTC_RESET_REINJECTION, /* rtc-reset-reinjection monitor command */ QEMU_CAPS_SPLASH_TIMEOUT, /* -boot splash-time */ QEMU_CAPS_OBJECT_IOTHREAD, /* -object iothread */ QEMU_CAPS_MIGRATE_RDMA, /* have rdma migration */ QEMU_CAPS_DEVICE_IVSHMEM, /* -device ivshmem */ - QEMU_CAPS_DRIVE_IOTUNE_MAX, /* -drive bps_max= and friends */ - /* 180 */ + /* 90 */ + QEMU_CAPS_DRIVE_IOTUNE_MAX, /* -drive bps_max= and friends */ QEMU_CAPS_VGA_VGAMEM, /* -device VGA.vgamem_mb */ QEMU_CAPS_VMWARE_SVGA_VGAMEM, /* -device vmware-svga.vgamem_mb */ QEMU_CAPS_QXL_VGAMEM, /* -device qxl.vgamem_mb */ X_QEMU_CAPS_QXL_VGA_VGAMEM, /* -device qxl-vga.vgamem_mb */ - QEMU_CAPS_DEVICE_PC_DIMM, /* pc-dimm device */ - /* 185 */ + /* 95 */ + QEMU_CAPS_DEVICE_PC_DIMM, /* pc-dimm device */ QEMU_CAPS_MACHINE_VMPORT_OPT, /* -machine xxx,vmport=on/off/auto */ QEMU_CAPS_AES_KEY_WRAP, /* -machine aes_key_wrap */ QEMU_CAPS_DEA_KEY_WRAP, /* -machine dea_key_wrap */ QEMU_CAPS_DEVICE_PCI_SERIAL, /* -device pci-serial */ - QEMU_CAPS_CPU_AARCH64_OFF, /* -cpu ...,aarch64=off */ - /* 190 */ + /* 100 */ + QEMU_CAPS_CPU_AARCH64_OFF, /* -cpu ...,aarch64=off */ QEMU_CAPS_VHOSTUSER_MULTIQUEUE, /* vhost-user with -netdev queues= */ QEMU_CAPS_MIGRATION_EVENT, /* MIGRATION event */ QEMU_CAPS_OBJECT_GPEX, /* have generic PCI host controller */ QEMU_CAPS_DEVICE_IOH3420, /* -device ioh3420 */ - QEMU_CAPS_DEVICE_X3130_UPSTREAM, /* -device x3130-upstream */ - /* 195 */ + /* 105 */ + 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_E1000, /* -device e1000 */ QEMU_CAPS_DEVICE_VIRTIO_NET, /* -device virtio-net-* */ - QEMU_CAPS_MACH_VIRT_GIC_VERSION, /* -machine virt,gic-version */ - /* 200 */ + /* 110 */ + QEMU_CAPS_MACH_VIRT_GIC_VERSION, /* -machine virt,gic-version */ 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} */ - /* 205 */ + /* 115 */ + 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} */ QEMU_CAPS_CHARDEV_FILE_APPEND, /* -chardev file,append=on|off */ QEMU_CAPS_ICH9_DISABLE_S3, /* -M q35 S3 BIOS Advertisement on/off */ - QEMU_CAPS_ICH9_DISABLE_S4, /* -M q35 S4 BIOS Advertisement on/off */ - /* 210 */ + /* 120 */ + QEMU_CAPS_ICH9_DISABLE_S4, /* -M q35 S4 BIOS Advertisement on/off */ QEMU_CAPS_VSERPORT_CHANGE, /* VSERPORT_CHANGE event */ QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE, /* virtio-balloon-{device,pci,ccw}. * deflate-on-oom */ QEMU_CAPS_SCSI_MPTSAS1068, /* -device mptsas1068 */ QEMU_CAPS_SPICE_GL, /* -spice gl */ - QEMU_CAPS_QXL_VRAM64, /* -device qxl.vram64_size_mb */ - /* 215 */ + /* 125 */ + QEMU_CAPS_QXL_VRAM64, /* -device qxl.vram64_size_mb */ X_QEMU_CAPS_QXL_VGA_VRAM64, /* -device qxl-vga.vram64_size_mb */ QEMU_CAPS_CHARDEV_LOGFILE, /* -chardev logfile=xxxx */ QEMU_CAPS_NAME_DEBUG_THREADS, /* Is -name debug-threads= available */ QEMU_CAPS_OBJECT_SECRET, /* -object secret */ - QEMU_CAPS_DEVICE_PXB, /* -device pxb */ - /* 220 */ + /* 130 */ + QEMU_CAPS_DEVICE_PXB, /* -device pxb */ QEMU_CAPS_DEVICE_PXB_PCIE, /* -device pxb-pcie */ QEMU_CAPS_NEC_USB_XHCI_PORTS, /* -device nec-usb-xhci.p3 ports setting */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD, /* virtio-scsi-{pci,ccw}.iothread */ QEMU_CAPS_NAME_GUEST, /* -name guest= */ - /* 225 */ + /* 135 */ QEMU_CAPS_QXL_MAX_OUTPUTS, /* -device qxl,max-outputs= */ QEMU_CAPS_SPICE_UNIX, /* -spice unix */ QEMU_CAPS_DRIVE_DETECT_ZEROES, /* -drive detect-zeroes= */ QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */ QEMU_CAPS_DEVICE_INTEL_IOMMU, /* -device intel-iommu */ + + /* 140 */ QEMU_CAPS_MACHINE_SMM_OPT, /* -machine xxx,smm=on/off/auto */ QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, /* virtio-*pci.disable-legacy */ QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS, /* qmp command query-hotpluggable-cpus */ - - /* 235 */ QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE, /* virtio-net-*.rx_queue_size */ QEMU_CAPS_MACHINE_IOMMU, /* -machine iommu=on */ + + /* 145 */ QEMU_CAPS_DEVICE_VIRTIO_VGA, /* -device virtio-vga */ QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH, /* -drive bps_max_length = and friends */ QEMU_CAPS_DEVICE_IVSHMEM_PLAIN, /* -device ivshmem-plain */ - - /* 240 */ QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL, /* -device ivshmem-doorbell */ QEMU_CAPS_QUERY_QMP_SCHEMA, /* query-qmp-schema command */ + + /* 150 */ QEMU_CAPS_GLUSTER_DEBUG_LEVEL, /* -drive gluster.debug_level={0..9} */ QEMU_CAPS_DEVICE_VHOST_SCSI, /* -device vhost-scsi-{ccw,pci} */ QEMU_CAPS_DRIVE_IOTUNE_GROUP, /* -drive throttling.group=<name> */ - - /* 245 */ QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION, /* qmp query-cpu-model-expansion */ QEMU_CAPS_VIRTIO_NET_HOST_MTU, /* virtio-net-*.host_mtu */ + + /* 155 */ QEMU_CAPS_SPICE_RENDERNODE, /* -spice rendernode */ QEMU_CAPS_DEVICE_NVDIMM, /* -device nvdimm */ QEMU_CAPS_DEVICE_PCIE_ROOT_PORT, /* -device pcie-root-port */ - - /* 250 */ QEMU_CAPS_QUERY_CPU_DEFINITIONS, /* qmp query-cpu-definitions */ QEMU_CAPS_BLOCK_WRITE_THRESHOLD, /* BLOCK_WRITE_THRESHOLD event */ + + /* 160 */ QEMU_CAPS_QUERY_NAMED_BLOCK_NODES, /* qmp query-named-block-nodes */ QEMU_CAPS_CPU_CACHE, /* -cpu supports host-cache-info and l3-cache properties */ QEMU_CAPS_DEVICE_QEMU_XHCI, /* -device qemu-xhci */ - - /* 255 */ QEMU_CAPS_MACHINE_KERNEL_IRQCHIP, /* -machine kernel_irqchip */ QEMU_CAPS_MACHINE_KERNEL_IRQCHIP_SPLIT, /* -machine kernel_irqchip=split */ + + /* 165 */ 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 */ - - /* 260 */ QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB, /* intel-iommu.device-iotlb */ QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM, /* virtio-*-pci.iommu_platform */ + + /* 170 */ QEMU_CAPS_VIRTIO_PCI_ATS, /* virtio-*-pci.ats */ QEMU_CAPS_LOADPARM, /* -machine loadparm */ QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, /* -device spapr-pci-host-bridge */ - - /* 265 */ QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE, /* spapr-pci-host-bridge.numa_node= */ QEMU_CAPS_VNC_MULTI_SERVERS, /* -vnc vnc=unix:/path */ + + /* 175 */ QEMU_CAPS_VIRTIO_NET_TX_QUEUE_SIZE, /* virtio-net-*.tx_queue_size */ QEMU_CAPS_CHARDEV_RECONNECT, /* -chardev reconnect */ QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS, /* -device virtio-(vga|gpu-*),max-outputs= */ - - /* 270 */ QEMU_CAPS_VXHS, /* -drive file.driver=vxhs via query-qmp-schema */ QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES, /* virtio-blk-*.num-queues */ + + /* 180 */ QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT, /* -machine pseries,resize-hpt */ QEMU_CAPS_DEVICE_VMCOREINFO, /* -device vmcoreinfo */ QEMU_CAPS_DEVICE_SPAPR_VTY, /* -device spapr-vty */ - - /* 275 */ QEMU_CAPS_DEVICE_SCLPLMCONSOLE, /* -device sclplmconsole */ QEMU_CAPS_NUMA_DIST, /* -numa dist */ + + /* 185 */ QEMU_CAPS_DISK_SHARE_RW, /* share-rw=on for concurrent disk access */ QEMU_CAPS_ISCSI_PASSWORD_SECRET, /* -drive file.driver=iscsi,...,password-secret= */ QEMU_CAPS_DEVICE_ISA_SERIAL, /* -device isa-serial */ - - /* 280 */ QEMU_CAPS_DEVICE_PL011, /* -device pl011 (not user-instantiable) */ QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT, /* -machine pseries,max-cpu-compat= */ + + /* 190 */ 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 */ - - /* 285 */ QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW, /* -device virtio-mouse-ccw */ QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW, /* -device virtio-tablet-ccw */ + + /* 195 */ QEMU_CAPS_QCOW2_LUKS, /* qcow2 format support LUKS encryption */ QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE, /* -device pcie-pci-bridge */ QEMU_CAPS_SECCOMP_BLACKLIST, /* -sandbox.elevateprivileges */ - - /* 290 */ QEMU_CAPS_QUERY_CPUS_FAST, /* query-cpus-fast command */ QEMU_CAPS_DISK_WRITE_CACHE, /* qemu block frontends support write-cache param */ + + /* 200 */ 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 */ - - /* 295 */ QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-file,discard-data */ + + /* 205 */ QEMU_CAPS_CCW, /* -device virtual-css-bridge */ QEMU_CAPS_CCW_CSSID_UNRESTRICTED, /* virtual-css-bridge.cssid-unrestricted= */ QEMU_CAPS_DEVICE_VFIO_CCW, /* -device vfio-ccw */ - - /* 300 */ QEMU_CAPS_SDL_GL, /* -sdl gl */ QEMU_CAPS_SCREENDUMP_DEVICE, /* screendump command accepts device & head */ + + /* 210 */ QEMU_CAPS_HDA_OUTPUT, /* -device hda-output */ QEMU_CAPS_BLOCKDEV_DEL, /* blockdev-del is supported */ QEMU_CAPS_DEVICE_VMGENID, /* -device vmgenid */ - - /* 305 */ QEMU_CAPS_DEVICE_VHOST_VSOCK, /* -device vhost-vsock-* */ QEMU_CAPS_CHARDEV_FD_PASS, /* Passing pre-opened FDs for chardevs */ + + /* 215 */ 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 */ - - /* 310 */ QEMU_CAPS_SEV_GUEST, /* -object sev-guest,... */ QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE, /* -machine pseries.cap-hpt-max-page-size */ + + /* 220 */ QEMU_CAPS_MACHINE_PSERIES_CAP_HTM, /* -machine pseries.cap-htm */ QEMU_CAPS_USB_STORAGE_WERROR, /* -device usb-storage,werror=..,rerror=.. */ QEMU_CAPS_EGL_HEADLESS, /* -display egl-headless */ - - /* 315 */ QEMU_CAPS_VFIO_PCI_DISPLAY, /* -device vfio-pci.display */ QEMU_CAPS_BLOCKDEV, /* -blockdev and blockdev-add are supported */ + + /* 225 */ QEMU_CAPS_DEVICE_VFIO_AP, /* -device vfio-ap */ QEMU_CAPS_DEVICE_ZPCI, /* -device zpci */ QEMU_CAPS_OBJECT_MEMORY_MEMFD, /* -object memory-backend-memfd */ - - /* 320 */ QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB, /* -object memory-backend-memfd.hugetlb */ QEMU_CAPS_IOTHREAD_POLLING, /* -object iothread.poll-max-ns */ + + /* 230 */ QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV, /* -machine pseries.cap-nested-hv */ QEMU_CAPS_EGL_HEADLESS_RENDERNODE, /* -display egl-headless,rendernode= */ QEMU_CAPS_OBJECT_MEMORY_FILE_ALIGN, /* -object memory-backend-file,align= */ - - /* 325 */ QEMU_CAPS_OBJECT_MEMORY_FILE_PMEM, /* -object memory-backend-file,pmem= */ QEMU_CAPS_DEVICE_NVDIMM_UNARMED, /* -device nvdimm,unarmed= */ + + /* 235 */ QEMU_CAPS_SCSI_DISK_DEVICE_ID, /* 'device_id' property of scsi disk */ QEMU_CAPS_LAST /* this must always be the last item */ -- 2.19.2
participants (4)
-
Daniel P. Berrangé
-
Erik Skultety
-
Ján Tomko
-
Michal Privoznik