nmi: make cpu-index argument optional
PATCH 2/3 nmi: make cpu-index argument optional
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.
---
hmp-commands.hx +3 -3
@@ -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
monitor.c +7 -1
@@ -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 ); + +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) {
Quoted 29 lines · Lai Jiangshan
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 <[email protected]>---
hmp-commands.hx +3
-3@@ -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, }, #endifmonitor.c +0
-0
monitor.c static void do_wav_capture(Monitor *mon, const QDict *qdict) · line 2413
Quoted 5 lines
monitor.c +1
-1@@ -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?
Quoted 9 lines
monitor.c +6
-0+ +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) {
Quoted 34 lines · Markus Armbruster
Quoted 32 lines · Lai Jiangshan
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 <[email protected]>---
hmp-commands.hx +3
-3@@ -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, }, #endifmonitor.c +0
-0@@ -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;
Quoted 9 lines
monitor.c static void do_wav_capture(Monitor *mon, const QDict *qdict) · line 2413
Quoted 2 lines
monitor.c +1
-1-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.