Lai Jiangshan <laijs@xxxxxxxxxxxxxx> 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 <laijs@xxxxxxxxxxxxxx> > --- > 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) { -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html