mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
qemu: Forbid most duplicated watchdogs
Most of them are platform devices and only i6300esb can be plugged multiple times into different PCI slots. Signed-off-by: Martin Kletzander <mkletzan@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
865b071ae8
commit
d2af152d1f
@ -26,6 +26,7 @@
|
|||||||
#include "qemu_domain.h"
|
#include "qemu_domain.h"
|
||||||
#include "qemu_process.h"
|
#include "qemu_process.h"
|
||||||
#include "domain_conf.h"
|
#include "domain_conf.h"
|
||||||
|
#include "virbitmap.h"
|
||||||
#include "virlog.h"
|
#include "virlog.h"
|
||||||
#include "virutil.h"
|
#include "virutil.h"
|
||||||
|
|
||||||
@ -1110,18 +1111,24 @@ qemuValidateDomainDefTPMs(const virDomainDef *def)
|
|||||||
static int
|
static int
|
||||||
qemuValidateDomainDefWatchdogs(const virDomainDef *def)
|
qemuValidateDomainDefWatchdogs(const virDomainDef *def)
|
||||||
{
|
{
|
||||||
bool found_itco = false;
|
g_autoptr(virBitmap) watchdogs = virBitmapNew(VIR_DOMAIN_WATCHDOG_MODEL_LAST);
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
for (i = 0; i < def->nwatchdogs; i++) {
|
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 (virBitmapIsBitSet(watchdogs, def->watchdogs[i]->model)) {
|
||||||
if (found_itco) {
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
_("domain can only have one watchdog with model '%1$s'"),
|
||||||
_("Multiple iTCO watchdogs are not supported"));
|
virDomainWatchdogModelTypeToString(def->watchdogs[i]->model));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
found_itco = true;
|
|
||||||
|
if (virBitmapSetBit(watchdogs, def->watchdogs[i]->model) < 0) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("Integrity error in watchdog models"));
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user