@@ -439,16 +439,25 @@ static int kvm_create_irqchip(KVMState *s)
{
int ret = 0;
#if defined(CONFIG_IOTHREAD)
+ ret = -1;
if (!kvm_check_extension(s, KVM_CAP_IRQCHIP))
- return -1;
+ goto failed;
ret = kvm_vm_ioctl(s, KVM_CREATE_IRQCHIP);
if (ret < 0)
- return ret;
+ goto failed;
s->irqchip_in_kernel = 1;
+
#endif
return ret;
+
+failed:
+ if (smp_cpus > 1) {
+ fprintf(stderr, "No SMP KVM support, use '-smp 1'\n");
+ ret = -EINVAL;
+ }
+ return ret;
}
int kvm_init(int smp_cpus)
@@ -460,11 +469,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
We don't support smp without irqchip in kernel, so only abort in that situation Signed-off-by: Glauber Costa <glommer@redhat.com> --- kvm-all.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-)