]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: domain: Introduce qemuDomainMachineSupportsFloppy
authorPeter Krempa <pkrempa@redhat.com>
Mon, 26 May 2025 07:27:29 +0000 (09:27 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 26 May 2025 13:48:06 +0000 (15:48 +0200)
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>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_process.c
tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err

index b600dd38b8fc37af186d03ad9d964ac71a1f024a..19716497d8a5dc8a5250525a9be5058e31cce66b 100644 (file)
@@ -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);
     }
index a7e41983161b1611c6ee94e0754fbf0a2f4277fc..7a308d488b55c0047fe078191d469a896bcfebcd 100644 (file)
@@ -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;
+}
index ee6074c9f6ba48fe61cda8fc4b8f11053ee01e26..c7287eb669f7103f2daa33f34a967c914f8cb1a9 100644 (file)
@@ -1167,3 +1167,7 @@ qemuDomainCheckCPU(virArch arch,
                    virCPUDef *cpu,
                    virQEMUCapsHostCPUType compatCPU,
                    bool failIncompatible);
+
+bool
+qemuDomainMachineSupportsFloppy(const char *machine,
+                                virQEMUCaps *qemuCaps);
index 04e5c005a0181a3069598574d306224708ea585e..7e444bb8b4215258b1373fc474b1a797e1866416 100644 (file)
@@ -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;
         }
 
index b4b580a684afb11135f39cf36a4666d1d188f7f1..e00287728d6afd409a5267d623604f686c2a3f02 100644 (file)
@@ -1 +1 @@
-unsupported configuration: PowerPC pseries machines do not support floppy device
+unsupported configuration: this machine type do not support floppy devices