*devstr = NULL;
- if (!qemuDomainCheckCCWS390AddressSupport(domainDef, def->info, qemuCaps,
- "controller"))
- return -1;
-
if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
if ((qemuDomainSetSCSIControllerModel(domainDef, qemuCaps, &model)) < 0)
return -1;
static int
-qemuDomainDeviceDefValidateController(const virDomainControllerDef *controller)
+qemuDomainDeviceDefValidateController(const virDomainControllerDef *controller,
+ const virDomainDef *def,
+ virQEMUCapsPtr qemuCaps)
{
+ if (!qemuDomainCheckCCWS390AddressSupport(def, controller->info, qemuCaps,
+ "controller"))
+ return -1;
+
switch ((virDomainControllerType) controller->type) {
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
static int
qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
const virDomainDef *def,
- void *opaque ATTRIBUTE_UNUSED)
+ void *opaque)
{
int ret = 0;
+ virQEMUDriverPtr driver = opaque;
+ virQEMUCapsPtr qemuCaps = NULL;
+
+ if (!(qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache,
+ def->emulator)))
+ return -1;
switch ((virDomainDeviceType) dev->type) {
case VIR_DOMAIN_DEVICE_NET:
break;
case VIR_DOMAIN_DEVICE_CONTROLLER:
- ret = qemuDomainDeviceDefValidateController(dev->data.controller);
+ ret = qemuDomainDeviceDefValidateController(dev->data.controller, def,
+ qemuCaps);
break;
case VIR_DOMAIN_DEVICE_LEASE:
break;
}
+ virObjectUnref(qemuCaps);
return ret;
}