qemu: Enable iTCO watchdog by disabling its noreboot pin strap

In order for the iTCO watchdog to be operational we must disable the
noreboot pin strap in qemu.  This is the default starting from 8.0
machine types, but desirable for older ones as well.  And we can safely
do that since that is not guest-visible.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Martin Kletzander 2023-01-20 14:15:06 +01:00
parent 5b80e93e42
commit d81a27b981

View File

@ -4054,6 +4054,7 @@ qemuBuildWatchdogCommandLine(virCommand *cmd,
const char *action;
int actualAction;
ssize_t i = 0;
bool itco_pin_strap = false;
if (def->nwatchdogs == 0)
return 0;
@ -4063,6 +4064,12 @@ qemuBuildWatchdogCommandLine(virCommand *cmd,
watchdog = def->watchdogs[i];
/* iTCO is part of q35 and cannot be added */
if (watchdog->model == VIR_DOMAIN_WATCHDOG_MODEL_ITCO) {
itco_pin_strap = true;
continue;
}
if (qemuCommandAddExtDevice(cmd, &watchdog->info, def, qemuCaps) < 0)
return -1;
@ -4073,6 +4080,9 @@ qemuBuildWatchdogCommandLine(virCommand *cmd,
return -1;
}
if (itco_pin_strap)
virCommandAddArgList(cmd, "-global", "ICH9-LPC.noreboot=off", NULL);
/* qemu doesn't have a 'dump' action; we tell qemu to 'pause', then
libvirt listens for the watchdog event, and we perform the dump
ourselves. so convert 'dump' to 'pause' for the qemu cli. The