diff options
author | Eduardo Habkost | 2015-11-25 18:19:15 +0100 |
---|---|---|
committer | Paolo Bonzini | 2015-11-26 16:48:11 +0100 |
commit | 2590f15b13cc57487518996b32bb7626b0d80909 (patch) | |
tree | 2ba9908a8dfde0ef600efa54228c70ce7436ea3c /target-i386/kvm.c | |
parent | target-i386: kvm: Abort if MCE bank count is not supported by host (diff) | |
download | qemu-2590f15b13cc57487518996b32bb7626b0d80909.tar.gz qemu-2590f15b13cc57487518996b32bb7626b0d80909.tar.xz qemu-2590f15b13cc57487518996b32bb7626b0d80909.zip |
target-i386: kvm: Use env->mcg_cap when setting up MCE
When setting up MCE, instead of using the MCE_*_DEF macros
directly, just filter the existing env->mcg_cap value.
As env->mcg_cap is already initialized as
MCE_CAP_DEF|MCE_BANKS_DEF at target-i386/cpu.c:mce_init(), this
doesn't change any behavior. But it will allow us to change
mce_init() in the future, to implement different defaults
depending on CPU model, machine-type or command-line parameters.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <1448471956-66873-9-git-send-email-pbonzini@redhat.com>
Diffstat (limited to 'target-i386/kvm.c')
-rw-r--r-- | target-i386/kvm.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 93d1f5eb6b..90bd447bed 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -784,21 +784,18 @@ int kvm_arch_init_vcpu(CPUState *cs) return ret; } - if (banks < MCE_BANKS_DEF) { + if (banks < (env->mcg_cap & MCG_CAP_BANKS_MASK)) { error_report("kvm: Unsupported MCE bank count (QEMU = %d, KVM = %d)", - MCE_BANKS_DEF, banks); + (int)(env->mcg_cap & MCG_CAP_BANKS_MASK), banks); return -ENOTSUP; } - mcg_cap &= MCE_CAP_DEF; - mcg_cap |= MCE_BANKS_DEF; - ret = kvm_vcpu_ioctl(cs, KVM_X86_SETUP_MCE, &mcg_cap); + env->mcg_cap &= mcg_cap | MCG_CAP_BANKS_MASK; + ret = kvm_vcpu_ioctl(cs, KVM_X86_SETUP_MCE, &env->mcg_cap); if (ret < 0) { fprintf(stderr, "KVM_X86_SETUP_MCE: %s", strerror(-ret)); return ret; } - - env->mcg_cap = mcg_cap; } qemu_add_vm_change_state_handler(cpu_update_state, env); |