From: Anthony Liguori <anthony@codemonkey.ws>
To: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: aliguori@us.ibm.com, Lai Jiangshan <eag0628@gmail.com>,
kvm@vger.kernel.org, qemu-devel@nongnu.org,
Markus Armbruster <armbru@redhat.com>,
Avi Kivity <avi@redhat.com>,
Luiz Capitulino <lcapitulino@redhat.com>
Subject: Re: [Qemu-devel] [PATCH V6 3/4] qmp, nmi: convert do_inject_nmi() to QObject
Date: Wed, 23 Feb 2011 13:25:38 -0600 [thread overview]
Message-ID: <4D655F32.30307@codemonkey.ws> (raw)
In-Reply-To: <4D412AD2.1090509@cn.fujitsu.com>
On 01/27/2011 02:20 AM, Lai Jiangshan wrote:
> Make we can inject NMI via qemu-monitor-protocol.
> We use "inject-nmi" for the qmp command name, the meaning is clearer.
>
> Signed-off-by: Lai Jiangshan<laijs@cn.fujitsu.com>
> ---
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index ec1a4db..e763bf9 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -725,7 +725,8 @@ ETEXI
> .params = "[cpu]",
> .help = "Inject an NMI on all CPUs if no argument is given, "
> "otherwise inject it on the specified CPU",
> - .mhandler.cmd = do_inject_nmi,
> + .user_print = monitor_user_noop,
> + .mhandler.cmd_new = do_inject_nmi,
> },
> #endif
> STEXI
> diff --git a/monitor.c b/monitor.c
> index 387b020..1b1c0ba 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -2542,7 +2542,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 int do_inject_nmi(Monitor *mon, const QDict *qdict, QObject **ret_data)
> {
> CPUState *env;
> int cpu_index;
> @@ -2550,7 +2550,7 @@ static void do_inject_nmi(Monitor *mon, const QDict *qdict)
> if (!qdict_haskey(qdict, "cpu-index")) {
> for (env = first_cpu; env != NULL; env = env->next_cpu)
> cpu_interrupt(env, CPU_INTERRUPT_NMI);
> - return;
> + return 0;
> }
>
> cpu_index = qdict_get_int(qdict, "cpu-index");
> @@ -2560,8 +2560,10 @@ static void do_inject_nmi(Monitor *mon, const QDict *qdict)
> kvm_inject_interrupt(env, CPU_INTERRUPT_NMI);
> else
> cpu_interrupt(env, CPU_INTERRUPT_NMI);
> - break;
> + return 0;
> }
> +
> + return -1;
> }
> #endif
>
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 56c4d8b..a887dd5 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -429,6 +429,34 @@ Example:
>
> EQMP
>
> +#if defined(TARGET_I386)
> + {
> + .name = "inject-nmi",
> + .args_type = "cpu-index:i?",
> + .params = "[cpu]",
> + .help = "Inject an NMI on all CPUs if no argument is given, "
> + "otherwise inject it on the specified CPU",
> + .user_print = monitor_user_noop,
> + .mhandler.cmd_new = do_inject_nmi,
> + },
> +#endif
> +SQMP
> +inject-nmi
> +----------
> +
> +Inject an NMI on all CPUs or the given CPU (x86 only).
> +
> +Arguments:
> +
> +- "cpu-index": the index of the CPU to be injected NMI (json-int, optional)
> +
> +Example:
> +
> +-> { "execute": "inject-nmi", "arguments": { "cpu-index": 0 } }
> +<- { "return": {} }
>
Please describe all expected errors. Don't hide this command for
!defined(TARGET_I386), instead have it throw an error in the implementation.
Don't have commands that multiple behavior based on the presence or
absence of arguments. Make it take a list of cpus if you want the
ability to inject the NMI to more than one CPU.
Regards,
Anthony Liguori
> +
> +EQMP
> +
> {
> .name = "migrate",
> .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
>
>
next prev parent reply other threads:[~2011-02-23 19:25 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-27 8:20 [Qemu-devel] [PATCH V6 3/4] qmp, nmi: convert do_inject_nmi() to QObject Lai Jiangshan
2011-02-23 19:25 ` Anthony Liguori [this message]
2011-02-23 20:46 ` Luiz Capitulino
2011-02-24 8:33 ` Markus Armbruster
2011-02-24 14:40 ` Anthony Liguori
2011-02-24 16:20 ` Markus Armbruster
2011-02-24 17:12 ` Anthony Liguori
2011-02-25 9:54 ` Markus Armbruster
2011-02-25 22:20 ` Anthony Liguori
2011-02-28 7:53 ` Markus Armbruster
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=4D655F32.30307@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=aliguori@us.ibm.com \
--cc=armbru@redhat.com \
--cc=avi@redhat.com \
--cc=eag0628@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=laijs@cn.fujitsu.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).