Base the check on the logic from qemuDomainCheckCCWS390AddressSupport,
which will be removed later.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_validate.c | 20 ++++++++++++++++++--
tests/qemuxml2argvtest.c | 2 +-
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 16f77611c8..b4f012253b 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -1276,6 +1276,7 @@ qemuValidateDomainDeviceDefZPCIAddress(virDomainDeviceInfo *info,
static int
qemuValidateDomainDeviceDefAddress(const virDomainDeviceDef *dev,
+ const virDomainDef *def,
virQEMUCaps *qemuCaps)
{
virDomainDeviceInfo *info;
@@ -1314,11 +1315,26 @@ qemuValidateDomainDeviceDefAddress(const virDomainDeviceDef *dev,
_("'virtio-s390' addresses are no longer
supported"));
return -1;
+ case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
+ if (!qemuDomainIsS390CCW(def)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("cannot use CCW address type for device '%s'
using machine type '%s'"),
+ NULLSTR(info->alias), def->os.machine);
+ return -1;
+ }
+
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CCW)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("CCW address type is not supported by this
QEMU"));
+ return -1;
+ }
+
+ break;
+
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
- case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
@@ -5006,7 +5022,7 @@ qemuValidateDomainDeviceDef(const virDomainDeviceDef *dev,
qemuCaps = qemuCapsLocal;
}
- if ((ret = qemuValidateDomainDeviceDefAddress(dev, qemuCaps)) < 0)
+ if ((ret = qemuValidateDomainDeviceDefAddress(dev, def, qemuCaps)) < 0)
return ret;
switch ((virDomainDeviceType)dev->type) {
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 1345c42b72..7a6ddc632c 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1893,7 +1893,7 @@ mymain(void)
DO_TEST("balloon-device-deflate",
QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
DO_TEST("balloon-ccw-deflate",
- QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
+ QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE, QEMU_CAPS_CCW);
DO_TEST("balloon-mmio-deflate",
QEMU_CAPS_DEVICE_VIRTIO_MMIO,
QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
--
2.31.1