On 4/19/23 16:07, Martin Kletzander wrote:
Most of them are platform devices and only i6300esb can be plugged
multiple times into different PCI slots.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/qemu/qemu_validate.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index b2c3fd1785bc..2b205348f597 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -1110,19 +1110,21 @@ qemuValidateDomainDefTPMs(const virDomainDef *def)
static int
qemuValidateDomainDefWatchdogs(const virDomainDef *def)
{
- bool found_itco = false;
+ bool watchdogs[VIR_DOMAIN_WATCHDOG_MODEL_LAST] = {0};
We usually us virBitmap for this...
size_t i = 0;
for (i = 0; i < def->nwatchdogs; i++) {
+ if (def->watchdogs[i]->model == VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB)
+ continue;
- 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;
+ if (watchdogs[def->watchdogs[i]->model]) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("domain can only have one watchdog with model
'%1$s'"),
+
virDomainWatchdogModelTypeToString(def->watchdogs[i]->model));
+ return -1;
}
+
+ watchdogs[def->watchdogs[i]->model] = true;
}
return 0;
It should be fairly trivial to rewrite.
Michal