[PATCH 0/4] qemu: Reflect support of floppy devices in capabilities XML

Probe if qemu actually supports floppy controllers which can be compiled out with custom configs and reflect that in the capability XML. Peter Krempa (4): qemu: domain: Introduce qemuDomainMachineSupportsFloppy qemu: Move floppy device support validation to validation code qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY qemuDomainMachineSupportsFloppy: Check for QEMU_CAPS_BUS_FLOPPY src/qemu/qemu_capabilities.c | 6 ++- src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_domain.c | 15 +++++++ src/qemu/qemu_domain.h | 4 ++ src/qemu/qemu_process.c | 8 ---- src/qemu/qemu_validate.c | 7 +++ .../qemu_10.0.0-virt.aarch64.xml | 2 - tests/domaincapsdata/qemu_10.0.0.aarch64.xml | 2 - tests/domaincapsdata/qemu_10.0.0.s390x.xml | 2 - tests/domaincapsdata/qemu_8.1.0.s390x.xml | 2 - .../qemu_8.2.0-tcg-virt.loongarch64.xml | 2 - .../qemu_8.2.0-virt.aarch64.xml | 2 - .../qemu_8.2.0-virt.loongarch64.xml | 2 - tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 2 - tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 2 - tests/domaincapsdata/qemu_8.2.0.s390x.xml | 2 - .../qemu_9.1.0-tcg-virt.riscv64.xml | 2 - .../qemu_9.1.0-virt.riscv64.xml | 2 - tests/domaincapsdata/qemu_9.1.0.s390x.xml | 2 - .../qemu_9.2.0-hvf.aarch64+hvf.xml | 2 - tests/domaincapsdata/qemu_9.2.0.s390x.xml | 2 - .../caps_10.0.0_ppc64.xml | 1 + .../caps_10.0.0_x86_64+amdsev.xml | 1 + .../caps_10.0.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + .../caps_6.2.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + .../caps_7.0.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + .../caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + .../caps_7.2.0_x86_64+hvf.xml | 1 + .../caps_7.2.0_x86_64.xml | 1 + .../caps_8.0.0_x86_64.xml | 1 + .../caps_8.1.0_x86_64.xml | 1 + .../caps_8.2.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_9.0.0_sparc.xml | 1 + .../caps_9.0.0_x86_64.xml | 1 + .../caps_9.1.0_x86_64.xml | 1 + .../caps_9.2.0_x86_64+amdsev.xml | 1 + .../caps_9.2.0_x86_64.xml | 1 + .../disk-floppy-pseries.ppc64-latest.err | 2 +- .../disk-floppy-pseries.ppc64-latest.xml | 44 ------------------- tests/qemuxmlconftest.c | 2 +- 44 files changed, 53 insertions(+), 86 deletions(-) delete mode 100644 tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.xml -- 2.49.0

From: Peter Krempa <pkrempa@redhat.com> Add a helper that will collect the logic for determinin whether a VM supports floppy disks. Use it in the capabilities code and when validating the VM definition at startup. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +-- src/qemu/qemu_domain.c | 12 ++++++++++++ src/qemu/qemu_domain.h | 4 ++++ src/qemu/qemu_process.c | 5 ++--- .../disk-floppy-pseries.ppc64-latest.err | 2 +- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b600dd38b8..19716497d8 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -6450,8 +6450,7 @@ virQEMUCapsFillDomainDeviceDiskCaps(virQEMUCaps *qemuCaps, VIR_DOMAIN_DISK_DEVICE_CDROM, VIR_DOMAIN_DISK_DEVICE_LUN); - /* PowerPC pseries based VMs do not support floppy device */ - if (!qemuDomainMachineIsPSeries(machine, qemuCaps->arch)) { + if (qemuDomainMachineSupportsFloppy(machine, qemuCaps)) { VIR_DOMAIN_CAPS_ENUM_SET(disk->diskDevice, VIR_DOMAIN_DISK_DEVICE_FLOPPY); VIR_DOMAIN_CAPS_ENUM_SET(disk->bus, VIR_DOMAIN_DISK_BUS_FDC); } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index a7e4198316..7a308d488b 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11525,3 +11525,15 @@ qemuDomainCheckCPU(virArch arch, return virCPUCompareUnusable(arch, hypervisorCPU, cpu, blockers, failIncompatible); } + + +bool +qemuDomainMachineSupportsFloppy(const char *machine, + virQEMUCaps *qemuCaps) +{ + /* PowerPC pseries based VMs do not support floppy device */ + if (qemuDomainMachineIsPSeries(machine, virQEMUCapsGetArch(qemuCaps))) + return false; + + return true; +} diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index ee6074c9f6..c7287eb669 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -1167,3 +1167,7 @@ qemuDomainCheckCPU(virArch arch, virCPUDef *cpu, virQEMUCapsHostCPUType compatCPU, bool failIncompatible); + +bool +qemuDomainMachineSupportsFloppy(const char *machine, + virQEMUCaps *qemuCaps); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 04e5c005a0..7e444bb8b4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5620,11 +5620,10 @@ qemuProcessStartValidateDisks(virDomainObj *vm, return -1; } - /* PowerPC pseries based VMs do not support floppy device */ if (disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY && - qemuDomainIsPSeries(vm->def)) { + !qemuDomainMachineSupportsFloppy(vm->def->os.machine, qemuCaps)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("PowerPC pseries machines do not support floppy device")); + _("this machine type do not support floppy devices")); return -1; } diff --git a/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err b/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err index b4b580a684..e00287728d 100644 --- a/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err +++ b/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err @@ -1 +1 @@ -unsupported configuration: PowerPC pseries machines do not support floppy device +unsupported configuration: this machine type do not support floppy devices -- 2.49.0

From: Peter Krempa <pkrempa@redhat.com> Move the validation from qemuProcessStartValidateDisks to qemuValidateDomainDeviceDefDiskFrontend and adjust the test case which now fails a bit earlier, thus no output XML is needed. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_process.c | 7 --- src/qemu/qemu_validate.c | 7 +++ .../disk-floppy-pseries.ppc64-latest.xml | 44 ------------------- tests/qemuxmlconftest.c | 2 +- 4 files changed, 8 insertions(+), 52 deletions(-) delete mode 100644 tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.xml diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 7e444bb8b4..54b84922d6 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5620,13 +5620,6 @@ qemuProcessStartValidateDisks(virDomainObj *vm, return -1; } - if (disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY && - !qemuDomainMachineSupportsFloppy(vm->def->os.machine, qemuCaps)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this machine type do not support floppy devices")); - return -1; - } - if (src->type == VIR_STORAGE_TYPE_NVME && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_NVME)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 87588024ce..e45f636418 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -3008,6 +3008,13 @@ qemuValidateDomainDeviceDefDiskFrontend(const virDomainDiskDef *disk, return -1; } + if (disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY && + !qemuDomainMachineSupportsFloppy(def->os.machine, qemuCaps)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("this machine type do not support floppy devices")); + return -1; + } + if (disk->copy_on_read == VIR_TRISTATE_SWITCH_ON) { if (disk->src->readonly) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, diff --git a/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.xml b/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.xml deleted file mode 100644 index 9a5490c9fe..0000000000 --- a/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.xml +++ /dev/null @@ -1,44 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>1</vcpu> - <os> - <type arch='ppc64' machine='pseries'>hvm</type> - <boot dev='hd'/> - </os> - <cpu mode='custom' match='exact' check='none'> - <model fallback='forbid'>POWER10</model> - </cpu> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-ppc64</emulator> - <disk type='block' device='floppy'> - <driver name='qemu' type='raw'/> - <source dev='/dev/fd0'/> - <target dev='fda' bus='fdc'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <disk type='file' device='floppy'> - <driver name='qemu' type='raw'/> - <source file='/tmp/firmware.img'/> - <target dev='fdb' bus='fdc'/> - <address type='drive' controller='0' bus='0' target='0' unit='1'/> - </disk> - <controller type='usb' index='0' model='pci-ohci'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> - </controller> - <controller type='fdc' index='0'/> - <controller type='pci' index='0' model='pci-root'> - <model name='spapr-pci-host-bridge'/> - <target index='0'/> - </controller> - <audio id='1' type='none'/> - <memballoon model='none'/> - <panic model='pseries'/> - </devices> -</domain> diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 9ec3efdd88..9a29262d1b 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -1551,7 +1551,7 @@ mymain(void) DO_TEST_CAPS_LATEST("disk-cdrom-tray"); DO_TEST_CAPS_LATEST("disk-floppy"); DO_TEST_CAPS_LATEST("disk-floppy-q35"); - DO_TEST_CAPS_ARCH_LATEST_FAILURE("disk-floppy-pseries", "ppc64"); + DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("disk-floppy-pseries", "ppc64"); DO_TEST_CAPS_LATEST("disk-floppy-tray"); DO_TEST_CAPS_LATEST("disk-virtio"); DO_TEST_CAPS_ARCH_LATEST("disk-virtio-ccw", "s390x"); -- 2.49.0

From: Peter Krempa <pkrempa@redhat.com> Introduce a common capability for support of floppy devices by qemu. Floppy support can be compiled out ('FDC', 'FDC_ISA', 'FDC_SYSBUS' qemu Kconfig options) and also isn't supported by all architectures. Add a capability that will check for 'isa-fdc' and 'sysbus-fdc' devices and signal that given qemu supports the floppy bus. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 1 + 22 files changed, 24 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 19716497d8..39cf23ebe7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -733,6 +733,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 475 */ "virtio-scsi.iothread-mapping", /* QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING */ "machine.virt.highmem-mmio-size", /* QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE */ + "bus-floppy", /* QEMU_CAPS_BUS_FLOPPY */ ); @@ -1386,6 +1387,8 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pvscsi", QEMU_CAPS_SCSI_PVSCSI }, { "spapr-tpm-proxy", QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY }, { "vmport", QEMU_CAPS_MACHINE_VMPORT_OPT }, + { "isa-fdc", QEMU_CAPS_BUS_FLOPPY }, + { "sysbus-fdc", QEMU_CAPS_BUS_FLOPPY }, /* * We don't probe 'esp' directly, because it is often reported * as present for all QEMU binaries, due to it being enabled diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index df33212a34..814ad222ae 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -714,6 +714,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 475 */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING, /* virtio-scsi supports per-virtqueue iothread mapping */ QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE, /* -machine virt,highmem-mmio-size=<size> */ + QEMU_CAPS_BUS_FLOPPY, /* floppy bus supported (isa-fdc/sysbus-fdc) */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml index 1afe4ff7f3..967b5e0cbc 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml @@ -168,6 +168,7 @@ <flag name='blockdev-set-active'/> <flag name='shim'/> <flag name='virtio-scsi.iothread-mapping'/> + <flag name='bus-floppy'/> <version>10000000</version> <microcodeVersion>42900285</microcodeVersion> <package>v10.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml index 00afc61a5b..8da17978fb 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml @@ -205,6 +205,7 @@ <flag name='blockdev-set-active'/> <flag name='shim'/> <flag name='virtio-scsi.iothread-mapping'/> + <flag name='bus-floppy'/> <version>10000000</version> <microcodeVersion>43100285</microcodeVersion> <package>v10.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml index cee4cc3252..09332805f2 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml @@ -204,6 +204,7 @@ <flag name='blockdev-set-active'/> <flag name='shim'/> <flag name='virtio-scsi.iothread-mapping'/> + <flag name='bus-floppy'/> <version>10000000</version> <microcodeVersion>43100285</microcodeVersion> <package>v10.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml index f61d2263c7..bbd4e7972a 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml @@ -130,6 +130,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='netdev.user'/> + <flag name='bus-floppy'/> <version>6002000</version> <microcodeVersion>42900244</microcodeVersion> <package>v6.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml index e780850c8d..e638778ae4 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml @@ -172,6 +172,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='netdev.user'/> + <flag name='bus-floppy'/> <version>6002000</version> <microcodeVersion>43100244</microcodeVersion> <package>v6.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml index d78c239372..5a277432ad 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml @@ -149,6 +149,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='bus-floppy'/> <version>7000000</version> <microcodeVersion>42900243</microcodeVersion> <package>v7.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml index f8fab98961..74f2d2772e 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml @@ -180,6 +180,7 @@ <flag name='netdev.user'/> <flag name='acpi-erst'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>7000000</version> <microcodeVersion>43100243</microcodeVersion> <package>v7.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml index d6edb65e96..5ad6f20395 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml @@ -150,6 +150,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='bus-floppy'/> <version>7001000</version> <microcodeVersion>42900244</microcodeVersion> <package>v7.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml index 17c662421d..750f992092 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml @@ -185,6 +185,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>7001000</version> <microcodeVersion>43100244</microcodeVersion> <package>v7.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml b/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml index fe318e0a52..8166b37514 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml @@ -145,6 +145,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='bus-floppy'/> <version>7002000</version> <microcodeVersion>0</microcodeVersion> <package>qemu-7.2.0-6.fc37</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml index 0dd9d60be3..942484e85c 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml @@ -189,6 +189,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>7002000</version> <microcodeVersion>43100245</microcodeVersion> <package>v7.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml index 1f526ebc54..a40383c637 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml @@ -189,6 +189,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>7002000</version> <microcodeVersion>43100245</microcodeVersion> <package>v7.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml index 44ff63d236..7a7e567f35 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml @@ -193,6 +193,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>8000000</version> <microcodeVersion>43100244</microcodeVersion> <package>v8.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml index eee166b1ea..b9c3952c48 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml @@ -195,6 +195,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>8001000</version> <microcodeVersion>43100245</microcodeVersion> <package>v8.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml index 3f8fa926c8..669c9a2304 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml @@ -198,6 +198,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>8002000</version> <microcodeVersion>43100246</microcodeVersion> <package>v8.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml b/tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml index 38835ba0cb..11507557d3 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml @@ -70,6 +70,7 @@ <flag name='blockjob.backing-mask-protocol'/> <flag name='display-reload'/> <flag name='netdev.user'/> + <flag name='bus-floppy'/> <version>9000000</version> <microcodeVersion>0</microcodeVersion> <package>qemu-9.0.0-1.fc40</package> diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml index 7824fd3f5e..b7bd10271a 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml @@ -200,6 +200,7 @@ <flag name='acpi-erst'/> <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> + <flag name='bus-floppy'/> <version>9000000</version> <microcodeVersion>43100245</microcodeVersion> <package>v9.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml index f2207ee5e3..aed9ba6564 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml @@ -199,6 +199,7 @@ <flag name='intel-iommu.dma-translation'/> <flag name='machine-i8042-opt'/> <flag name='migrate-incoming.exit-on-error'/> + <flag name='bus-floppy'/> <version>9001000</version> <microcodeVersion>43100246</microcodeVersion> <package>v9.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml index 7f6316941b..96426a28a7 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml @@ -203,6 +203,7 @@ <flag name='chardev-reconnect-miliseconds'/> <flag name='netdev-stream-reconnect-miliseconds'/> <flag name='migrate-incoming.exit-on-error'/> + <flag name='bus-floppy'/> <version>9002000</version> <microcodeVersion>43100247</microcodeVersion> <package>v9.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml index 12d1928bb7..adb9202ff2 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml @@ -201,6 +201,7 @@ <flag name='chardev-reconnect-miliseconds'/> <flag name='netdev-stream-reconnect-miliseconds'/> <flag name='migrate-incoming.exit-on-error'/> + <flag name='bus-floppy'/> <version>9002000</version> <microcodeVersion>43100247</microcodeVersion> <package>v9.2.0</package> -- 2.49.0

On 5/26/25 09:57, Peter Krempa via Devel wrote:
From: Peter Krempa <pkrempa@redhat.com>
Introduce a common capability for support of floppy devices by qemu.
Floppy support can be compiled out ('FDC', 'FDC_ISA', 'FDC_SYSBUS' qemu Kconfig options) and also isn't supported by all architectures. Add a capability that will check for 'isa-fdc' and 'sysbus-fdc' devices and signal that given qemu supports the floppy bus.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 1 + 22 files changed, 24 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 19716497d8..39cf23ebe7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -733,6 +733,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 475 */ "virtio-scsi.iothread-mapping", /* QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING */ "machine.virt.highmem-mmio-size", /* QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE */ + "bus-floppy", /* QEMU_CAPS_BUS_FLOPPY */ );
@@ -1386,6 +1387,8 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pvscsi", QEMU_CAPS_SCSI_PVSCSI }, { "spapr-tpm-proxy", QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY }, { "vmport", QEMU_CAPS_MACHINE_VMPORT_OPT }, + { "isa-fdc", QEMU_CAPS_BUS_FLOPPY }, + { "sysbus-fdc", QEMU_CAPS_BUS_FLOPPY }, /* * We don't probe 'esp' directly, because it is often reported * as present for all QEMU binaries, due to it being enabled diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index df33212a34..814ad222ae 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -714,6 +714,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 475 */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING, /* virtio-scsi supports per-virtqueue iothread mapping */ QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE, /* -machine virt,highmem-mmio-size=<size> */ + QEMU_CAPS_BUS_FLOPPY, /* floppy bus supported (isa-fdc/sysbus-fdc) */
QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml index 1afe4ff7f3..967b5e0cbc 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml @@ -168,6 +168,7 @@ <flag name='blockdev-set-active'/> <flag name='shim'/> <flag name='virtio-scsi.iothread-mapping'/> + <flag name='bus-floppy'/>
Does this mean qemu-system-ppc64 does support floppy? Or is the support specific to pseries-* machine types? Or this is case of our handcrafted caps file again? Michal

On Mon, May 26, 2025 at 15:08:09 +0200, Michal Prívozník wrote:
On 5/26/25 09:57, Peter Krempa via Devel wrote:
From: Peter Krempa <pkrempa@redhat.com>
Introduce a common capability for support of floppy devices by qemu.
Floppy support can be compiled out ('FDC', 'FDC_ISA', 'FDC_SYSBUS' qemu Kconfig options) and also isn't supported by all architectures. Add a capability that will check for 'isa-fdc' and 'sysbus-fdc' devices and signal that given qemu supports the floppy bus.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 1 + 22 files changed, 24 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 19716497d8..39cf23ebe7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -733,6 +733,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 475 */ "virtio-scsi.iothread-mapping", /* QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING */ "machine.virt.highmem-mmio-size", /* QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE */ + "bus-floppy", /* QEMU_CAPS_BUS_FLOPPY */ );
@@ -1386,6 +1387,8 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pvscsi", QEMU_CAPS_SCSI_PVSCSI }, { "spapr-tpm-proxy", QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY }, { "vmport", QEMU_CAPS_MACHINE_VMPORT_OPT }, + { "isa-fdc", QEMU_CAPS_BUS_FLOPPY }, + { "sysbus-fdc", QEMU_CAPS_BUS_FLOPPY }, /* * We don't probe 'esp' directly, because it is often reported * as present for all QEMU binaries, due to it being enabled diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index df33212a34..814ad222ae 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -714,6 +714,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 475 */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING, /* virtio-scsi supports per-virtqueue iothread mapping */ QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE, /* -machine virt,highmem-mmio-size=<size> */ + QEMU_CAPS_BUS_FLOPPY, /* floppy bus supported (isa-fdc/sysbus-fdc) */
QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml index 1afe4ff7f3..967b5e0cbc 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml @@ -168,6 +168,7 @@ <flag name='blockdev-set-active'/> <flag name='shim'/> <flag name='virtio-scsi.iothread-mapping'/> + <flag name='bus-floppy'/>
Does this mean qemu-system-ppc64 does support floppy? Or is the support specific to pseries-* machine types?
IIUC non-pseries machines do support floppy.
Or this is case of our handcrafted caps file again?
This is actually real caps. E.g. on fedora I get: $ qemu-system-ppc64 -device ? | grep fdc name "isa-fdc", bus ISA, desc "virtual floppy controller" (I do agree that having a *ISA* fdc on a ppc64 machine is questionable but it is what qemu actually reports.)

On 5/26/25 15:12, Peter Krempa wrote:
On Mon, May 26, 2025 at 15:08:09 +0200, Michal Prívozník wrote:
On 5/26/25 09:57, Peter Krempa via Devel wrote:
From: Peter Krempa <pkrempa@redhat.com>
Introduce a common capability for support of floppy devices by qemu.
Floppy support can be compiled out ('FDC', 'FDC_ISA', 'FDC_SYSBUS' qemu Kconfig options) and also isn't supported by all architectures. Add a capability that will check for 'isa-fdc' and 'sysbus-fdc' devices and signal that given qemu supports the floppy bus.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_sparc.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 1 + 22 files changed, 24 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 19716497d8..39cf23ebe7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -733,6 +733,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 475 */ "virtio-scsi.iothread-mapping", /* QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING */ "machine.virt.highmem-mmio-size", /* QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE */ + "bus-floppy", /* QEMU_CAPS_BUS_FLOPPY */ );
@@ -1386,6 +1387,8 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pvscsi", QEMU_CAPS_SCSI_PVSCSI }, { "spapr-tpm-proxy", QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY }, { "vmport", QEMU_CAPS_MACHINE_VMPORT_OPT }, + { "isa-fdc", QEMU_CAPS_BUS_FLOPPY }, + { "sysbus-fdc", QEMU_CAPS_BUS_FLOPPY }, /* * We don't probe 'esp' directly, because it is often reported * as present for all QEMU binaries, due to it being enabled diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index df33212a34..814ad222ae 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -714,6 +714,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 475 */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING, /* virtio-scsi supports per-virtqueue iothread mapping */ QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE, /* -machine virt,highmem-mmio-size=<size> */ + QEMU_CAPS_BUS_FLOPPY, /* floppy bus supported (isa-fdc/sysbus-fdc) */
QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml index 1afe4ff7f3..967b5e0cbc 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml @@ -168,6 +168,7 @@ <flag name='blockdev-set-active'/> <flag name='shim'/> <flag name='virtio-scsi.iothread-mapping'/> + <flag name='bus-floppy'/>
Does this mean qemu-system-ppc64 does support floppy? Or is the support specific to pseries-* machine types?
IIUC non-pseries machines do support floppy.
Or this is case of our handcrafted caps file again?
This is actually real caps. E.g. on fedora I get:
$ qemu-system-ppc64 -device ? | grep fdc name "isa-fdc", bus ISA, desc "virtual floppy controller"
(I do agree that having a *ISA* fdc on a ppc64 machine is questionable but it is what qemu actually reports.)
Fair enough. Michal

From: Peter Krempa <pkrempa@redhat.com> Refuse to use floppy devices if qemu doesn't support them. Reflect that also in capabilities. Both of the above is achieved by checking for the QEMU_CAPS_BUS_FLOPPY in qemuDomainMachineSupportsFloppy. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_domain.c | 3 +++ tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml | 2 -- tests/domaincapsdata/qemu_10.0.0.aarch64.xml | 2 -- tests/domaincapsdata/qemu_10.0.0.s390x.xml | 2 -- tests/domaincapsdata/qemu_8.1.0.s390x.xml | 2 -- tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml | 2 -- tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml | 2 -- tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml | 2 -- tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 2 -- tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 2 -- tests/domaincapsdata/qemu_8.2.0.s390x.xml | 2 -- tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml | 2 -- tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml | 2 -- tests/domaincapsdata/qemu_9.1.0.s390x.xml | 2 -- tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml | 2 -- tests/domaincapsdata/qemu_9.2.0.s390x.xml | 2 -- 16 files changed, 3 insertions(+), 30 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7a308d488b..cc3ab0a298 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11531,6 +11531,9 @@ bool qemuDomainMachineSupportsFloppy(const char *machine, virQEMUCaps *qemuCaps) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BUS_FLOPPY)) + return false; + /* PowerPC pseries based VMs do not support floppy device */ if (qemuDomainMachineIsPSeries(machine, virQEMUCapsGetArch(qemuCaps))) return false; diff --git a/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml index 17777d2531..8125821c00 100644 --- a/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml @@ -100,11 +100,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_10.0.0.aarch64.xml b/tests/domaincapsdata/qemu_10.0.0.aarch64.xml index 17777d2531..8125821c00 100644 --- a/tests/domaincapsdata/qemu_10.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_10.0.0.aarch64.xml @@ -100,11 +100,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_10.0.0.s390x.xml b/tests/domaincapsdata/qemu_10.0.0.s390x.xml index d66240307e..cf154c098b 100644 --- a/tests/domaincapsdata/qemu_10.0.0.s390x.xml +++ b/tests/domaincapsdata/qemu_10.0.0.s390x.xml @@ -234,11 +234,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsdata/qemu_8.1.0.s390x.xml index be8bb70245..0c1fd5ab6e 100644 --- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml +++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml @@ -323,11 +323,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml index 18979cf280..8aeab0bbdb 100644 --- a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml @@ -52,11 +52,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml index ce17865e24..e5c49e9095 100644 --- a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml @@ -100,11 +100,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml index 8f4ebbc107..5637efb412 100644 --- a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml @@ -56,11 +56,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml index ce17865e24..e5c49e9095 100644 --- a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml @@ -100,11 +100,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml index ee653c0c49..2e3514471f 100644 --- a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml +++ b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml @@ -49,11 +49,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_8.2.0.s390x.xml b/tests/domaincapsdata/qemu_8.2.0.s390x.xml index 78f91736d6..e7834e1982 100644 --- a/tests/domaincapsdata/qemu_8.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_8.2.0.s390x.xml @@ -323,11 +323,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml index b236ecbac4..1abc098bc3 100644 --- a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml @@ -62,11 +62,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml index 1399b980fd..5ff79a9244 100644 --- a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml @@ -51,11 +51,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_9.1.0.s390x.xml b/tests/domaincapsdata/qemu_9.1.0.s390x.xml index b73e0d0688..c335cb8339 100644 --- a/tests/domaincapsdata/qemu_9.1.0.s390x.xml +++ b/tests/domaincapsdata/qemu_9.1.0.s390x.xml @@ -186,11 +186,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml b/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml index b8615a0986..84f9ca786b 100644 --- a/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml +++ b/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml @@ -99,11 +99,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> diff --git a/tests/domaincapsdata/qemu_9.2.0.s390x.xml b/tests/domaincapsdata/qemu_9.2.0.s390x.xml index 605a3af5c7..e12aa5627b 100644 --- a/tests/domaincapsdata/qemu_9.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_9.2.0.s390x.xml @@ -186,11 +186,9 @@ <enum name='diskDevice'> <value>disk</value> <value>cdrom</value> - <value>floppy</value> <value>lun</value> </enum> <enum name='bus'> - <value>fdc</value> <value>scsi</value> <value>virtio</value> <value>usb</value> -- 2.49.0

On 5/26/25 09:57, Peter Krempa via Devel wrote:
Probe if qemu actually supports floppy controllers which can be compiled out with custom configs and reflect that in the capability XML.
Peter Krempa (4): qemu: domain: Introduce qemuDomainMachineSupportsFloppy qemu: Move floppy device support validation to validation code qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY qemuDomainMachineSupportsFloppy: Check for QEMU_CAPS_BUS_FLOPPY
44 files changed, 53 insertions(+), 86 deletions(-) delete mode 100644 tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.xml
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
participants (2)
-
Michal Prívozník
-
Peter Krempa