From: Peter Krempa <pkre...@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 <pkre...@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

Reply via email to