[PATCH v1 0/3] Make virtio-mem and virtio-pmem address stable
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (3):
conf: Introduce <address/> for virtio-mem and virtio-pmem
qemu: Fill virtio-mem/virtio-pmem .memaddr at runtime
qemu_command: Generate .memaddr for virtio-mem and virtio-pmem
docs/formatdomain.rst | 7 ++++++
src/conf/domain_conf.c | 24 ++++++++++++++++++-
src/conf/domain_conf.h | 2 ++
src/conf/domain_validate.c | 6 +++++
src/conf/schemas/domaincommon.rng | 7 ++++++
src/qemu/qemu_command.c | 1 +
src/qemu/qemu_domain.c | 7 ++++--
src/qemu/qemu_monitor_json.c | 12 ++++++++--
...mory-hotplug-virtio-mem.x86_64-latest.args | 2 +-
.../memory-hotplug-virtio-mem.xml | 1 +
...mory-hotplug-virtio-pmem.x86_64-5.2.0.args | 2 +-
...ory-hotplug-virtio-pmem.x86_64-latest.args | 2 +-
.../memory-hotplug-virtio-pmem.xml | 1 +
13 files changed, 66 insertions(+), 8 deletions(-)
--
2.39.2
1 year, 5 months
[PATCH 0/7] qemu: Don't use deprecated '-no-acpi' and RFC: fix ACPI config for machine types not supporting ACPI
by Peter Krempa
The first part of the series is a straightforward replacement of
'-no-acpi' by '-machine acpi=on/off' based on configuration.
'-no-acpi' was recently deprecated by qemu thus we must adapt.
The second part of this series fixes the use of ACPI (or lack thereof)
for ARM machine types which don't support ACPI. We'll break such
commandline by adding '-no-acpi' due to historical baggage.
The second part is RFC as it's based on a qemu patch I'll be posting
along this series. This posting will also illustrate to qemu devs how
libvirt itends to use the added information.
I'll post the link to the qemu patch once I submit it.
Peter Krempa (7):
qemu: capabilities: Introduce QEMU_CAPS_MACHINE_ACPI
qemu: Use '-machine acpi=on/off' instead of deprecated '-no-acpi'
qemu: capabilities: Refactor XML parsing in virQEMUCapsLoadMachines
RFC BELOW:
qemu: capabilities: Extract whether machine type supports ACPI
qemu: capabilities: Introduce virQEMUCapsMachineSupportsACPI
XXX: tests: qemucapabilitiesdata: Regenerate with support for 'acpi'
in 'query-machines'
qemu: command: Don't format '-machine acpi=off' for machine types not
supporting ACPI
src/qemu/qemu_capabilities.c | 89 ++--
src/qemu/qemu_capabilities.h | 4 +
src/qemu/qemu_capspriv.h | 3 +-
src/qemu/qemu_command.c | 51 ++
src/qemu/qemu_monitor.h | 1 +
src/qemu/qemu_monitor_json.c | 12 +
.../caps_4.2.0.x86_64.xml | 2 +-
.../caps_5.0.0.x86_64.xml | 2 +-
.../caps_5.1.0.x86_64.xml | 2 +-
.../caps_5.2.0.x86_64.xml | 2 +-
.../caps_6.0.0.x86_64.xml | 2 +-
.../caps_6.1.0.x86_64.xml | 2 +-
.../caps_6.2.0.aarch64.xml | 2 +-
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 2 +-
.../caps_7.0.0.aarch64.xml | 2 +-
.../qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 +
.../caps_7.0.0.x86_64.xml | 2 +-
.../qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 1 +
.../caps_7.1.0.x86_64.xml | 2 +-
.../caps_7.2.0.x86_64.xml | 2 +-
.../caps_8.0.0.x86_64.replies | 471 ++++++++++++------
.../caps_8.0.0.x86_64.xml | 244 ++++-----
...fault-cpu-kvm-virt-4.2.aarch64-latest.args | 3 +-
...fault-cpu-tcg-virt-4.2.aarch64-latest.args | 3 +-
.../aarch64-features-sve.aarch64-latest.args | 3 +-
.../aarch64-tpm.aarch64-latest.args | 3 +-
.../aarch64-virt-graphics.aarch64-latest.args | 2 +-
.../aarch64-virt-headless.aarch64-latest.args | 2 +-
...h64-virtio-pci-default.aarch64-latest.args | 3 +-
.../audio-alsa-best.x86_64-latest.args | 3 +-
.../audio-alsa-full.x86_64-latest.args | 3 +-
.../audio-alsa-minimal.x86_64-latest.args | 3 +-
.../audio-coreaudio-best.x86_64-latest.args | 3 +-
.../audio-coreaudio-full.x86_64-latest.args | 3 +-
...audio-coreaudio-minimal.x86_64-latest.args | 3 +-
...udio-default-nographics.x86_64-latest.args | 3 +-
.../audio-default-sdl.x86_64-latest.args | 3 +-
.../audio-default-spice.x86_64-latest.args | 3 +-
.../audio-default-vnc.x86_64-latest.args | 3 +-
.../audio-file-best.x86_64-latest.args | 3 +-
.../audio-file-full.x86_64-latest.args | 3 +-
.../audio-file-minimal.x86_64-latest.args | 3 +-
.../audio-jack-full.x86_64-latest.args | 3 +-
.../audio-jack-minimal.x86_64-latest.args | 3 +-
.../audio-many-backends.x86_64-latest.args | 3 +-
.../audio-none-best.x86_64-latest.args | 3 +-
.../audio-none-full.x86_64-latest.args | 3 +-
.../audio-none-minimal.x86_64-latest.args | 3 +-
.../audio-oss-best.x86_64-latest.args | 3 +-
.../audio-oss-full.x86_64-latest.args | 3 +-
.../audio-oss-minimal.x86_64-latest.args | 3 +-
.../audio-pulseaudio-best.x86_64-latest.args | 3 +-
.../audio-pulseaudio-full.x86_64-latest.args | 3 +-
...udio-pulseaudio-minimal.x86_64-latest.args | 3 +-
.../audio-sdl-best.x86_64-latest.args | 3 +-
.../audio-sdl-full.x86_64-latest.args | 3 +-
.../audio-sdl-minimal.x86_64-latest.args | 3 +-
.../audio-spice-best.x86_64-latest.args | 3 +-
.../audio-spice-full.x86_64-latest.args | 3 +-
.../audio-spice-minimal.x86_64-latest.args | 3 +-
.../blkdeviotune-group-num.x86_64-latest.args | 3 +-
...blkdeviotune-max-length.x86_64-latest.args | 3 +-
.../blkdeviotune-max.x86_64-latest.args | 3 +-
.../blkdeviotune.x86_64-latest.args | 3 +-
.../boot-cdrom.x86_64-latest.args | 3 +-
.../boot-complex.x86_64-latest.args | 3 +-
.../boot-floppy-q35.x86_64-latest.args | 3 +-
.../boot-floppy.x86_64-latest.args | 3 +-
...boot-menu-disable-drive.x86_64-latest.args | 3 +-
.../boot-menu-disable.x86_64-latest.args | 3 +-
...enu-enable-with-timeout.x86_64-latest.args | 3 +-
.../boot-menu-enable.x86_64-latest.args | 3 +-
.../boot-multi.x86_64-latest.args | 3 +-
.../boot-network.x86_64-latest.args | 3 +-
.../boot-order.x86_64-latest.args | 3 +-
...l-qemu-vdagent-features.x86_64-latest.args | 3 +-
.../channel-qemu-vdagent.x86_64-latest.args | 3 +-
.../channel-unix-guestfwd.x86_64-latest.args | 3 +-
.../clock-absolute.x86_64-latest.args | 3 +-
.../clock-timer-armvtimer.aarch64-latest.args | 3 +-
.../console-compat-auto.x86_64-latest.args | 3 +-
.../console-compat-chardev.x86_64-latest.args | 3 +-
.../console-compat.x86_64-latest.args | 3 +-
.../console-virtio-unix.x86_64-latest.args | 3 +-
.../controller-usb-order.x86_64-latest.args | 3 +-
.../controller-virtio-scsi.x86_64-latest.args | 3 +-
...-Icelake-Server-pconfig.x86_64-latest.args | 3 +-
.../cpu-eoi-disabled.x86_64-latest.args | 2 +-
.../cpu-eoi-enabled.x86_64-latest.args | 2 +-
.../cpu-host-model.x86_64-4.2.0.args | 3 +-
.../cpu-host-model.x86_64-5.0.0.args | 3 +-
.../cpu-host-model.x86_64-5.1.0.args | 3 +-
.../cpu-host-model.x86_64-5.2.0.args | 3 +-
.../cpu-host-model.x86_64-6.0.0.args | 3 +-
.../cpu-host-model.x86_64-6.1.0.args | 3 +-
.../cpu-host-model.x86_64-latest.args | 3 +-
.../cpu-translation.x86_64-latest.args | 3 +-
.../cputune-cpuset-big-id.x86_64-latest.args | 3 +-
.../crypto-builtin.x86_64-latest.args | 3 +-
...ult-video-type-aarch64.aarch64-latest.args | 3 +-
...default-video-type-ppc64.ppc64-latest.args | 2 +-
.../devices-acpi-index.x86_64-latest.args | 2 +-
.../disk-aio-io_uring.x86_64-latest.args | 3 +-
.../disk-aio.x86_64-latest.args | 3 +-
.../disk-arm-virtio-sd.aarch64-latest.args | 3 +-
...-backing-chains-noindex.x86_64-latest.args | 3 +-
.../disk-blockio.x86_64-latest.args | 3 +-
.../disk-boot-cdrom.x86_64-latest.args | 3 +-
.../disk-boot-disk.x86_64-latest.args | 3 +-
.../disk-cache.x86_64-latest.args | 3 +-
.../disk-cdrom-bus-other.x86_64-latest.args | 3 +-
...m-empty-network-invalid.x86_64-latest.args | 3 +-
.../disk-cdrom-network.x86_64-latest.args | 2 +-
.../disk-cdrom-tray.x86_64-latest.args | 3 +-
.../disk-cdrom.x86_64-latest.args | 3 +-
.../disk-copy_on_read.x86_64-latest.args | 3 +-
.../disk-detect-zeroes.x86_64-latest.args | 3 +-
.../disk-discard.x86_64-latest.args | 3 +-
.../disk-error-policy.x86_64-latest.args | 3 +-
.../disk-floppy-q35.x86_64-latest.args | 3 +-
.../disk-floppy-tray.x86_64-latest.args | 3 +-
.../disk-floppy.x86_64-latest.args | 3 +-
.../disk-fmt-qcow.x86_64-latest.args | 3 +-
.../disk-geometry.x86_64-latest.args | 3 +-
.../disk-ide-split.x86_64-latest.args | 3 +-
.../disk-ide-wwn.x86_64-latest.args | 3 +-
.../disk-ioeventfd.x86_64-latest.args | 3 +-
.../disk-metadata-cache.x86_64-latest.args | 3 +-
.../disk-network-gluster.x86_64-latest.args | 3 +-
.../disk-network-http.x86_64-latest.args | 3 +-
.../disk-network-iscsi.x86_64-latest.args | 3 +-
.../disk-network-nbd.x86_64-latest.args | 3 +-
.../disk-network-nfs.x86_64-latest.args | 3 +-
...-network-rbd-encryption.x86_64-latest.args | 3 +-
...sk-network-rbd-no-colon.x86_64-latest.args | 3 +-
.../disk-network-rbd.x86_64-latest.args | 3 +-
.../disk-network-sheepdog.x86_64-6.0.0.args | 3 +-
...isk-network-source-auth.x86_64-latest.args | 3 +-
...rk-tlsx509-nbd-hostname.x86_64-latest.args | 3 +-
...disk-network-tlsx509-nbd.x86_64-5.2.0.args | 3 +-
...isk-network-tlsx509-nbd.x86_64-latest.args | 3 +-
...isk-network-tlsx509-vxhs.x86_64-5.0.0.args | 3 +-
.../disk-no-boot.x86_64-latest.args | 3 +-
.../disk-nvme.x86_64-latest.args | 3 +-
.../disk-order.x86_64-latest.args | 3 +-
.../disk-readonly-disk.x86_64-latest.args | 3 +-
.../disk-rotation.x86_64-latest.args | 3 +-
.../disk-sata-device.x86_64-latest.args | 3 +-
.../disk-scsi-device-auto.x86_64-latest.args | 3 +-
.../disk-scsi-disk-split.x86_64-latest.args | 3 +-
.../disk-scsi-disk-vpd.x86_64-latest.args | 3 +-
.../disk-scsi-disk-wwn.x86_64-latest.args | 3 +-
...sk-scsi-lun-passthrough.x86_64-latest.args | 3 +-
.../disk-scsi.x86_64-latest.args | 3 +-
.../disk-serial.x86_64-latest.args | 3 +-
.../disk-shared.x86_64-latest.args | 3 +-
.../disk-slices.x86_64-latest.args | 3 +-
.../disk-snapshot.x86_64-latest.args | 3 +-
.../disk-source-fd.x86_64-latest.args | 3 +-
.../disk-source-pool-mode.x86_64-latest.args | 3 +-
.../disk-source-pool.x86_64-latest.args | 3 +-
.../disk-transient.x86_64-latest.args | 3 +-
...sk-usb-device-removable.x86_64-latest.args | 3 +-
.../disk-usb-device.x86_64-latest.args | 3 +-
.../disk-vhostuser-numa.x86_64-4.2.0.args | 3 +-
.../disk-vhostuser-numa.x86_64-latest.args | 3 +-
.../disk-vhostuser.x86_64-latest.args | 3 +-
.../disk-virtio-queues.x86_64-latest.args | 3 +-
...virtio-scsi-reservations.x86_64-5.2.0.args | 3 +-
...irtio-scsi-reservations.x86_64-latest.args | 3 +-
.../disk-virtio.x86_64-latest.args | 3 +-
.../encrypted-disk-usage.x86_64-latest.args | 3 +-
.../encrypted-disk.x86_64-latest.args | 3 +-
.../eoi-disabled.x86_64-latest.args | 2 +-
.../eoi-enabled.x86_64-latest.args | 2 +-
.../event_idx.x86_64-latest.args | 3 +-
...d-memory-numa-topology4.x86_64-latest.args | 3 +-
.../fips-enabled.x86_64-5.1.0.args | 3 +-
.../fips-enabled.x86_64-latest.args | 3 +-
...are-auto-bios-stateless.x86_64-latest.args | 2 +-
.../firmware-auto-bios.x86_64-latest.args | 2 +-
...mware-auto-efi-aarch64.aarch64-latest.args | 2 +-
...-auto-efi-enrolled-keys.x86_64-latest.args | 2 +-
...-auto-efi-loader-secure.x86_64-latest.args | 2 +-
...to-efi-no-enrolled-keys.x86_64-latest.args | 2 +-
...are-auto-efi-no-secboot.x86_64-latest.args | 2 +-
...firmware-auto-efi-nvram.x86_64-latest.args | 2 +-
...rmware-auto-efi-secboot.x86_64-latest.args | 2 +-
...ware-auto-efi-stateless.x86_64-latest.args | 2 +-
.../firmware-auto-efi.x86_64-latest.args | 2 +-
...manual-bios-rw-implicit.x86_64-latest.args | 2 +-
...firmware-manual-bios-rw.x86_64-latest.args | 2 +-
...e-manual-efi-nvram-file.x86_64-latest.args | 2 +-
...efi-nvram-network-iscsi.x86_64-latest.args | 2 +-
...l-efi-nvram-network-nbd.x86_64-latest.args | 2 +-
...nual-efi-nvram-template.x86_64-latest.args | 2 +-
...re-manual-efi-stateless.x86_64-latest.args | 2 +-
.../floppy-drive-fat.x86_64-latest.args | 3 +-
.../qemuxml2argvdata/fs9p.x86_64-latest.args | 3 +-
.../genid-auto.x86_64-latest.args | 2 +-
.../qemuxml2argvdata/genid.x86_64-latest.args | 2 +-
...egl-headless-rendernode.x86_64-latest.args | 3 +-
.../graphics-egl-headless.x86_64-latest.args | 3 +-
...s-spice-agent-file-xfer.x86_64-latest.args | 3 +-
...aphics-spice-agentmouse.x86_64-latest.args | 3 +-
...s-spice-auto-socket-cfg.x86_64-latest.args | 3 +-
...phics-spice-auto-socket.x86_64-latest.args | 3 +-
...phics-spice-compression.x86_64-latest.args | 3 +-
...hics-spice-egl-headless.x86_64-latest.args | 3 +-
...pice-gl-auto-rendernode.x86_64-latest.args | 3 +-
.../graphics-spice-no-args.x86_64-latest.args | 3 +-
.../graphics-spice-qxl-vga.x86_64-latest.args | 3 +-
.../graphics-spice-sasl.x86_64-latest.args | 3 +-
.../graphics-spice-socket.x86_64-latest.args | 3 +-
.../graphics-spice-timeout.x86_64-latest.args | 2 +-
...raphics-spice-usb-redir.x86_64-latest.args | 3 +-
.../graphics-spice.x86_64-latest.args | 3 +-
...ics-vnc-auto-socket-cfg.x86_64-latest.args | 3 +-
...raphics-vnc-auto-socket.x86_64-latest.args | 3 +-
...aphics-vnc-egl-headless.x86_64-latest.args | 3 +-
...hics-vnc-no-listen-attr.x86_64-latest.args | 3 +-
.../graphics-vnc-none.x86_64-latest.args | 3 +-
.../graphics-vnc-policy.x86_64-latest.args | 3 +-
.../graphics-vnc-power.x86_64-latest.args | 3 +-
...remove-generated-socket.x86_64-latest.args | 3 +-
.../graphics-vnc-sasl.x86_64-latest.args | 3 +-
...-vnc-socket-new-cmdline.x86_64-latest.args | 3 +-
.../graphics-vnc-socket.x86_64-latest.args | 3 +-
.../graphics-vnc-tls-secret.x86_64-5.2.0.args | 3 +-
...graphics-vnc-tls-secret.x86_64-latest.args | 3 +-
.../graphics-vnc-tls.x86_64-latest.args | 3 +-
.../graphics-vnc-websocket.x86_64-latest.args | 3 +-
.../graphics-vnc.x86_64-latest.args | 3 +-
...tdev-mdev-display-ramfb.x86_64-latest.args | 3 +-
...play-spice-egl-headless.x86_64-latest.args | 3 +-
...ev-display-spice-opengl.x86_64-latest.args | 3 +-
...isplay-vnc-egl-headless.x86_64-latest.args | 3 +-
...ostdev-mdev-display-vnc.x86_64-latest.args | 3 +-
...tdev-pci-address-device.x86_64-latest.args | 3 +-
.../hostdev-pci-address.x86_64-latest.args | 3 +-
.../hostdev-scsi-lsi.x86_64-latest.args | 3 +-
...dev-scsi-vhost-scsi-pcie.x86_64-4.2.0.args | 3 +-
...ev-scsi-vhost-scsi-pcie.x86_64-latest.args | 3 +-
...ostdev-scsi-virtio-scsi.x86_64-latest.args | 3 +-
...usb-address-device-boot.x86_64-latest.args | 3 +-
...tdev-usb-address-device.x86_64-latest.args | 3 +-
.../hostdev-usb-address.x86_64-latest.args | 3 +-
.../hugepages-default-2M.x86_64-latest.args | 3 +-
...ges-default-system-size.x86_64-latest.args | 3 +-
.../hugepages-default.x86_64-latest.args | 3 +-
.../hugepages-memaccess.x86_64-latest.args | 3 +-
.../hugepages-memaccess2.x86_64-latest.args | 3 +-
.../hugepages-memaccess3.x86_64-latest.args | 3 +-
.../hugepages-nodeset.x86_64-latest.args | 3 +-
...gepages-numa-default-2M.x86_64-latest.args | 3 +-
...pages-numa-default-dimm.x86_64-latest.args | 3 +-
.../hugepages-numa-default.x86_64-latest.args | 3 +-
...pages-numa-nodeset-part.x86_64-latest.args | 3 +-
.../hugepages-numa-nodeset.x86_64-latest.args | 3 +-
.../hugepages-nvdimm.x86_64-latest.args | 3 +-
.../hugepages-shared.x86_64-latest.args | 3 +-
.../hyperv-off.x86_64-latest.args | 2 +-
.../hyperv-panic.x86_64-latest.args | 2 +-
.../hyperv-passthrough.x86_64-6.1.0.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 | 3 +-
.../intel-iommu-aw-bits.x86_64-latest.args | 3 +-
...ntel-iommu-caching-mode.x86_64-latest.args | 3 +-
...ntel-iommu-device-iotlb.x86_64-latest.args | 3 +-
.../intel-iommu-eim.x86_64-latest.args | 3 +-
.../intel-iommu.x86_64-latest.args | 3 +-
.../iommu-smmuv3.aarch64-latest.args | 3 +-
...othreads-ids-pool-sizes.x86_64-latest.args | 3 +-
...othreads-virtio-scsi-pci.x86_64-5.2.0.args | 3 +-
...threads-virtio-scsi-pci.x86_64-latest.args | 3 +-
.../kvmclock+eoi-disabled.x86_64-latest.args | 2 +-
...nch-security-sev-direct.x86_64-latest.args | 3 +-
...ev-missing-platform-info.x86_64-6.0.0.args | 3 +-
.../launch-security-sev.x86_64-6.0.0.args | 3 +-
.../luks-disks-source-qcow2.x86_64-5.2.0.args | 3 +-
...luks-disks-source-qcow2.x86_64-latest.args | 3 +-
.../luks-disks-source.x86_64-latest.args | 3 +-
.../luks-disks.x86_64-latest.args | 3 +-
.../machine-smm-off.x86_64-latest.args | 3 +-
.../machine-smm-on.x86_64-latest.args | 3 +-
...memory-default-hugepage.x86_64-latest.args | 3 +-
.../memfd-memory-numa.x86_64-latest.args | 3 +-
...emory-hotplug-dimm-addr.x86_64-latest.args | 3 +-
...y-hotplug-nvdimm-access.x86_64-latest.args | 3 +-
...ory-hotplug-nvdimm-align.x86_64-5.2.0.args | 3 +-
...ry-hotplug-nvdimm-align.x86_64-latest.args | 3 +-
...ory-hotplug-nvdimm-label.x86_64-5.2.0.args | 3 +-
...ry-hotplug-nvdimm-label.x86_64-latest.args | 3 +-
...mory-hotplug-nvdimm-pmem.x86_64-5.2.0.args | 3 +-
...ory-hotplug-nvdimm-pmem.x86_64-latest.args | 3 +-
...-hotplug-nvdimm-readonly.x86_64-5.2.0.args | 3 +-
...hotplug-nvdimm-readonly.x86_64-latest.args | 3 +-
.../memory-hotplug-nvdimm.x86_64-latest.args | 3 +-
...mory-hotplug-virtio-mem.x86_64-latest.args | 3 +-
...mory-hotplug-virtio-pmem.x86_64-5.2.0.args | 3 +-
...ory-hotplug-virtio-pmem.x86_64-latest.args | 3 +-
.../misc-no-reboot.x86_64-5.2.0.args | 3 +-
.../misc-no-reboot.x86_64-latest.args | 3 +-
.../mlock-off.x86_64-latest.args | 3 +-
.../mlock-on.x86_64-latest.args | 3 +-
.../name-escape.x86_64-latest.args | 3 +-
.../net-user-passt.x86_64-7.2.0.args | 3 +-
.../net-user-passt.x86_64-latest.args | 3 +-
.../net-user.x86_64-latest.args | 3 +-
.../net-vdpa-multiqueue.x86_64-latest.args | 3 +-
.../net-vdpa.x86_64-latest.args | 3 +-
.../net-vhostuser.x86_64-latest.args | 3 +-
.../net-virtio-rss.x86_64-latest.args | 3 +-
.../numatune-hmat.x86_64-latest.args | 2 +-
...emnode-restrictive-mode.x86_64-latest.args | 3 +-
.../numatune-memnode.x86_64-5.2.0.args | 3 +-
.../numatune-memnode.x86_64-latest.args | 3 +-
.../numatune-system-memory.x86_64-latest.args | 3 +-
.../pages-dimm-discard.x86_64-latest.args | 3 +-
...pages-discard-hugepages.x86_64-latest.args | 3 +-
.../pages-discard.x86_64-latest.args | 3 +-
.../panic-double.x86_64-latest.args | 2 +-
.../panic-no-address.x86_64-latest.args | 3 +-
.../qemuxml2argvdata/panic.x86_64-latest.args | 3 +-
...arallel-parport-chardev.x86_64-latest.args | 3 +-
.../parallel-tcp-chardev.x86_64-latest.args | 3 +-
.../parallel-unix-chardev.x86_64-latest.args | 3 +-
...pi-root-hotplug-disable.x86_64-latest.args | 3 +-
...cpi-root-hotplug-enable.x86_64-latest.args | 3 +-
.../pci-serial-dev-chardev.x86_64-latest.args | 3 +-
...e-expander-bus-aarch64.aarch64-latest.args | 3 +-
...cie-root-port-nohotplug.x86_64-latest.args | 3 +-
...ault-cpu-kvm-pseries-2.7.ppc64-latest.args | 2 +-
...ault-cpu-kvm-pseries-3.1.ppc64-latest.args | 2 +-
...ault-cpu-kvm-pseries-4.2.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-2.7.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-3.1.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-4.2.ppc64-latest.args | 2 +-
.../ppc64-pseries-graphics.ppc64-latest.args | 2 +-
.../ppc64-pseries-headless.ppc64-latest.args | 2 +-
.../ppc64-tpmproxy-single.ppc64-latest.args | 2 +-
.../ppc64-tpmproxy-with-tpm.ppc64-latest.args | 2 +-
.../pseries-basic.ppc64-latest.args | 2 +-
.../pseries-console-virtio.ppc64-latest.args | 2 +-
...eries-cpu-compat-power10.ppc64-latest.args | 2 +-
...series-cpu-compat-power9.ppc64-latest.args | 2 +-
.../pseries-cpu-compat.ppc64-latest.args | 2 +-
.../pseries-cpu-exact.ppc64-latest.args | 2 +-
.../pseries-cpu-le.ppc64-latest.args | 2 +-
.../pseries-features.ppc64-latest.args | 2 +-
.../pseries-hostdevs-1.ppc64-latest.args | 2 +-
.../pseries-hostdevs-2.ppc64-latest.args | 2 +-
.../pseries-hostdevs-3.ppc64-latest.args | 2 +-
.../pseries-many-buses-1.ppc64-latest.args | 2 +-
.../pseries-many-buses-2.ppc64-latest.args | 2 +-
.../pseries-many-devices.ppc64-latest.args | 2 +-
.../pseries-nvram.ppc64-latest.args | 2 +-
.../pseries-panic-missing.ppc64-latest.args | 2 +-
...pseries-panic-no-address.ppc64-latest.args | 2 +-
...ries-phb-default-missing.ppc64-latest.args | 2 +-
.../pseries-phb-numa-node.ppc64-latest.args | 2 +-
.../pseries-phb-simple.ppc64-latest.args | 2 +-
.../pseries-serial-native.ppc64-latest.args | 2 +-
.../pseries-serial-pci.ppc64-latest.args | 2 +-
.../pseries-serial-usb.ppc64-latest.args | 2 +-
.../pseries-usb-default.ppc64-latest.args | 2 +-
.../pseries-usb-kbd.ppc64-latest.args | 2 +-
.../pseries-usb-multi.ppc64-latest.args | 2 +-
...series-vio-user-assigned.ppc64-latest.args | 2 +-
.../pseries-vio.ppc64-latest.args | 2 +-
.../pv-spinlock-disabled.x86_64-latest.args | 2 +-
.../pv-spinlock-enabled.x86_64-latest.args | 2 +-
.../pvpanic-pci-aarch64.aarch64-latest.args | 2 +-
...pci-no-address-aarch64.aarch64-latest.args | 2 +-
.../pvpanic-pci-x86_64.x86_64-latest.args | 3 +-
...q35-default-devices-only.x86_64-4.2.0.args | 3 +-
...35-default-devices-only.x86_64-latest.args | 3 +-
.../q35-multifunction.x86_64-4.2.0.args | 3 +-
.../q35-multifunction.x86_64-latest.args | 3 +-
.../q35-pcie-autoadd.x86_64-4.2.0.args | 3 +-
.../q35-pcie-autoadd.x86_64-latest.args | 3 +-
.../q35-pcie.x86_64-4.2.0.args | 3 +-
.../q35-pcie.x86_64-latest.args | 3 +-
.../q35-virt-manager-basic.x86_64-4.2.0.args | 2 +-
.../q35-virt-manager-basic.x86_64-latest.args | 2 +-
.../qemu-ns.x86_64-latest.args | 3 +-
.../serial-debugcon.x86_64-latest.args | 3 +-
...rial-dev-chardev-iobase.x86_64-latest.args | 3 +-
.../serial-dev-chardev.x86_64-latest.args | 3 +-
.../serial-file-chardev.x86_64-latest.args | 3 +-
.../serial-file-log.x86_64-latest.args | 3 +-
.../serial-many-chardev.x86_64-latest.args | 3 +-
.../serial-pty-chardev.x86_64-latest.args | 3 +-
.../serial-spiceport.x86_64-latest.args | 3 +-
.../serial-tcp-chardev.x86_64-latest.args | 3 +-
...rial-tcp-telnet-chardev.x86_64-latest.args | 3 +-
...p-tlsx509-chardev-notls.x86_64-latest.args | 3 +-
...-tlsx509-chardev-verify.x86_64-latest.args | 3 +-
...ial-tcp-tlsx509-chardev.x86_64-latest.args | 3 +-
...-tlsx509-secret-chardev.x86_64-latest.args | 3 +-
.../serial-udp-chardev.x86_64-latest.args | 3 +-
.../serial-unix-chardev.x86_64-latest.args | 3 +-
.../serial-vc-chardev.x86_64-latest.args | 3 +-
.../sgx-epc.x86_64-7.0.0.args | 3 +-
...rtcard-passthrough-unix.x86_64-latest.args | 3 +-
.../tpm-emulator-spapr.ppc64-latest.args | 2 +-
.../tpm-emulator-tpm2-enc.x86_64-latest.args | 2 +-
...pm-emulator-tpm2-pstate.x86_64-latest.args | 2 +-
.../tpm-emulator-tpm2.x86_64-latest.args | 2 +-
.../tpm-emulator.x86_64-latest.args | 2 +-
.../tpm-external.x86_64-latest.args | 2 +-
.../tpm-passthrough-crb.x86_64-latest.args | 2 +-
.../tpm-passthrough.x86_64-latest.args | 2 +-
.../tseg-explicit-size.x86_64-latest.args | 3 +-
.../usb-redir-unix.x86_64-latest.args | 3 +-
.../user-aliases-usb.x86_64-latest.args | 2 +-
.../user-aliases.x86_64-latest.args | 2 +-
.../user-aliases2.x86_64-latest.args | 3 +-
...vhost-user-fs-fd-memory.x86_64-latest.args | 3 +-
...vhost-user-fs-hugepages.x86_64-latest.args | 2 +-
...host-user-gpu-secondary.x86_64-latest.args | 3 +-
.../vhost-user-vga.x86_64-latest.args | 3 +-
.../vhost-vsock-auto.x86_64-latest.args | 3 +-
.../vhost-vsock.x86_64-latest.args | 3 +-
...eo-bochs-display-device.x86_64-latest.args | 3 +-
...video-qxl-device-vram64.x86_64-latest.args | 3 +-
...o-qxl-sec-device-vram64.x86_64-latest.args | 3 +-
...eo-ramfb-display-device.x86_64-latest.args | 3 +-
...video-virtio-vga-gpu-gl.x86_64-latest.args | 3 +-
.../virtio-9p-createmode.x86_64-latest.args | 3 +-
.../virtio-9p-multidevs.x86_64-latest.args | 3 +-
.../virtio-iommu-aarch64.aarch64-latest.args | 2 +-
.../virtio-iommu-x86_64.x86_64-latest.args | 2 +-
.../virtio-lun.x86_64-latest.args | 3 +-
...virtio-non-transitional.x86_64-latest.args | 3 +-
...-options-controller-ats.x86_64-latest.args | 3 +-
...ptions-controller-iommu.x86_64-latest.args | 3 +-
...tions-controller-packed.x86_64-latest.args | 3 +-
...virtio-options-disk-ats.x86_64-latest.args | 3 +-
...rtio-options-disk-iommu.x86_64-latest.args | 3 +-
...tio-options-disk-packed.x86_64-latest.args | 3 +-
.../virtio-options-fs-ats.x86_64-latest.args | 3 +-
...virtio-options-fs-iommu.x86_64-latest.args | 3 +-
...irtio-options-fs-packed.x86_64-latest.args | 3 +-
...irtio-options-input-ats.x86_64-latest.args | 3 +-
...tio-options-input-iommu.x86_64-latest.args | 3 +-
...io-options-input-packed.x86_64-latest.args | 3 +-
...-options-memballoon-ats.x86_64-latest.args | 3 +-
...loon-freepage-reporting.x86_64-latest.args | 3 +-
...ptions-memballoon-iommu.x86_64-latest.args | 3 +-
...tions-memballoon-packed.x86_64-latest.args | 3 +-
.../virtio-options-net-ats.x86_64-latest.args | 3 +-
...irtio-options-net-iommu.x86_64-latest.args | 3 +-
...rtio-options-net-packed.x86_64-latest.args | 3 +-
.../virtio-options-rng-ats.x86_64-latest.args | 3 +-
...irtio-options-rng-iommu.x86_64-latest.args | 3 +-
...rtio-options-rng-packed.x86_64-latest.args | 3 +-
...irtio-options-video-ats.x86_64-latest.args | 3 +-
...tio-options-video-iommu.x86_64-latest.args | 3 +-
...io-options-video-packed.x86_64-latest.args | 3 +-
.../virtio-options.x86_64-latest.args | 3 +-
.../virtio-rng-builtin.x86_64-5.2.0.args | 3 +-
.../virtio-rng-builtin.x86_64-latest.args | 3 +-
.../virtio-rng-egd-unix.x86_64-5.2.0.args | 3 +-
.../virtio-rng-egd-unix.x86_64-latest.args | 3 +-
.../virtio-transitional.x86_64-latest.args | 3 +-
.../watchdog-device.x86_64-latest.args | 3 +-
.../watchdog-dump.x86_64-latest.args | 3 +-
.../watchdog-injectnmi.x86_64-latest.args | 3 +-
.../watchdog-q35-multiple.x86_64-latest.args | 3 +-
.../watchdog.x86_64-latest.args | 3 +-
.../x86-kvm-32-on-64.x86_64-latest.args | 3 +-
...-default-cpu-kvm-pc-4.2.x86_64-latest.args | 2 +-
...default-cpu-kvm-q35-4.2.x86_64-latest.args | 2 +-
...efault-cpu-tcg-features.x86_64-latest.args | 2 +-
...-default-cpu-tcg-pc-4.2.x86_64-latest.args | 2 +-
...default-cpu-tcg-q35-4.2.x86_64-latest.args | 2 +-
.../x86_64-pc-graphics.x86_64-latest.args | 2 +-
.../x86_64-pc-headless.x86_64-latest.args | 2 +-
.../x86_64-q35-graphics.x86_64-latest.args | 2 +-
.../x86_64-q35-headless.x86_64-latest.args | 2 +-
tests/testutilsqemu.c | 9 +-
485 files changed, 1044 insertions(+), 1145 deletions(-)
--
2.39.2
1 year, 5 months
[PATCH] hostdev:Introduce vDPA device to hostdev subsystem as a new subtype
by libai
The following is the xml of vdpa device:
<devices>
<hostdev mode='subsystem' type='vdpa'>
<source dev='/dev/vhost-vdpa-0'/>
</hostdev>
</devices>
And the command line passed to QEMU is as follows:
-device {"driver":"vhost-vdpa-device-pci","vhostdev":"/dev/vhost-vdpa-0"}
This solution is selected according to the previous discussion
on the solution of supporting the vDPA device.
For details, see the following:
https://listman.redhat.com/archives/libvir-list/2023-March/239018.html
Signed-off-by: libai <libai12(a)huawei.com>
---
src/conf/domain_audit.c | 4 +++
src/conf/domain_conf.c | 47 +++++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 6 +++++
src/conf/domain_validate.c | 1 +
src/conf/virconftypes.h | 2 ++
src/qemu/qemu_command.c | 19 +++++++++++++
src/qemu/qemu_command.h | 3 +++
src/qemu/qemu_domain.c | 6 +++++
src/qemu/qemu_hotplug.c | 1 +
src/qemu/qemu_migration.c | 2 ++
src/qemu/qemu_validate.c | 2 ++
src/security/security_dac.c | 2 ++
src/security/security_selinux.c | 2 ++
13 files changed, 97 insertions(+)
diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c
index ae875188bd..6906ce7ade 100644
--- a/src/conf/domain_audit.c
+++ b/src/conf/domain_audit.c
@@ -344,6 +344,7 @@ virDomainAuditHostdev(virDomainObj *vm, virDomainHostdevDef *hostdev,
virDomainHostdevSubsysSCSI *scsisrc = &hostdev->source.subsys.u.scsi;
virDomainHostdevSubsysSCSIVHost *hostsrc = &hostdev->source.subsys.u.scsi_host;
virDomainHostdevSubsysMediatedDev *mdevsrc = &hostdev->source.subsys.u.mdev;
+ virDomainHostdevSubsysVDPA *vdpasrc = &hostdev->source.subsys.u.vdpa;
virUUIDFormat(vm->def->uuid, uuidstr);
if (!(vmname = virAuditEncode("vm", vm->def->name))) {
@@ -383,6 +384,9 @@ virDomainAuditHostdev(virDomainObj *vm, virDomainHostdevDef *hostdev,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
address = g_strdup(mdevsrc->uuidstr);
break;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ address = g_strdup(vdpasrc->devpath);
+ break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
default:
VIR_WARN("Unexpected hostdev type while encoding audit message: %d",
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b03a3ff011..e8f6d1457b 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1047,6 +1047,7 @@ VIR_ENUM_IMPL(virDomainHostdevSubsys,
"scsi",
"scsi_host",
"mdev",
+ "vdpa",
);
VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend,
@@ -2641,6 +2642,9 @@ virDomainHostdevDefClear(virDomainHostdevDef *def)
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
g_clear_pointer(&def->source.subsys.u.pci.origstates, virBitmapFree);
break;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ VIR_FREE(def->source.subsys.u.vdpa.devpath);
+ break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
@@ -6160,6 +6164,22 @@ virDomainHostdevSubsysMediatedDevDefParseXML(virDomainHostdevDef *def,
return 0;
}
+static int
+virDomainHostdevSubsysVDPADefParseXML(xmlNodePtr sourcenode,
+ virDomainHostdevDef *def)
+{
+ g_autofree char *devpath = NULL;
+ virDomainHostdevSubsysVDPA *vdpa = &def->source.subsys.u.vdpa;
+
+ if(!(devpath = virXMLPropString(sourcenode, "dev"))) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Missing 'dev' attribute for element <source>"));
+ return -1;
+ }
+ vdpa->devpath = g_steal_pointer(&devpath);
+ return 0;
+}
+
static int
virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
xmlXPathContextPtr ctxt,
@@ -6317,6 +6337,11 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
if (virDomainHostdevSubsysMediatedDevDefParseXML(def, ctxt) < 0)
return -1;
break;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ if (virDomainHostdevSubsysVDPADefParseXML(sourcenode, def) < 0) {
+ return -1;
+ }
+ break;
default:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
@@ -12979,6 +13004,7 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xmlopt,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
break;
}
@@ -14101,6 +14127,13 @@ virDomainHostdevMatchSubsys(virDomainHostdevDef *a,
return 0;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
return virDomainHostdevMatchSubsysMediatedDev(a, b);
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ if (STREQ(a->source.subsys.u.vdpa.devpath,
+ b->source.subsys.u.vdpa.devpath)) {
+ return 1;
+ } else {
+ return 0;
+ }
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
return 0;
}
@@ -23290,6 +23323,16 @@ virDomainHostdevDefFormatSubsysMdev(virBuffer *buf,
virXMLFormatElement(buf, "source", NULL, &sourceChildBuf);
}
+static void
+virDomainHostdevDefFormatSubsysVDPA(virBuffer *buf,
+ virDomainHostdevDef *def)
+{
+ g_auto(virBuffer) sourceAttrBuf = VIR_BUFFER_INITIALIZER;
+ virDomainHostdevSubsysVDPA *vdpasrc = &def->source.subsys.u.vdpa;
+ virBufferAsprintf(&sourceAttrBuf, " dev='%s'", vdpasrc->devpath);
+ virXMLFormatElement(buf, "source", &sourceAttrBuf, NULL);
+}
+
static int
virDomainHostdevDefFormatSubsys(virBuffer *buf,
@@ -23317,6 +23360,10 @@ virDomainHostdevDefFormatSubsys(virBuffer *buf,
virDomainHostdevDefFormatSubsysMdev(buf, def);
return 0;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ virDomainHostdevDefFormatSubsysVDPA(buf, def);
+ return 0;
+
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
default:
virReportEnumRangeError(virDomainHostdevSubsysType, def->source.subsys.type);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 511067a050..ade8b0edec 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -197,6 +197,7 @@ typedef enum {
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI,
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST,
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV,
+ VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA,
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST
} virDomainHostdevSubsysType;
@@ -289,6 +290,10 @@ struct _virDomainHostdevSubsysMediatedDev {
virTristateSwitch ramfb;
};
+struct _virDomainHostdevSubsysVDPA {
+ char *devpath; /* vDPA device path */
+};
+
typedef enum {
VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE,
VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST,
@@ -323,6 +328,7 @@ struct _virDomainHostdevSubsys {
virDomainHostdevSubsysSCSI scsi;
virDomainHostdevSubsysSCSIVHost scsi_host;
virDomainHostdevSubsysMediatedDev mdev;
+ virDomainHostdevSubsysVDPA vdpa;
} u;
};
diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
index e04b85fee4..4af84c4f0c 100644
--- a/src/conf/domain_validate.c
+++ b/src/conf/domain_validate.c
@@ -2214,6 +2214,7 @@ virDomainHostdevDefValidate(const virDomainHostdevDef *hostdev)
}
break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
break;
}
diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h
index e07f967814..1756c54e7a 100644
--- a/src/conf/virconftypes.h
+++ b/src/conf/virconftypes.h
@@ -120,6 +120,8 @@ typedef struct _virDomainHostdevSubsys virDomainHostdevSubsys;
typedef struct _virDomainHostdevSubsysMediatedDev virDomainHostdevSubsysMediatedDev;
+typedef struct _virDomainHostdevSubsysVDPA virDomainHostdevSubsysVDPA;
+
typedef struct _virDomainHostdevSubsysPCI virDomainHostdevSubsysPCI;
typedef struct _virDomainHostdevSubsysSCSI virDomainHostdevSubsysSCSI;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 4ca93bf3dc..121214f4d5 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -4958,6 +4958,18 @@ qemuBuildHostdevMediatedDevProps(const virDomainDef *def,
return g_steal_pointer(&props);
}
+virJSONValue *
+qemuBuildHostdevVDPADevProps(virDomainHostdevDef *dev)
+{
+ g_autoptr(virJSONValue) props = NULL;
+ virDomainHostdevSubsysVDPA *vdpasrc = &dev->source.subsys.u.vdpa;
+ if (virJSONValueObjectAdd(&props,
+ "s:driver", "vhost-vdpa-device-pci",
+ "s:vhostdev", vdpasrc->devpath,
+ NULL) < 0)
+ return NULL;
+ return g_steal_pointer(&props);
+}
qemuBlockStorageSourceAttachData *
qemuBuildHostdevSCSIDetachPrepare(virDomainHostdevDef *hostdev,
@@ -5154,6 +5166,13 @@ qemuBuildHostdevCommandLine(virCommand *cmd,
return -1;
break;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ if (!(devprops = qemuBuildHostdevVDPADevProps(hostdev)))
+ return -1;
+ if (qemuBuildDeviceCommandlineFromJSON(cmd, devprops, def, qemuCaps) < 0)
+ return -1;
+ break;
+
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
break;
}
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index 5fdb138030..dff18350b5 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -198,6 +198,9 @@ virJSONValue *
qemuBuildHostdevMediatedDevProps(const virDomainDef *def,
virDomainHostdevDef *dev);
+virJSONValue *
+qemuBuildHostdevVDPADevProps(virDomainHostdevDef *dev);
+
virJSONValue *
qemuBuildRedirdevDevProps(const virDomainDef *def,
virDomainRedirdevDef *dev);
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 63b13b6875..0cd485a459 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -10533,6 +10533,8 @@ qemuDomainGetHostdevPath(virDomainHostdevDef *dev,
virDomainHostdevSubsysSCSI *scsisrc = &dev->source.subsys.u.scsi;
virDomainHostdevSubsysSCSIVHost *hostsrc = &dev->source.subsys.u.scsi_host;
virDomainHostdevSubsysMediatedDev *mdevsrc = &dev->source.subsys.u.mdev;
+ virDomainHostdevSubsysVDPA *vdpasrc = &dev->source.subsys.u.vdpa;
+
g_autoptr(virUSBDevice) usb = NULL;
g_autoptr(virSCSIDevice) scsi = NULL;
g_autoptr(virSCSIVHostDevice) host = NULL;
@@ -10603,6 +10605,10 @@ qemuDomainGetHostdevPath(virDomainHostdevDef *dev,
if (!(tmpPath = virMediatedDeviceGetIOMMUGroupDev(mdevsrc->uuidstr)))
return -1;
+ perm = VIR_CGROUP_DEVICE_RW;
+ break;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ tmpPath = g_strdup(vdpasrc->devpath);
perm = VIR_CGROUP_DEVICE_RW;
break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 5072798cb7..7d89899223 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -4546,6 +4546,7 @@ qemuDomainRemoveHostDevice(virQEMUDriver *driver,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
qemuDomainRemoveMediatedDevice(driver, vm, hostdev);
break;
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
break;
}
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index ed41a03851..9220ef1ab1 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1295,6 +1295,8 @@ qemuMigrationSrcIsAllowedHostdev(const virDomainDef *def)
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
+ /* The vDPA devices don't support migration for now */
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
_("cannot migrate a domain with <hostdev mode='subsystem' type='%1$s'>"),
virDomainHostdevSubsysTypeToString(hostdev->source.subsys.type));
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index b8d5e9bd74..ea3d4e1a39 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -2566,6 +2566,8 @@ qemuValidateDomainDeviceDefHostdev(const virDomainHostdevDef *hostdev,
break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
return qemuValidateDomainMdevDef(hostdev, def, qemuCaps);
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
+ break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
default:
virReportEnumRangeError(virDomainHostdevSubsysType,
diff --git a/src/security/security_dac.c b/src/security/security_dac.c
index c7dc145621..24f3de5d15 100644
--- a/src/security/security_dac.c
+++ b/src/security/security_dac.c
@@ -1313,6 +1313,7 @@ virSecurityDACSetHostdevLabel(virSecurityManager *mgr,
break;
}
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
ret = 0;
break;
@@ -1469,6 +1470,7 @@ virSecurityDACRestoreHostdevLabel(virSecurityManager *mgr,
break;
}
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
ret = 0;
break;
diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
index e3e6a6115f..5cb6612fbc 100644
--- a/src/security/security_selinux.c
+++ b/src/security/security_selinux.c
@@ -2265,6 +2265,7 @@ virSecuritySELinuxSetHostdevSubsysLabel(virSecurityManager *mgr,
break;
}
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
ret = 0;
break;
@@ -2493,6 +2494,7 @@ virSecuritySELinuxRestoreHostdevSubsysLabel(virSecurityManager *mgr,
break;
}
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
ret = 0;
break;
--
2.33.0
1 year, 5 months
[PATCH 0/4] conf, qemu: add loader type='none'
by Daniel Henrique Barboza
Hi,
Fedora Rawhide for RISC-V requires '-bios none' to properly boot
because its kernel is overwriting the default OpenSBI binary QEMU uses,
causing the following error:
$ sudo ./run tools/virsh start --console riscv-fedora
error: Failed to start domain 'riscv-fedora'
error: internal error: process exited while connecting to monitor: 2023-03-20T17:31:02.650862Z qemu-system-riscv64: Some ROM regions are overlapping
These ROM regions might have been loaded by direct user request or by default.
They could be BIOS/firmware images, a guest kernel, initrd or some other file loaded into guest memory.
Check whether you intended to load all this guest code, and whether it has been built to load to the correct addresses.
Other archs, such as PPC64 pseries, also requires "-bios none" if the
user wants QEMU to not load any default firmware.
At this moment libvirt doesn't support this option in the official API,
meaning we need to go to the <qemu:commandline> route to allow the
domain to boot, tainting it. And with a chance of weird interactions
with firmware autoselect.
These patches add official XML support for '-bios none' for QEMU domains
using a XML as follows:
<os>
<loader type='none'/>
(...)
</os>
The pre-conditions of this format are (1) no loader->path and (2) only
manual autoselect. Everything else is already covered by libvirt as
corner cases of existing firmware features.
Daniel Henrique Barboza (4):
conf: add loader type 'none'
qemu: handle bios 'none' case in qemuFirmwareFillDomain()
qemu, tests: add -bios none command line
docs: Document loader 'none' attribute
docs/formatdomain.rst | 7 +++++
src/conf/domain_conf.c | 5 +--
src/conf/domain_validate.c | 2 +-
src/conf/schemas/domaincommon.rng | 1 +
src/qemu/qemu_command.c | 6 ++++
src/qemu/qemu_firmware.c | 10 ++++++
.../firmware-bios-none.riscv64-latest.args | 31 +++++++++++++++++++
tests/qemuxml2argvdata/firmware-bios-none.xml | 18 +++++++++++
tests/qemuxml2argvtest.c | 2 ++
9 files changed, 79 insertions(+), 3 deletions(-)
create mode 100644 tests/qemuxml2argvdata/firmware-bios-none.riscv64-latest.args
create mode 100644 tests/qemuxml2argvdata/firmware-bios-none.xml
--
2.39.2
1 year, 5 months
[PATCH V3 0/3] migration: add qemu parallel migration options
by Jiang Jiacheng
Add compress method zlib and zstd for parallel migration and new
migration options to set qemu's parameter related with parallel
migration(multifd-compression, multifd-zlib-level and multifd-zstd-level).
These parameters has been supported by QEMU since 5.0.
v3 of:
https://listman.redhat.com/archives/libvir-list/2023-February/237604.html
diff to v2:
* merge the processing of new method into 'qemuMigrationParamsSetCompression'
* improve descriptions for the new options.
Jiang Jiacheng (3):
Add public API for parallel compression method
virsh: Add migrate options to set parallel compress level
qemu: support set parallel migration compression method
docs/manpages/virsh.rst | 29 ++++++++----
include/libvirt/libvirt-domain.h | 30 ++++++++++--
src/qemu/qemu_migration.h | 2 +
src/qemu/qemu_migration_params.c | 80 +++++++++++++++++++++++++++++++-
src/qemu/qemu_migration_params.h | 3 ++
tools/virsh-domain.c | 26 +++++++++++
6 files changed, 156 insertions(+), 14 deletions(-)
--
2.33.0
1 year, 5 months
[PATCH 0/1] fix risc-v QEMU domains in non-RISC-V hosts
by Daniel Henrique Barboza
Hi,
For some reason didn't notice this was broken until recently. We're
missing an API in the RISC-V CPU driver to allow QEMU TCG risc-v domains
to run in non-native hosts.
Daniel Henrique Barboza (1):
cpu_riscv64.c: add update() implementation
src/cpu/cpu_riscv64.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
--
2.40.0
1 year, 6 months
[PATCH v3 00/10] Deprecate/rename singlestep command line option, monitor interfaces
by Peter Maydell
The command line option '-singlestep' and its HMP equivalent
the 'singlestep' command are very confusingly named, because
they have nothing to do with single-stepping the guest (either
via the gdb stub or by emulation of guest CPU architectural
debug facilities). What they actually do is put TCG into a
mode where it puts only one guest instruction into each
translation block. This is useful for some circumstances
such as when you want the -d debug logging to be easier to
interpret, or if you have a finicky guest binary that wants
to see interrupts delivered at something other than the end
of a basic block.
The confusing name is made worse by the fact that our
documentation for these is so minimal as to be useless
for telling users what they really do.
This series:
* changes the command line interface: for user-mode
emulators, the new option is '-one-insn-per-tb',
and for system mode emulators it is a TCG accel
property '-accel tcg,one-insn-per-tb=on'
* updates all the places which currently directly touch
the 'singlestep' global variable to instead get the
current accelerator and query/set the QOM property
(except the one internal to TCG itself in curr_cflags())
* documents that the old -singlestep option is deprecated
* adds a new HMP command 'one-insn-per-tb', and deprecates
the old 'singlestep' command. (Strictly we don't need to
deprecate HMP commands, but I'd already written the code
for v1 of this series and it's a minor user convenience.)
* moves the 'is one-insn-per-tb on?' info from 'info status'
to 'info jit'
* deprecates the 'singlestep' member of the QMP StatusInfo
type, with no replacement. (We have a sketch of a design
of how we might provide this in QMP if we need to, but
I'm pretty sure nobody using QMP is actually using the
info in the 'singlestep' field, especially since it's
always been wrongly documented and there's no write
interface, only a read one.)
Changes v2->v3:
* curr_cflags() is a hot path, so use a global variable
so it doesn't have to fetch the current accelerator object.
(NB: I haven't done the tcg_global_cflags thing suggested
in review of v2; justification in the below-the-fold part
of the patch 3 commit message notes.)
* put the new line in test-hmp.c in its proper alphabetical
order place in patch 8
* in patch 10 don't provide a replacement field in the
QMP StatusInfo type, just deprecate the old one
* I finally tested that bsd-user compiles, and fixed the
missing-close-bracket error in that patch :-)
Patches still needing review: 3, 7, 10
thanks
-- PMM
Peter Maydell (10):
make one-insn-per-tb an accel option
softmmu: Don't use 'singlestep' global in QMP and HMP commands
accel/tcg: Use one_insn_per_tb global instead of old singlestep global
linux-user: Add '-one-insn-per-tb' option equivalent to '-singlestep'
bsd-user: Add '-one-insn-per-tb' option equivalent to '-singlestep'
Document that -singlestep command line option is deprecated
accel/tcg: Report one-insn-per-tb in 'info jit', not 'info status'
hmp: Add 'one-insn-per-tb' command equivalent to 'singlestep'
qapi/run-state.json: Fix missing newline at end of file
hmp: Deprecate 'singlestep' member of StatusInfo
docs/about/deprecated.rst | 39 +++++++++++++++++++++++++++++++++++++
docs/user/main.rst | 14 +++++++++++--
qapi/run-state.json | 16 +++++++++++----
accel/tcg/internal.h | 2 ++
include/exec/cpu-common.h | 2 --
include/monitor/hmp.h | 2 +-
accel/tcg/cpu-exec.c | 2 +-
accel/tcg/monitor.c | 14 +++++++++++++
accel/tcg/tcg-all.c | 23 ++++++++++++++++++++++
bsd-user/main.c | 14 ++++++++-----
linux-user/main.c | 18 +++++++++++------
softmmu/globals.c | 1 -
softmmu/runstate-hmp-cmds.c | 25 ++++++++++++++++++------
softmmu/runstate.c | 10 +++++++++-
softmmu/vl.c | 17 ++++++++++++++--
tests/qtest/test-hmp.c | 1 +
hmp-commands.hx | 25 ++++++++++++++++++++----
qemu-options.hx | 12 ++++++++++--
tcg/tci/README | 2 +-
19 files changed, 201 insertions(+), 38 deletions(-)
--
2.34.1
1 year, 6 months
[PATCH 0/2] tools: virsh-domain: display progress with enhanced granularity
by Shaleen Bathla
Changes since v1
================================================================================
- Remove superfluous parenthesis
- Update progress as 99.99 instead of 99.00
- Add comment for auto-round-off prevention logic for double
Description
==================================================================================
While working with active blockcommit using virsh/libvirt, we found that in case of heavy IO, the progress may stay stuck at 99% for quite a while.
It will be much better if we show progress upto 2 decimal places more precise which should be sufficient for most scenarios for now.
This will give a user, a better understanding of the progress of blockjob/blockcommit etc
This patch intends to do exactly that by adding more granularity to blockjob/blockcommit etc progress.
Shaleen Bathla (2):
tools: virsh-domain: refactor variable initialization
tools: virsh-domain: display progress with enhanced granularity
tools/virsh-domain.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
--
2.31.1
1 year, 6 months