[PATCH 3/4] qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY

Peter Krempa via Devel posted 4 patches 3 months, 2 weeks ago
[PATCH 3/4] qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY
Posted by Peter Krempa via Devel 3 months, 2 weeks ago
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
Re: [PATCH 3/4] qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY
Posted by Michal Prívozník via Devel 3 months, 2 weeks ago
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
Re: [PATCH 3/4] qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY
Posted by Peter Krempa via Devel 3 months, 2 weeks ago
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.)
Re: [PATCH 3/4] qemu: capabilities: Introduce QEMU_CAPS_BUS_FLOPPY
Posted by Michal Prívozník via Devel 3 months, 2 weeks ago
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