This patch provides support for a new watchdog action "inject-nmi" which allows to define an inject of a non-maskable interrupt into a guest. Signed-off-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxxxxxxx> Reviewed-by: Daniel Hansel <daniel.hansel@xxxxxxxxxxxxxxxxxx> Reviewed-by: Stefan Zimmermann <stzi@xxxxxxxxxxxxxxxxxx> Reviewed-by: Tony Krowiak <akrowiak@xxxxxxxxxxxxxxxxxx> --- docs/formatdomain.html.in | 3 +++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 1 + src/conf/domain_conf.c | 3 ++- src/conf/domain_conf.h | 1 + src/qemu/qemu_monitor_json.c | 2 +- tools/virsh-domain.c | 3 ++- 7 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 95d8c45..a97e246 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -5738,6 +5738,9 @@ qemu-kvm -net nic,model=? /dev/null <li>'none' — do nothing</li> <li>'dump' — automatically dump the guest <span class="since">Since 0.8.7</span></li> + <li>'inject-nmi' — inject a non-maskable interrupt + into the guest + <span class="since">Since 1.3.0</span></li> </ul> <p> Note 1: the 'shutdown' action requires that the guest diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 3014365..3040797 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -3272,6 +3272,7 @@ <value>pause</value> <value>none</value> <value>dump</value> + <value>inject-nmi</value> </choice> </attribute> </optional> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 7564c20..e8202cf 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2842,6 +2842,7 @@ typedef enum { VIR_DOMAIN_EVENT_WATCHDOG_POWEROFF, /* Guest is forcibly powered off */ VIR_DOMAIN_EVENT_WATCHDOG_SHUTDOWN, /* Guest is requested to gracefully shutdown */ VIR_DOMAIN_EVENT_WATCHDOG_DEBUG, /* No action, a debug message logged */ + VIR_DOMAIN_EVENT_WATCHDOG_INJECTNMI,/* Inject a non-maskable interrupt into guest */ # ifdef VIR_ENUM_SENTINELS VIR_DOMAIN_EVENT_WATCHDOG_LAST diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 183e66c..369d155 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -506,7 +506,8 @@ VIR_ENUM_IMPL(virDomainWatchdogAction, VIR_DOMAIN_WATCHDOG_ACTION_LAST, "poweroff", "pause", "dump", - "none") + "none", + "inject-nmi") VIR_ENUM_IMPL(virDomainVideo, VIR_DOMAIN_VIDEO_TYPE_LAST, "vga", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index c96a6e4..8912bbb 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1315,6 +1315,7 @@ typedef enum { VIR_DOMAIN_WATCHDOG_ACTION_PAUSE, VIR_DOMAIN_WATCHDOG_ACTION_DUMP, VIR_DOMAIN_WATCHDOG_ACTION_NONE, + VIR_DOMAIN_WATCHDOG_ACTION_INJECTNMI, VIR_DOMAIN_WATCHDOG_ACTION_LAST } virDomainWatchdogAction; diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 71e8f4b..b1ee852 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -555,7 +555,7 @@ static void qemuMonitorJSONHandleRTCChange(qemuMonitorPtr mon, virJSONValuePtr d VIR_ENUM_DECL(qemuMonitorWatchdogAction) VIR_ENUM_IMPL(qemuMonitorWatchdogAction, VIR_DOMAIN_EVENT_WATCHDOG_LAST, - "none", "pause", "reset", "poweroff", "shutdown", "debug"); + "none", "pause", "reset", "poweroff", "shutdown", "debug", "inject-nmi"); static void qemuMonitorJSONHandleWatchdog(qemuMonitorPtr mon, virJSONValuePtr data) { diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index baf4fa3..27d62e9 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -11703,7 +11703,8 @@ VIR_ENUM_IMPL(vshDomainEventWatchdog, N_("reset"), N_("poweroff"), N_("shutdown"), - N_("debug")) + N_("debug"), + N_("inject-nmi")) static const char * vshDomainEventWatchdogToString(int action) -- 2.3.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list