Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> --- cpus.c | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-)
diff --git a/cpus.c b/cpus.c index 1104d61..2c8d620 100644 --- a/cpus.c +++ b/cpus.c @@ -1469,33 +1469,14 @@ exit: void qmp_inject_nmi(Error **errp) { -#if defined(TARGET_I386) - CPUState *cs; + CPUState *cs = qemu_get_cpu(monitor_get_cpu_index()); + CPUClass *cc = CPU_GET_CLASS(cs); + int ret = -1; - CPU_FOREACH(cs) { - X86CPU *cpu = X86_CPU(cs); - - if (!cpu->apic_state) { - cpu_interrupt(cs, CPU_INTERRUPT_NMI); - } else { - apic_deliver_nmi(cpu->apic_state); - } + if (cs && cc->nmi) { + ret = cc->nmi(cs); } -#elif defined(TARGET_S390X) - CPUState *cs; - S390CPU *cpu; - - CPU_FOREACH(cs) { - cpu = S390_CPU(cs); - if (cpu->env.cpu_num == monitor_get_cpu_index()) { - if (s390_cpu_restart(S390_CPU(cs)) == -1) { - error_set(errp, QERR_UNSUPPORTED); - return; - } - break; - } + if (ret) { + error_set(errp, QERR_UNSUPPORTED); } -#else - error_set(errp, QERR_UNSUPPORTED); -#endif } -- 1.8.4.rc4