VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB,
VIR_DOMAIN_WATCHDOG_MODEL_IB700,
VIR_DOMAIN_WATCHDOG_MODEL_DIAG288,
+ VIR_DOMAIN_WATCHDOG_MODEL_ITCO,
VIR_DOMAIN_WATCHDOG_MODEL_LAST
} virDomainWatchdogModel;
case VIR_DOMAIN_WATCHDOG_MODEL_IB700:
case VIR_DOMAIN_WATCHDOG_MODEL_DIAG288:
+ case VIR_DOMAIN_WATCHDOG_MODEL_ITCO:
case VIR_DOMAIN_WATCHDOG_MODEL_LAST:
return 0;
}
static int
qemuValidateDomainDefWatchdogs(const virDomainDef *def)
{
+ bool found_itco = false;
ssize_t i = 0;
for (i = 1; i < def->nwatchdogs; i++) {
"with this QEMU binary"));
return -1;
}
+
+ if (def->watchdogs[i]->model == VIR_DOMAIN_WATCHDOG_MODEL_ITCO) {
+ if (found_itco) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Multiple iTCO watchdogs are not supported"));
+ return -1;
+ }
+ found_itco = true;
+ }
}
return 0;
}
break;
+ case VIR_DOMAIN_WATCHDOG_MODEL_ITCO:
+ if (dev->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("%s model of watchdog is part of the machine and cannot have any address set."),
+ virDomainWatchdogModelTypeToString(dev->model));
+ return -1;
+ }
+ if (!qemuDomainIsQ35(def)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("%s model of watchdog is only part of q35 machine"),
+ virDomainWatchdogModelTypeToString(dev->model));
+ return -1;
+ }
+ break;
+
case VIR_DOMAIN_WATCHDOG_MODEL_LAST:
default:
virReportEnumRangeError(virDomainWatchdogModel, dev->model);