Loading kvm-all.c +5 −5 Original line number Diff line number Diff line Loading @@ -593,11 +593,6 @@ int kvm_init(int smp_cpus) int ret; int i; if (smp_cpus > 1) { fprintf(stderr, "No SMP KVM support, use '-smp 1'\n"); return -EINVAL; } s = qemu_mallocz(sizeof(KVMState)); #ifdef KVM_CAP_SET_GUEST_DEBUG Loading Loading @@ -840,6 +835,11 @@ int kvm_cpu_exec(CPUState *env) } #endif if (kvm_arch_process_irqchip_events(env)) { ret = 0; break; } if (env->kvm_vcpu_dirty) { kvm_arch_put_registers(env, KVM_PUT_RUNTIME_STATE); env->kvm_vcpu_dirty = 0; Loading kvm.h +2 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run); int kvm_arch_pre_run(CPUState *env, struct kvm_run *run); int kvm_arch_process_irqchip_events(CPUState *env); int kvm_arch_get_registers(CPUState *env); /* state subset only touched by the VCPU itself during runtime */ Loading target-i386/kvm.c +16 −0 Original line number Diff line number Diff line Loading @@ -1073,6 +1073,22 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) return 0; } int kvm_arch_process_irqchip_events(CPUState *env) { if (env->interrupt_request & CPU_INTERRUPT_INIT) { kvm_cpu_synchronize_state(env); do_cpu_init(env); env->exception_index = EXCP_HALTED; } if (env->interrupt_request & CPU_INTERRUPT_SIPI) { kvm_cpu_synchronize_state(env); do_cpu_sipi(env); } return env->halted; } static int kvm_handle_halt(CPUState *env) { if (!((env->interrupt_request & CPU_INTERRUPT_HARD) && Loading target-ppc/kvm.c +5 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,11 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) return 0; } int kvm_arch_process_irqchip_events(CPUState *env) { return 0; } static int kvmppc_handle_halt(CPUState *env) { if (!(env->interrupt_request & CPU_INTERRUPT_HARD) && (msr_ee)) { Loading target-s390x/kvm.c +5 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,11 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) return 0; } int kvm_arch_process_irqchip_events(CPUState *env) { return 0; } static void kvm_s390_interrupt_internal(CPUState *env, int type, uint32_t parm, uint64_t parm64, int vm) { Loading Loading
kvm-all.c +5 −5 Original line number Diff line number Diff line Loading @@ -593,11 +593,6 @@ int kvm_init(int smp_cpus) int ret; int i; if (smp_cpus > 1) { fprintf(stderr, "No SMP KVM support, use '-smp 1'\n"); return -EINVAL; } s = qemu_mallocz(sizeof(KVMState)); #ifdef KVM_CAP_SET_GUEST_DEBUG Loading Loading @@ -840,6 +835,11 @@ int kvm_cpu_exec(CPUState *env) } #endif if (kvm_arch_process_irqchip_events(env)) { ret = 0; break; } if (env->kvm_vcpu_dirty) { kvm_arch_put_registers(env, KVM_PUT_RUNTIME_STATE); env->kvm_vcpu_dirty = 0; Loading
kvm.h +2 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run); int kvm_arch_pre_run(CPUState *env, struct kvm_run *run); int kvm_arch_process_irqchip_events(CPUState *env); int kvm_arch_get_registers(CPUState *env); /* state subset only touched by the VCPU itself during runtime */ Loading
target-i386/kvm.c +16 −0 Original line number Diff line number Diff line Loading @@ -1073,6 +1073,22 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) return 0; } int kvm_arch_process_irqchip_events(CPUState *env) { if (env->interrupt_request & CPU_INTERRUPT_INIT) { kvm_cpu_synchronize_state(env); do_cpu_init(env); env->exception_index = EXCP_HALTED; } if (env->interrupt_request & CPU_INTERRUPT_SIPI) { kvm_cpu_synchronize_state(env); do_cpu_sipi(env); } return env->halted; } static int kvm_handle_halt(CPUState *env) { if (!((env->interrupt_request & CPU_INTERRUPT_HARD) && Loading
target-ppc/kvm.c +5 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,11 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) return 0; } int kvm_arch_process_irqchip_events(CPUState *env) { return 0; } static int kvmppc_handle_halt(CPUState *env) { if (!(env->interrupt_request & CPU_INTERRUPT_HARD) && (msr_ee)) { Loading
target-s390x/kvm.c +5 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,11 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) return 0; } int kvm_arch_process_irqchip_events(CPUState *env) { return 0; } static void kvm_s390_interrupt_internal(CPUState *env, int type, uint32_t parm, uint64_t parm64, int vm) { Loading