void qmp_inject_nmi(Error **errp) { #if defined(TARGET_I386) CPUState *cs; for (cs = first_cpu; cs != NULL; cs = cs->next_cpu) { X86CPU *cpu = X86_CPU(cs); CPUX86State *env = &cpu->env; if (!env->apic_state) { cpu_interrupt(cs, CPU_INTERRUPT_NMI); } else { apic_deliver_nmi(env->apic_state); } } #elif defined(TARGET_S390X) CPUState *cs; S390CPU *cpu; for (cs = first_cpu; cs != NULL; cs = cs->next_cpu) { 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; } } #else error_set(errp, QERR_UNSUPPORTED); #endif }
void s390_nmi(NMIState *n, int cpu_index, Error **errp) { CPUState *cs = qemu_get_cpu(cpu_index); if (s390_cpu_restart(S390_CPU(cs))) { error_setg(errp, QERR_UNSUPPORTED); } }