[PATCH 3/3] qemu: capabilities: Re-enable JSON syntax for -device

Peter Krempa pkrempa at redhat.com
Fri Jan 14 16:32:30 UTC 2022


Now that qemu fixed device unplug when JSON syntax is used with -device
we can re-enable the feature.

Since the old capability string representation is condemned by
suggesting filtering it as a workaround we must introduce a new string.
To achieve this the original capability position is renamed to
X_QEMU_CAPS_DEVICE_JSON_BROKEN_HOTPLUG and a new position with the
original name QEMU_CAPS_DEVICE_JSON is introduced to prevent us having
to change the rest of the code.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---

Warning! patch truncated, see cover letter.

 src/qemu/qemu_capabilities.c                  |  6 ++-
 src/qemu/qemu_capabilities.h                  |  5 ++-
 .../caps_7.0.0.x86_64.xml                     |  1 +
 .../audio-alsa-best.x86_64-latest.args        |  4 +-
 .../audio-alsa-full.x86_64-latest.args        |  4 +-
 .../audio-alsa-minimal.x86_64-latest.args     |  4 +-
 .../audio-coreaudio-best.x86_64-latest.args   |  4 +-
 .../audio-coreaudio-full.x86_64-latest.args   |  4 +-
 ...audio-coreaudio-minimal.x86_64-latest.args |  4 +-
 ...udio-default-nographics.x86_64-latest.args |  4 +-
 .../audio-default-sdl.x86_64-latest.args      |  6 +--
 .../audio-default-spice.x86_64-latest.args    |  6 +--
 .../audio-default-vnc.x86_64-latest.args      |  6 +--
 .../audio-file-best.x86_64-latest.args        |  4 +-
 .../audio-file-full.x86_64-latest.args        |  4 +-
 .../audio-file-minimal.x86_64-latest.args     |  4 +-
 .../audio-jack-full.x86_64-latest.args        |  4 +-
 .../audio-jack-minimal.x86_64-latest.args     |  4 +-
 .../audio-many-backends.x86_64-latest.args    | 14 +++----
 .../audio-none-best.x86_64-latest.args        |  4 +-
 .../audio-none-full.x86_64-latest.args        |  4 +-
 .../audio-none-minimal.x86_64-latest.args     |  4 +-
 .../audio-oss-best.x86_64-latest.args         |  4 +-
 .../audio-oss-full.x86_64-latest.args         |  4 +-
 .../audio-oss-minimal.x86_64-latest.args      |  4 +-
 .../audio-pulseaudio-best.x86_64-latest.args  |  4 +-
 .../audio-pulseaudio-full.x86_64-latest.args  |  4 +-
 ...udio-pulseaudio-minimal.x86_64-latest.args |  4 +-
 .../audio-sdl-best.x86_64-latest.args         |  4 +-
 .../audio-sdl-full.x86_64-latest.args         |  4 +-
 .../audio-sdl-minimal.x86_64-latest.args      |  4 +-
 .../audio-spice-best.x86_64-latest.args       |  4 +-
 .../audio-spice-full.x86_64-latest.args       |  4 +-
 .../audio-spice-minimal.x86_64-latest.args    |  4 +-
 .../blkdeviotune-group-num.x86_64-latest.args |  8 ++--
 ...blkdeviotune-max-length.x86_64-latest.args |  8 ++--
 .../blkdeviotune-max.x86_64-latest.args       |  8 ++--
 .../blkdeviotune.x86_64-latest.args           |  8 ++--
 .../channel-unix-guestfwd.x86_64-latest.args  |  4 +-
 .../console-compat-auto.x86_64-latest.args    |  8 ++--
 .../console-compat-chardev.x86_64-latest.args |  8 ++--
 .../console-compat.x86_64-latest.args         |  6 +--
 .../console-virtio-unix.x86_64-latest.args    | 10 ++---
 .../controller-usb-order.x86_64-latest.args   |  8 ++--
 .../controller-virtio-scsi.x86_64-latest.args | 24 +++++------
 ...-Icelake-Server-pconfig.x86_64-latest.args |  4 +-
 .../cpu-host-model.x86_64-latest.args         | 10 ++---
 .../cpu-translation.x86_64-latest.args        |  4 +-
 .../cputune-cpuset-big-id.x86_64-latest.args  |  6 +--
 .../devices-acpi-index.x86_64-latest.args     | 16 +++----
 .../disk-aio-io_uring.x86_64-latest.args      |  6 +--
 .../disk-aio.x86_64-latest.args               |  8 ++--
 ...-backing-chains-noindex.x86_64-latest.args | 16 +++----
 .../disk-blockio.x86_64-latest.args           |  8 ++--
 .../disk-boot-cdrom.x86_64-latest.args        |  6 +--
 .../disk-boot-disk.x86_64-latest.args         |  6 +--
 .../disk-cache.x86_64-latest.args             | 14 +++----
 .../disk-cdrom-bus-other.x86_64-latest.args   |  6 +--
 ...m-empty-network-invalid.x86_64-latest.args |  4 +-
 .../disk-cdrom-network.x86_64-latest.args     | 10 ++---
 .../disk-cdrom-tray.x86_64-latest.args        | 10 ++---
 .../disk-cdrom.x86_64-latest.args             | 10 ++---
 .../disk-copy_on_read.x86_64-latest.args      | 12 +++---
 .../disk-detect-zeroes.x86_64-latest.args     |  8 ++--
 .../disk-discard.x86_64-latest.args           |  8 ++--
 .../disk-error-policy.x86_64-latest.args      |  8 ++--
 .../disk-floppy-q35.x86_64-latest.args        | 12 +++---
 .../disk-floppy-tray.x86_64-latest.args       | 10 ++---
 .../disk-floppy.x86_64-latest.args            |  8 ++--
 .../disk-fmt-qcow.x86_64-latest.args          |  6 +--
 .../disk-geometry.x86_64-latest.args          |  6 +--
 .../disk-ide-split.x86_64-latest.args         |  8 ++--
 .../disk-ide-wwn.x86_64-latest.args           |  6 +--
 .../disk-ioeventfd.x86_64-latest.args         | 12 +++---
 .../disk-metadata-cache.x86_64-latest.args    |  8 ++--
 .../disk-network-gluster.x86_64-latest.args   |  8 ++--
 .../disk-network-http.x86_64-latest.args      | 10 ++---
 .../disk-network-iscsi.x86_64-latest.args     | 18 ++++----
 .../disk-network-nbd.x86_64-latest.args       | 12 +++---
 .../disk-network-nfs.x86_64-latest.args       |  6 +--
 ...-network-rbd-encryption.x86_64-latest.args | 12 +++---
 ...sk-network-rbd-no-colon.x86_64-latest.args |  8 ++--
 .../disk-network-rbd.x86_64-latest.args       | 14 +++----
 ...isk-network-source-auth.x86_64-latest.args |  8 ++--
 ...isk-network-tlsx509-nbd.x86_64-latest.args |  4 +-
 .../disk-no-boot.x86_64-latest.args           |  8 ++--
 .../disk-nvme.x86_64-latest.args              | 12 +++---
 .../disk-order.x86_64-latest.args             | 12 +++---
 .../disk-readonly-disk.x86_64-latest.args     |  8 ++--
 .../disk-rotation.x86_64-latest.args          | 12 +++---
 .../disk-sata-device.x86_64-latest.args       |  8 ++--
 .../disk-scsi-device-auto.x86_64-latest.args  | 10 ++---
 .../disk-scsi-disk-split.x86_64-latest.args   | 20 ++++-----
 .../disk-scsi-disk-vpd.x86_64-latest.args     | 12 +++---
 .../disk-scsi-disk-wwn.x86_64-latest.args     | 12 +++---
 ...sk-scsi-lun-passthrough.x86_64-latest.args | 12 +++---
 .../disk-scsi.x86_64-latest.args              | 26 ++++++------
 .../disk-serial.x86_64-latest.args            |  8 ++--
 .../disk-shared.x86_64-latest.args            | 14 +++----
 .../disk-slices.x86_64-latest.args            | 14 +++----
 .../disk-snapshot.x86_64-latest.args          | 10 ++---
 .../disk-source-pool-mode.x86_64-latest.args  | 12 +++---
 .../disk-source-pool.x86_64-latest.args       | 14 +++----
 .../disk-transient.x86_64-latest.args         |  6 +--
 ...sk-usb-device-removable.x86_64-latest.args |  8 ++--
 .../disk-usb-device.x86_64-latest.args        |  8 ++--
 .../disk-vhostuser.x86_64-latest.args         |  8 ++--
 .../disk-virtio-queues.x86_64-latest.args     |  8 ++--
 ...irtio-scsi-reservations.x86_64-latest.args | 10 ++---
 .../disk-virtio.x86_64-latest.args            | 10 ++---
 .../encrypted-disk-usage.x86_64-latest.args   |  6 +--
 .../encrypted-disk.x86_64-latest.args         |  6 +--
 .../eoi-disabled.x86_64-latest.args           |  4 +-
 .../eoi-enabled.x86_64-latest.args            |  4 +-
 .../event_idx.x86_64-latest.args              | 12 +++---
 ...d-memory-numa-topology4.x86_64-latest.args |  4 +-
 .../fips-enabled.x86_64-latest.args           |  6 +--
 .../floppy-drive-fat.x86_64-latest.args       |  6 +--
 .../qemuxml2argvdata/fs9p.x86_64-latest.args  |  6 +--
 .../genid-auto.x86_64-latest.args             |  4 +-
 .../qemuxml2argvdata/genid.x86_64-latest.args |  4 +-
 ...egl-headless-rendernode.x86_64-latest.args |  6 +--
 .../graphics-egl-headless.x86_64-latest.args  |  6 +--
 ...s-spice-agent-file-xfer.x86_64-latest.args |  8 ++--
 ...aphics-spice-agentmouse.x86_64-latest.args | 10 ++---
 ...s-spice-auto-socket-cfg.x86_64-latest.args |  4 +-
 ...phics-spice-auto-socket.x86_64-latest.args |  4 +-
 ...phics-spice-compression.x86_64-latest.args |  8 ++--
 ...hics-spice-egl-headless.x86_64-latest.args |  6 +--
 ...pice-gl-auto-rendernode.x86_64-latest.args |  6 +--
 .../graphics-spice-no-args.x86_64-latest.args |  6 +--
 .../graphics-spice-qxl-vga.x86_64-latest.args |  8 ++--
 .../graphics-spice-sasl.x86_64-latest.args    |  6 +--
 .../graphics-spice-socket.x86_64-latest.args  |  4 +-
 .../graphics-spice-timeout.x86_64-latest.args | 14 +++----
 ...raphics-spice-usb-redir.x86_64-latest.args | 16 +++----
 .../graphics-spice.x86_64-latest.args         |  8 ++--
 ...ics-vnc-auto-socket-cfg.x86_64-latest.args |  6 +--
 ...raphics-vnc-auto-socket.x86_64-latest.args |  4 +-
 ...aphics-vnc-egl-headless.x86_64-latest.args |  6 +--
 ...hics-vnc-no-listen-attr.x86_64-latest.args |  6 +--
 .../graphics-vnc-none.x86_64-latest.args      |  4 +-
 .../graphics-vnc-policy.x86_64-latest.args    |  6 +--
 .../graphics-vnc-power.x86_64-latest.args     |  6 +--
 ...remove-generated-socket.x86_64-latest.args |  6 +--
 .../graphics-vnc-sasl.x86_64-latest.args      |  6 +--
 ...-vnc-socket-new-cmdline.x86_64-latest.args |  4 +-
 .../graphics-vnc-socket.x86_64-latest.args    |  4 +-
 ...graphics-vnc-tls-secret.x86_64-latest.args |  4 +-
 .../graphics-vnc-tls.x86_64-latest.args       |  4 +-
 .../graphics-vnc-websocket.x86_64-latest.args |  4 +-
 .../graphics-vnc.x86_64-latest.args           |  6 +--
 ...tdev-mdev-display-ramfb.x86_64-latest.args |  8 ++--
 ...play-spice-egl-headless.x86_64-latest.args |  6 +--
 ...ev-display-spice-opengl.x86_64-latest.args |  6 +--
 ...isplay-vnc-egl-headless.x86_64-latest.args |  6 +--
 ...ostdev-mdev-display-vnc.x86_64-latest.args |  6 +--
 .../hostdev-scsi-lsi.x86_64-latest.args       | 20 ++++-----
 ...ostdev-scsi-virtio-scsi.x86_64-latest.args | 22 +++++-----
 .../hugepages-memaccess3.x86_64-latest.args   |  2 +-
 .../hugepages-nvdimm.x86_64-latest.args       |  4 +-
 .../hyperv-off.x86_64-latest.args             |  4 +-
 .../hyperv-panic.x86_64-latest.args           |  2 +-
 .../hyperv-passthrough.x86_64-latest.args     |  2 +-
 .../hyperv-stimer-direct.x86_64-latest.args   |  2 +-
 .../hyperv.x86_64-latest.args                 |  2 +-
 .../input-linux.x86_64-latest.args            |  4 +-
 .../intel-iommu-aw-bits.x86_64-latest.args    |  2 +-
 ...ntel-iommu-caching-mode.x86_64-latest.args |  2 +-
 ...ntel-iommu-device-iotlb.x86_64-latest.args |  2 +-
 .../intel-iommu-eim.x86_64-latest.args        |  2 +-
 .../intel-iommu.x86_64-latest.args            |  2 +-
 ...threads-virtio-scsi-pci.x86_64-latest.args | 10 ++---
 .../kvmclock+eoi-disabled.x86_64-latest.args  |  4 +-
 ...nch-security-sev-direct.x86_64-latest.args |  4 +-
 ...luks-disks-source-qcow2.x86_64-latest.args | 16 +++----
 .../luks-disks-source.x86_64-latest.args      | 14 +++----
 .../luks-disks.x86_64-latest.args             |  8 ++--
 ...memory-default-hugepage.x86_64-latest.args |  4 +-
 .../memfd-memory-numa.x86_64-latest.args      |  6 +--
 ...y-hotplug-nvdimm-access.x86_64-latest.args |  8 ++--
 ...ry-hotplug-nvdimm-align.x86_64-latest.args |  8 ++--
 ...ry-hotplug-nvdimm-label.x86_64-latest.args |  8 ++--
 ...ory-hotplug-nvdimm-pmem.x86_64-latest.args |  8 ++--
 ...hotplug-nvdimm-readonly.x86_64-latest.args |  8 ++--
 .../memory-hotplug-nvdimm.x86_64-latest.args  |  8 ++--
 ...mory-hotplug-virtio-mem.x86_64-latest.args | 10 ++---
 ...ory-hotplug-virtio-pmem.x86_64-latest.args |  8 ++--
 .../misc-no-reboot.x86_64-latest.args         |  4 +-
 .../mlock-off.x86_64-latest.args              |  2 +-
 .../mlock-on.x86_64-latest.args               |  2 +-
 .../name-escape.x86_64-latest.args            | 20 ++++-----
 .../net-vdpa.x86_64-latest.args               |  4 +-
 .../net-vhostuser.x86_64-latest.args          |  8 ++--
 .../numatune-hmat.x86_64-latest.args          |  4 +-
 ...emnode-restrictive-mode.x86_64-latest.args |  4 +-
 .../numatune-memnode.x86_64-latest.args       |  4 +-
 .../numatune-system-memory.x86_64-latest.args |  2 +-
 .../os-firmware-bios.x86_64-latest.args       | 16 +++----
 ...re-efi-no-enrolled-keys.x86_64-latest.args |  6 +--
 ...os-firmware-efi-secboot.x86_64-latest.args | 16 +++----
 .../os-firmware-efi.x86_64-latest.args        | 16 +++----
 .../panic-double.x86_64-latest.args           |  4 +-
 .../panic-no-address.x86_64-latest.args       |  8 ++--
 .../qemuxml2argvdata/panic.x86_64-latest.args |  8 ++--
 ...arallel-parport-chardev.x86_64-latest.args |  8 ++--
 .../parallel-tcp-chardev.x86_64-latest.args   |  8 ++--
 .../parallel-unix-chardev.x86_64-latest.args  |  8 ++--
 ...pi-root-hotplug-disable.x86_64-latest.args |  4 +-
 ...cpi-root-hotplug-enable.x86_64-latest.args |  4 +-
 .../pci-serial-dev-chardev.x86_64-latest.args |  8 ++--
 ...cie-root-port-nohotplug.x86_64-latest.args | 18 ++++----
 .../pv-spinlock-disabled.x86_64-latest.args   |  4 +-
 .../pv-spinlock-enabled.x86_64-latest.args    |  4 +-
 .../qemu-ns.x86_64-latest.args                |  6 +--
 ...rial-dev-chardev-iobase.x86_64-latest.args |  8 ++--
 .../serial-dev-chardev.x86_64-latest.args     |  8 ++--
 .../serial-file-chardev.x86_64-latest.args    |  8 ++--
 .../serial-file-log.x86_64-latest.args        |  6 +--
 .../serial-many-chardev.x86_64-latest.args    | 10 ++---
 .../serial-pty-chardev.x86_64-latest.args     |  8 ++--
 ...erial-spiceport-nospice.x86_64-latest.args |  6 +--
 .../serial-spiceport.x86_64-latest.args       | 12 +++---
 .../serial-tcp-chardev.x86_64-latest.args     |  8 ++--
 ...rial-tcp-telnet-chardev.x86_64-latest.args |  8 ++--
 ...p-tlsx509-chardev-notls.x86_64-latest.args | 10 ++---
 ...-tlsx509-chardev-verify.x86_64-latest.args | 10 ++---
 ...ial-tcp-tlsx509-chardev.x86_64-latest.args | 10 ++---
 ...-tlsx509-secret-chardev.x86_64-latest.args | 10 ++---
 .../serial-udp-chardev.x86_64-latest.args     | 10 ++---
 .../serial-unix-chardev.x86_64-latest.args    |  8 ++--
 .../serial-vc-chardev.x86_64-latest.args      |  8 ++--
 ...rtcard-passthrough-unix.x86_64-latest.args |  8 ++--
 .../tpm-emulator-tpm2-enc.x86_64-latest.args  |  6 +--
 ...pm-emulator-tpm2-pstate.x86_64-latest.args |  6 +--
 .../tpm-emulator-tpm2.x86_64-latest.args      |  6 +--
 .../tpm-emulator.x86_64-latest.args           |  6 +--
 .../tpm-passthrough-crb.x86_64-latest.args    |  6 +--
 .../tpm-passthrough.x86_64-latest.args        |  6 +--
 .../tseg-explicit-size.x86_64-latest.args     | 10 ++---
 .../usb-redir-unix.x86_64-latest.args         | 14 +++----
 ...vhost-user-fs-fd-memory.x86_64-latest.args |  2 +-
 ...vhost-user-fs-hugepages.x86_64-latest.args | 12 +++---
 ...host-user-gpu-secondary.x86_64-latest.args | 10 ++---
 .../vhost-user-vga.x86_64-latest.args         |  8 ++--
 .../vhost-vsock-auto.x86_64-latest.args       |  6 +--
 .../vhost-vsock.x86_64-latest.args            |  6 +--
 ...eo-bochs-display-device.x86_64-latest.args |  8 ++--
 ...video-qxl-device-vram64.x86_64-latest.args |  6 +--
 ...o-qxl-sec-device-vram64.x86_64-latest.args |  8 ++--
 ...eo-ramfb-display-device.x86_64-latest.args |  8 ++--
 ...video-virtio-vga-gpu-gl.x86_64-latest.args |  8 ++--
 .../virtio-9p-createmode.x86_64-latest.args   | 14 +++----
 .../virtio-9p-multidevs.x86_64-latest.args    | 12 +++---
 .../virtio-lun.x86_64-latest.args             | 12 +++---
 ...virtio-non-transitional.x86_64-latest.args | 42 +++++++++----------
 ...-options-controller-ats.x86_64-latest.args | 12 +++---
 ...ptions-controller-iommu.x86_64-latest.args | 12 +++---
 ...tions-controller-packed.x86_64-latest.args | 12 +++---
 ...virtio-options-disk-ats.x86_64-latest.args |  8 ++--
 ...rtio-options-disk-iommu.x86_64-latest.args |  8 ++--
 ...tio-options-disk-packed.x86_64-latest.args |  8 ++--
 .../virtio-options-fs-ats.x86_64-latest.args  |  8 ++--
 ...virtio-options-fs-iommu.x86_64-latest.args |  8 ++--
 ...irtio-options-fs-packed.x86_64-latest.args |  8 ++--
 ...irtio-options-input-ats.x86_64-latest.args |  8 ++--
 ...tio-options-input-iommu.x86_64-latest.args |  8 ++--
 ...io-options-input-packed.x86_64-latest.args |  8 ++--
 ...-options-memballoon-ats.x86_64-latest.args |  4 +-
 ...loon-freepage-reporting.x86_64-latest.args |  4 +-
 ...ptions-memballoon-iommu.x86_64-latest.args |  4 +-
 ...tions-memballoon-packed.x86_64-latest.args |  4 +-
 .../virtio-options-net-ats.x86_64-latest.args |  8 ++--
 ...irtio-options-net-iommu.x86_64-latest.args |  8 ++--
 ...rtio-options-net-packed.x86_64-latest.args |  8 ++--
 .../virtio-options-rng-ats.x86_64-latest.args |  8 ++--
 ...irtio-options-rng-iommu.x86_64-latest.args |  8 ++--
 ...rtio-options-rng-packed.x86_64-latest.args |  8 ++--
 ...irtio-options-video-ats.x86_64-latest.args |  8 ++--
 ...tio-options-video-iommu.x86_64-latest.args |  8 ++--
 ...io-options-video-packed.x86_64-latest.args |  8 ++--
 .../virtio-options.x86_64-latest.args         | 28 ++++++-------
 .../virtio-rng-builtin.x86_64-latest.args     |  6 +--
 .../virtio-rng-egd-unix.x86_64-latest.args    |  6 +--
 .../virtio-transitional.x86_64-latest.args    | 26 ++++++------
 .../watchdog-device.x86_64-latest.args        |  8 ++--
 .../watchdog-dump.x86_64-latest.args          |  8 ++--
 .../watchdog-injectnmi.x86_64-latest.args     |  8 ++--
 .../watchdog.x86_64-latest.args               |  6 +--
 ...-default-cpu-kvm-pc-4.2.x86_64-latest.args |  6 +--
 ...default-cpu-kvm-q35-4.2.x86_64-latest.args | 14 +++----
 ...efault-cpu-tcg-features.x86_64-latest.args | 10 ++---
 ...-default-cpu-tcg-pc-4.2.x86_64-latest.args |  6 +--
 ...default-cpu-tcg-q35-4.2.x86_64-latest.args | 14 +++----
 .../x86_64-pc-graphics.x86_64-latest.args     | 20 ++++-----
 .../x86_64-pc-headless.x86_64-latest.args     | 16 +++----
 .../x86_64-q35-graphics.x86_64-latest.args    | 34 +++++++--------
 .../x86_64-q35-headless.x86_64-latest.args    | 30 ++++++-------
 298 files changed, 1207 insertions(+), 1199 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 5f1eb5014c..a71d3b912f 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -649,11 +649,14 @@ VIR_ENUM_IMPL(virQEMUCaps,
               "chardev.json", /* QEMU_CAPS_CHARDEV_JSON */

               /* 415 */
-              "device.json", /* QEMU_CAPS_DEVICE_JSON */
+              "device.json", /* X_QEMU_CAPS_DEVICE_JSON_BROKEN_HOTPLUG */
               "query-dirty-rate", /* QEMU_CAPS_QUERY_DIRTY_RATE */
               "rbd-encryption", /* QEMU_CAPS_RBD_ENCRYPTION */
               "sev-guest-kernel-hashes", /* QEMU_CAPS_SEV_GUEST_KERNEL_HASHES */
               "sev-inject-launch-secret", /* QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET */
+
+              /* 420 */
+              "device.json+hotplug", /* QEMU_CAPS_DEVICE_JSON */
     );


@@ -1556,6 +1559,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
     { "chardev-add/arg-type/backend/+socket/data/reconnect", QEMU_CAPS_CHARDEV_RECONNECT },
     { "chardev-add/arg-type/backend/+file/data/logfile", QEMU_CAPS_CHARDEV_LOGFILE },
     { "chardev-add/arg-type/backend/+file/data/logappend", QEMU_CAPS_CHARDEV_FILE_APPEND },
+    { "device_add/$json-cli-hotplug", QEMU_CAPS_DEVICE_JSON },
     { "human-monitor-command/$savevm-monitor-nodes", QEMU_CAPS_SAVEVM_MONITOR_NODES },
     { "migrate-set-parameters/arg-type/max-bandwidth", QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH },
     { "migrate-set-parameters/arg-type/downtime-limit", QEMU_CAPS_MIGRATION_PARAM_DOWNTIME },
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index e3a3ab4445..2c1b6a99c4 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -628,12 +628,15 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     QEMU_CAPS_CHARDEV_JSON, /* -chardev accepts JSON */

     /* 415 */
-    QEMU_CAPS_DEVICE_JSON, /* -device accepts JSON (must not be used - users are filtering the capbility) */
+    X_QEMU_CAPS_DEVICE_JSON_BROKEN_HOTPLUG, /* -device accepts JSON (must not be used - users are filtering the capbility) */
     QEMU_CAPS_QUERY_DIRTY_RATE, /* accepts query-dirty-rate */
     QEMU_CAPS_RBD_ENCRYPTION, /* Ceph RBD encryption support */
     QEMU_CAPS_SEV_GUEST_KERNEL_HASHES, /* sev-guest.kernel-hashes= */
     QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET, /* 'sev-inject-launch-secret' qmp command present */

+    /* 420 */
+    QEMU_CAPS_DEVICE_JSON, /* -device accepts JSON (and works with hot-unplug) */
+
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;

diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml
index a33b989e21..6b80e7817e 100644
--- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml
@@ -241,6 +241,7 @@
   <flag name='rbd-encryption'/>
   <flag name='sev-guest-kernel-hashes'/>
   <flag name='sev-inject-launch-secret'/>
+  <flag name='device.json+hotplug'/>
   <version>6002050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100243</microcodeVersion>
diff --git a/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args b/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args
index 4fcffcff19..563c33af45 100644
--- a/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args
@@ -27,10 +27,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -no-shutdown \
 -no-acpi \
 -boot strict=on \
--device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
+-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
 -blockdev '{"driver":"host_cdrom","filename":"/dev/cdrom","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \
--device ide-cd,bus=ide.1,unit=0,drive=libvirt-1-format,id=ide0-1-0,bootindex=1 \
+-device '{"driver":"ide-cd","bus":"ide.1","unit":0,"drive":"libvirt-1-format","id":"ide0-1-0","bootindex":1}' \
 -audiodev '{"id":"audio1","driver":"alsa","timer-period":50,"in":{"mixing-engine":true,"fixed-settings":true,"voices":1,"frequency":44100,"channels":2,"format":"s16","dev":"/dev/dsp0"},"out":{"mixing-engine":true,"fixed-settings":true,"voices":2,"frequency":22050,"channels":4,"format":"f32","dev":"/dev/dsp1"}}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
 -msg timestamp=on

 [ ... truncated ... ]




More information about the libvir-list mailing list