Re: [Qemu-devel] [PATCH 2/3] nmi: make cpu-index argument optional
Lai Jiangshan la...@cn.fujitsu.com writes: When the argument cpu-index is not given, then nmi command will inject NMI on all CPUs. This simulate the nmi button on physical machine. Signed-off-by: Lai Jiangshan la...@cn.fujitsu.com --- diff --git a/hmp-commands.hx b/hmp-commands.hx index 8de7aa3..d8fe4c0 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -721,9 +721,9 @@ ETEXI #if defined(TARGET_I386) { .name = nmi, -.args_type = cpu-index:i, -.params = cpu, -.help = inject an NMI on the given CPU, +.args_type = cpu-index:i?, +.params = [cpu], +.help = inject an NMI on all CPUs or the given CPU, .mhandler.cmd = do_inject_nmi, }, #endif diff --git a/monitor.c b/monitor.c index c16b39d..45a8dc2 100644 --- a/monitor.c +++ b/monitor.c @@ -2410,7 +2410,13 @@ static void do_wav_capture(Monitor *mon, const QDict *qdict) static void do_inject_nmi(Monitor *mon, const QDict *qdict) { CPUState *env; -int cpu_index = qdict_get_int(qdict, cpu-index); +int cpu_index = qdict_get_try_int(qdict, cpu-index, -1); Note that we interpret nmi -1 as nmi (no argument). Doesn't matter now. Does matter after the next patch, because that patch makes the command when the argument doesn't make sense. Except it doesn't for the non-sensical argument -1. Same problem with every existing use of qdict_get_try_int() in the monitor. Do we care? + +if (cpu_index == -1) { +for (env = first_cpu; env != NULL; env = env-next_cpu) +cpu_interrupt(env, CPU_INTERRUPT_NMI); +return; +} for (env = first_cpu; env != NULL; env = env-next_cpu) if (env-cpu_index == cpu_index) {
Re: [Qemu-devel] [PATCH 2/3] nmi: make cpu-index argument optional
On 12/21/2010 12:58 AM, Markus Armbruster wrote: Lai Jiangshan la...@cn.fujitsu.com writes: When the argument cpu-index is not given, then nmi command will inject NMI on all CPUs. This simulate the nmi button on physical machine. Signed-off-by: Lai Jiangshan la...@cn.fujitsu.com --- diff --git a/hmp-commands.hx b/hmp-commands.hx index 8de7aa3..d8fe4c0 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -721,9 +721,9 @@ ETEXI #if defined(TARGET_I386) { .name = nmi, -.args_type = cpu-index:i, -.params = cpu, -.help = inject an NMI on the given CPU, +.args_type = cpu-index:i?, +.params = [cpu], +.help = inject an NMI on all CPUs or the given CPU, .mhandler.cmd = do_inject_nmi, }, #endif diff --git a/monitor.c b/monitor.c index c16b39d..45a8dc2 100644 --- a/monitor.c +++ b/monitor.c @@ -2410,7 +2410,13 @@ static void do_wav_capture(Monitor *mon, const QDict *qdict) static void do_inject_nmi(Monitor *mon, const QDict *qdict) { CPUState *env; -int cpu_index = qdict_get_int(qdict, cpu-index); +int cpu_index = qdict_get_try_int(qdict, cpu-index, -1); Note that we interpret nmi -1 as nmi (no argument). Doesn't matter now. Does matter after the next patch, because that patch makes the command when the argument doesn't make sense. Except it doesn't for the non-sensical argument -1. Same problem with every existing use of qdict_get_try_int() in the monitor. Do we care? Good catch!! I will fix it. Tanks, Lai.