mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
Add iTCO watchdog support
Supported only with q35 machine types. Signed-off-by: Martin Kletzander <mkletzan@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
1c61bd718a
commit
5b80e93e42
@ -838,6 +838,7 @@ VIR_ENUM_IMPL(virDomainWatchdogModel,
|
|||||||
"i6300esb",
|
"i6300esb",
|
||||||
"ib700",
|
"ib700",
|
||||||
"diag288",
|
"diag288",
|
||||||
|
"itco",
|
||||||
);
|
);
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virDomainWatchdogAction,
|
VIR_ENUM_IMPL(virDomainWatchdogAction,
|
||||||
|
@ -1747,6 +1747,7 @@ typedef enum {
|
|||||||
VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB,
|
VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB,
|
||||||
VIR_DOMAIN_WATCHDOG_MODEL_IB700,
|
VIR_DOMAIN_WATCHDOG_MODEL_IB700,
|
||||||
VIR_DOMAIN_WATCHDOG_MODEL_DIAG288,
|
VIR_DOMAIN_WATCHDOG_MODEL_DIAG288,
|
||||||
|
VIR_DOMAIN_WATCHDOG_MODEL_ITCO,
|
||||||
|
|
||||||
VIR_DOMAIN_WATCHDOG_MODEL_LAST
|
VIR_DOMAIN_WATCHDOG_MODEL_LAST
|
||||||
} virDomainWatchdogModel;
|
} virDomainWatchdogModel;
|
||||||
|
@ -5345,6 +5345,7 @@
|
|||||||
<value>i6300esb</value>
|
<value>i6300esb</value>
|
||||||
<value>ib700</value>
|
<value>ib700</value>
|
||||||
<value>diag288</value>
|
<value>diag288</value>
|
||||||
|
<value>itco</value>
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
<optional>
|
<optional>
|
||||||
|
@ -932,6 +932,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDef *dev,
|
|||||||
|
|
||||||
case VIR_DOMAIN_WATCHDOG_MODEL_IB700:
|
case VIR_DOMAIN_WATCHDOG_MODEL_IB700:
|
||||||
case VIR_DOMAIN_WATCHDOG_MODEL_DIAG288:
|
case VIR_DOMAIN_WATCHDOG_MODEL_DIAG288:
|
||||||
|
case VIR_DOMAIN_WATCHDOG_MODEL_ITCO:
|
||||||
case VIR_DOMAIN_WATCHDOG_MODEL_LAST:
|
case VIR_DOMAIN_WATCHDOG_MODEL_LAST:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1191,6 +1191,7 @@ qemuValidateDomainDefTPMs(const virDomainDef *def)
|
|||||||
static int
|
static int
|
||||||
qemuValidateDomainDefWatchdogs(const virDomainDef *def)
|
qemuValidateDomainDefWatchdogs(const virDomainDef *def)
|
||||||
{
|
{
|
||||||
|
bool found_itco = false;
|
||||||
ssize_t i = 0;
|
ssize_t i = 0;
|
||||||
|
|
||||||
for (i = 1; i < def->nwatchdogs; i++) {
|
for (i = 1; i < def->nwatchdogs; i++) {
|
||||||
@ -1204,6 +1205,15 @@ qemuValidateDomainDefWatchdogs(const virDomainDef *def)
|
|||||||
"with this QEMU binary"));
|
"with this QEMU binary"));
|
||||||
return -1;
|
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;
|
return 0;
|
||||||
@ -2410,6 +2420,21 @@ qemuValidateDomainWatchdogDef(const virDomainWatchdogDef *dev,
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
case VIR_DOMAIN_WATCHDOG_MODEL_LAST:
|
||||||
default:
|
default:
|
||||||
virReportEnumRangeError(virDomainWatchdogModel, dev->model);
|
virReportEnumRangeError(virDomainWatchdogModel, dev->model);
|
||||||
|
Loading…
Reference in New Issue
Block a user