summaryrefslogtreecommitdiffstats
path: root/target/i386/kvm.c
diff options
context:
space:
mode:
authorLiran Alon2019-06-19 18:21:35 +0200
committerPaolo Bonzini2019-06-21 13:23:44 +0200
commit18ab37ba1cee290923240744288dbee8be9355fb (patch)
tree428d2947719dd27983a242a3b665b5dd5eb451ee /target/i386/kvm.c
parenttarget/i386: kvm: Re-inject #DB to guest with updated DR6 (diff)
downloadqemu-18ab37ba1cee290923240744288dbee8be9355fb.tar.gz
qemu-18ab37ba1cee290923240744288dbee8be9355fb.tar.xz
qemu-18ab37ba1cee290923240744288dbee8be9355fb.zip
target/i386: kvm: Block migration for vCPUs exposed with nested virtualization
Commit d98f26073beb ("target/i386: kvm: add VMX migration blocker") added a migration blocker for vCPU exposed with Intel VMX. However, migration should also be blocked for vCPU exposed with AMD SVM. Both cases should be blocked because QEMU should extract additional vCPU state from KVM that should be migrated as part of vCPU VMState. E.g. Whether vCPU is running in guest-mode or host-mode. Fixes: d98f26073beb ("target/i386: kvm: add VMX migration blocker") Reviewed-by: Maran Wilson <maran.wilson@oracle.com> Signed-off-by: Liran Alon <liran.alon@oracle.com> Message-Id: <20190619162140.133674-6-liran.alon@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target/i386/kvm.c')
-rw-r--r--target/i386/kvm.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index 9864aa09e6..f9872f1594 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -1299,7 +1299,7 @@ static int hyperv_init_vcpu(X86CPU *cpu)
}
static Error *invtsc_mig_blocker;
-static Error *vmx_mig_blocker;
+static Error *nested_virt_mig_blocker;
#define KVM_MAX_CPUID_ENTRIES 100
@@ -1597,13 +1597,13 @@ int kvm_arch_init_vcpu(CPUState *cs)
!!(c->ecx & CPUID_EXT_SMX);
}
- if ((env->features[FEAT_1_ECX] & CPUID_EXT_VMX) && !vmx_mig_blocker) {
- error_setg(&vmx_mig_blocker,
- "Nested VMX virtualization does not support live migration yet");
- r = migrate_add_blocker(vmx_mig_blocker, &local_err);
+ if (cpu_has_nested_virt(env) && !nested_virt_mig_blocker) {
+ error_setg(&nested_virt_mig_blocker,
+ "Nested virtualization does not support live migration yet");
+ r = migrate_add_blocker(nested_virt_mig_blocker, &local_err);
if (local_err) {
error_report_err(local_err);
- error_free(vmx_mig_blocker);
+ error_free(nested_virt_mig_blocker);
return r;
}
}
@@ -1674,7 +1674,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
fail:
migrate_del_blocker(invtsc_mig_blocker);
fail2:
- migrate_del_blocker(vmx_mig_blocker);
+ migrate_del_blocker(nested_virt_mig_blocker);
return r;
}