diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index f7b9f519a3..f7f22e50dc 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -5737,6 +5737,9 @@ qemu-kvm -net nic,model=? /dev/null
'none' — do nothing
'dump' — automatically dump the guest
Since 0.8.7
+ 'inject-nmi' — inject a non-maskable interrupt
+ into the guest
+ Since 1.3.0
Note 1: the 'shutdown' action requires that the guest
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 3014365bb5..304079745e 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3272,6 +3272,7 @@
pause
none
dump
+ inject-nmi
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 7564c2059e..e8202cff3f 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 7c339851a9..198cf582ba 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 c96a6e420f..8912bbb540 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 71e8f4bada..b1ee852383 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 baf4fa3a96..27d62e910a 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)