[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch uq/master 9/9] kvm: enable smp > 1
From: |
Marcelo Tosatti |
Subject: |
[Qemu-devel] [patch uq/master 9/9] kvm: enable smp > 1 |
Date: |
Tue, 04 May 2010 09:45:27 -0300 |
User-agent: |
quilt/0.47-1 |
Process INIT/SIPI requests and enable -smp > 1.
Signed-off-by: Marcelo Tosatti <address@hidden>
Index: qemu/kvm-all.c
===================================================================
--- qemu.orig/kvm-all.c
+++ qemu/kvm-all.c
@@ -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
@@ -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;
Index: qemu/kvm.h
===================================================================
--- qemu.orig/kvm.h
+++ qemu/kvm.h
@@ -90,6 +90,8 @@ int kvm_arch_handle_exit(CPUState *env,
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 */
Index: qemu/target-i386/kvm.c
===================================================================
--- qemu.orig/target-i386/kvm.c
+++ qemu/target-i386/kvm.c
@@ -1073,6 +1073,22 @@ int kvm_arch_post_run(CPUState *env, str
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) &&
Index: qemu/target-ppc/kvm.c
===================================================================
--- qemu.orig/target-ppc/kvm.c
+++ qemu/target-ppc/kvm.c
@@ -224,6 +224,11 @@ int kvm_arch_post_run(CPUState *env, str
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)) {
Index: qemu/target-s390x/kvm.c
===================================================================
--- qemu.orig/target-s390x/kvm.c
+++ qemu/target-s390x/kvm.c
@@ -175,6 +175,11 @@ int kvm_arch_post_run(CPUState *env, str
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)
{
- [Qemu-devel] [patch uq/master 0/9] enable smp > 1 and related fixes, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 5/9] kvm: synchronize state from cpu context, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 4/9] port qemu-kvm's on_vcpu code, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 7/9] move stop/stopped CPU_COMMON fields after area zeroed by reset, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 6/9] add cpu_is_stopped helper, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 9/9] kvm: enable smp > 1,
Marcelo Tosatti <=
- [Qemu-devel] [patch uq/master 3/9] standardize on qemu_cpu_kick for signalling cpu thread(s), Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 1/9] kvm: set cpu_single_env around KVM_RUN ioctl, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 2/9] make SIG_IPI to tcg vcpu thread reliable, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] [patch uq/master 8/9] kvm: validate context for kvm cpu get/put operations, Marcelo Tosatti, 2010/05/04
- [Qemu-devel] Re: [patch uq/master 0/9] enable smp > 1 and related fixes, Anthony Liguori, 2010/05/05
- [Qemu-devel] Re: [patch uq/master 0/9] enable smp > 1 and related fixes, Avi Kivity, 2010/05/06