[libvirt] [PATCH v2 1/4] Support for a new watchdog action inject-nmi

Boris Fiuczynski fiuczy at linux.vnet.ibm.com
Wed Jun 24 09:28:41 UTC 2015


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 at linux.vnet.ibm.com>
Reviewed-by: Daniel Hansel <daniel.hansel at linux.vnet.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi at linux.vnet.ibm.com>
Reviewed-by: Tony Krowiak <akrowiak at linux.vnet.ibm.com>
---
 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




More information about the libvir-list mailing list