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