All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lai Jiangshan <laijs@cn.fujitsu.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>,
	Anthony Liguori <anthony@codemonkey.ws>,
	Lai Jiangshan <eag0628@gmail.com>,
	kvm@vger.kernel.org, qemu-devel@nongnu.org,
	Avi Kivity <avi@redhat.com>
Subject: [PATCH 2/2 V7] qemu,qmp: add inject-nmi qmp command
Date: Mon, 07 Mar 2011 17:46:28 +0800	[thread overview]
Message-ID: <4D74A974.6090509@cn.fujitsu.com> (raw)
In-Reply-To: <4D74A8C9.2020408@cn.fujitsu.com>

From: Lai Jiangshan <laijs@cn.fujitsu.com>
Date: Mon, 7 Mar 2011 17:05:15 +0800
Subject: [PATCH 2/2] qemu,qmp: add inject-nmi qmp command

inject-nmi command injects an NMI on all CPUs of guest.
It is only supported for x86 guest currently, it will
returns "Unsupported" error for non-x86 guest.

---
 hmp-commands.hx |    2 +-
 monitor.c       |   18 +++++++++++++++++-
 qmp-commands.hx |   29 +++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/hmp-commands.hx b/hmp-commands.hx
index 372bef4..8aea56c 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -743,7 +743,7 @@ ETEXI
         .args_type  = "cpu_index:i",
         .params     = "cpu",
         .help       = "inject an NMI on the given CPU",
-        .mhandler.cmd = do_inject_nmi,
+        .mhandler.cmd = do_inject_nmi_cpu,
     },
 #endif
 STEXI
diff --git a/monitor.c b/monitor.c
index 22ae3bb..aebcc0c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -2555,7 +2555,7 @@ static void do_wav_capture(Monitor *mon, const QDict *qdict)
 #endif
 
 #if defined(TARGET_I386)
-static void do_inject_nmi(Monitor *mon, const QDict *qdict)
+static void do_inject_nmi_cpu(Monitor *mon, const QDict *qdict)
 {
     CPUState *env;
     int cpu_index = qdict_get_int(qdict, "cpu_index");
@@ -2566,6 +2566,22 @@ static void do_inject_nmi(Monitor *mon, const QDict *qdict)
             break;
         }
 }
+
+static int do_inject_nmi(Monitor *mon, const QDict *qdict, QObject **ret_data)
+{
+    CPUState *env;
+
+    for (env = first_cpu; env != NULL; env = env->next_cpu)
+        cpu_interrupt(env, CPU_INTERRUPT_NMI);
+
+    return 0;
+}
+#else
+static int do_inject_nmi(Monitor *mon, const QDict *qdict, QObject **ret_data)
+{
+    qerror_report(QERR_UNSUPPORTED);
+    return -1;
+}
 #endif
 
 static void do_info_status_print(Monitor *mon, const QObject *data)
diff --git a/qmp-commands.hx b/qmp-commands.hx
index df40a3d..51f479e 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -430,6 +430,35 @@ Example:
 EQMP
 
     {
+        .name       = "inject-nmi",
+        .args_type  = "",
+        .params     = "",
+        .help       = "Inject an NMI on guest.\n"
+                      "Returns \"Unsupported\" error when the guest does"
+                      "not support NMI injection",
+        .user_print = monitor_user_noop,
+        .mhandler.cmd_new = do_inject_nmi,
+    },
+
+SQMP
+inject-nmi
+----------
+
+Inject an NMI on guest.
+
+Arguments: None.
+
+Example:
+
+-> { "execute": "inject-nmi" }
+<- { "return": {} }
+
+Note: inject-nmi is only supported for x86 guest currently, it will
+      returns "Unsupported" error for non-x86 guest.
+
+EQMP
+
+    {
         .name       = "migrate",
         .args_type  = "detach:-d,blk:-b,inc:-i,uri:s",
         .params     = "[-d] [-b] [-i] uri",
-- 
1.7.4

  parent reply	other threads:[~2011-03-07  9:45 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-07  9:43 [PATCH 0/2 V7] add inject-nmi qmp command Lai Jiangshan
2011-03-07  9:45 ` [PATCH 1/2] qemu,qmp: QError: New QERR_UNSUPPORTED Lai Jiangshan
2011-03-07  9:46 ` Lai Jiangshan [this message]
2011-04-04 10:59   ` [Qemu-devel] [PATCH 2/2 V7] qemu,qmp: add inject-nmi qmp command Daniel P. Berrange
2011-04-04 12:19     ` Markus Armbruster
2011-04-04 13:04       ` Luiz Capitulino
2011-04-04 13:09       ` Anthony Liguori
2011-04-04 13:34         ` Luiz Capitulino
2011-04-20  1:53         ` Lai Jiangshan
2011-04-20  3:02           ` Lai Jiangshan
2011-04-25 15:00           ` [PATCH 2/2 V7] qemu, qmp: " Luiz Capitulino
2011-04-04 12:54     ` [Qemu-devel] [PATCH 2/2 V7] qemu,qmp: " Avi Kivity
2011-04-04 13:05       ` Anthony Liguori
2011-04-06 17:47         ` Luiz Capitulino
2011-04-06 18:03           ` Anthony Liguori
2011-04-06 18:08             ` Luiz Capitulino
2011-04-06 18:17               ` Jan Kiszka
2011-04-06 19:00                 ` Luiz Capitulino
2011-04-06 19:27                   ` Peter Maydell
2011-04-06 19:34                     ` Anthony Liguori
2011-04-07  7:29                       ` Jan Kiszka
2011-04-07 18:10                       ` Peter Maydell
2011-04-07 18:32                         ` Anthony Liguori
2011-04-07 18:51                           ` Gleb Natapov
2011-04-07 19:04                             ` Blue Swirl
2011-04-07 19:17                               ` Gleb Natapov
2011-04-07 21:41                                 ` Anthony Liguori
2011-04-08  6:04                                   ` Gleb Natapov
2011-04-08 19:17                                     ` Blue Swirl
2011-04-08 19:32                                       ` Anthony Liguori
2011-04-08 20:07                                         ` Blue Swirl
2011-05-03 10:01                                       ` Jamie Lokier
2011-04-10  8:52                                   ` Avi Kivity
2011-04-11  7:01                                     ` Markus Armbruster
2011-04-11 17:15                                       ` Blue Swirl
2011-04-12  7:52                                         ` Avi Kivity
2011-04-12 18:31                                           ` Blue Swirl
2011-04-13 13:08                                             ` Luiz Capitulino
2011-04-13 19:56                                               ` [PATCH 2/2 V7] qemu, qmp: " Blue Swirl
2011-04-14  6:41                                                 ` Markus Armbruster
2011-04-14  9:55                                                 ` [Qemu-devel] [PATCH 2/2 V7] qemu,qmp: " Daniel P. Berrange
2011-04-15 16:37                                                   ` [PATCH 2/2 V7] qemu, qmp: " Blue Swirl
2011-04-07 21:39                             ` [Qemu-devel] [PATCH 2/2 V7] qemu,qmp: " Anthony Liguori
2011-04-08  5:54                               ` Gleb Natapov
2011-05-03  9:54                                 ` [PATCH 2/2 V7] qemu, qmp: " Jamie Lokier
2011-04-10  8:57                               ` [Qemu-devel] [PATCH 2/2 V7] qemu,qmp: " Avi Kivity
2011-04-20  6:19               ` [RFC PATCH 0/3 V8] QAPI: " Lai Jiangshan
2011-04-21  3:23                 ` Lai Jiangshan
2011-04-26 13:26                   ` Luiz Capitulino
2011-04-26 13:29                     ` [Qemu-devel] " Anthony Liguori
2011-04-27  1:54                       ` Lai Jiangshan
2011-04-27 14:33                         ` Luiz Capitulino
2011-04-28  3:35                           ` [PATCH 0/2 V9] hmp,qmp: add inject-nmi Lai Jiangshan
2011-04-29 22:24                             ` Luiz Capitulino
2011-04-28  3:35                           ` [PATCH 1/2 V9] qemu,qmp: QError: New QERR_UNSUPPORTED Lai Jiangshan
2011-04-28  3:35                           ` [PATCH 2/2 V9] qmp,inject-nmi: convert do_inject_nmi() to QObject Lai Jiangshan
2011-04-25 17:07                 ` [Qemu-devel] [RFC PATCH 0/3 V8] QAPI: add inject-nmi qmp command Michael Roth
2011-04-20  6:19               ` [RFC PATCH 1/3 V8] QError: Introduce QERR_UNSUPPORTED Lai Jiangshan
2011-04-20  6:19               ` [RFC PATCH 2/3 V8] qapi,nmi: add inject-nmi qmp command Lai Jiangshan
2011-04-20  6:19               ` [RFC PATCH 3/3 V8] qapi-hmp: Convert HMP nmi to use QMP Lai Jiangshan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D74A974.6090509@cn.fujitsu.com \
    --to=laijs@cn.fujitsu.com \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=avi@redhat.com \
    --cc=eag0628@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.