[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 8/9] target-i386: kvm: Use env->mcg_cap when setting
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 8/9] target-i386: kvm: Use env->mcg_cap when setting up MCE |
Date: |
Wed, 25 Nov 2015 18:19:15 +0100 |
From: Eduardo Habkost <address@hidden>
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 <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
target-i386/cpu.h | 2 ++
target-i386/kvm.c | 11 ++++-------
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index fc4a605..84edfd0 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -286,6 +286,8 @@
#define MCE_CAP_DEF (MCG_CTL_P|MCG_SER_P)
#define MCE_BANKS_DEF 10
+#define MCG_CAP_BANKS_MASK 0xff
+
#define MCG_STATUS_RIPV (1ULL<<0) /* restart ip valid */
#define MCG_STATUS_EIPV (1ULL<<1) /* ip points to correct instruction */
#define MCG_STATUS_MCIP (1ULL<<2) /* machine check in progress */
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 93d1f5e..90bd447 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);
--
1.8.3.1
- [Qemu-devel] [PULL 0/9] Misc patches for QEMU 2.5-rc2 (2015-11-25), Paolo Bonzini, 2015/11/25
- [Qemu-devel] [PULL 3/9] call bdrv_drain_all() even if the vm is stopped, Paolo Bonzini, 2015/11/25
- [Qemu-devel] [PULL 4/9] Revert "exec: silence hugetlbfs warning under qtest", Paolo Bonzini, 2015/11/25
- [Qemu-devel] [PULL 6/9] target-sparc: fix 32-bit truncation in fpackfix, Paolo Bonzini, 2015/11/25
- [Qemu-devel] [PULL 5/9] exec: remove warning about mempath and hugetlbfs, Paolo Bonzini, 2015/11/25
- [Qemu-devel] [PULL 8/9] target-i386: kvm: Use env->mcg_cap when setting up MCE,
Paolo Bonzini <=
- [Qemu-devel] [PULL 1/9] MAINTAINERS: Update TCG CPU cores section, Paolo Bonzini, 2015/11/25
- [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Paolo Bonzini, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Peter Maydell, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Paolo Bonzini, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Peter Maydell, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Paolo Bonzini, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Peter Maydell, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Paolo Bonzini, 2015/11/25
- Re: [Qemu-devel] [PULL 2/9] QEMU does not care about left shifts of signed negative values, Peter Maydell, 2015/11/25
[Qemu-devel] [PULL 7/9] target-i386: kvm: Abort if MCE bank count is not supported by host, Paolo Bonzini, 2015/11/25