summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2009-07-20 10:00:53 +0800
committerMarcelo Tosatti <mtosatti@redhat.com>2009-07-20 12:37:47 -0300
commitc68b2374c9048812f488e00ffb95db66c0bc07a7 (patch)
tree799e2a2cb6250b117462bcb955cef8e1bf1fbdbb /qemu-kvm.h
parentreplace qemu_kvm_cpu_env (diff)
downloadqemu-kvm-c68b2374c9048812f488e00ffb95db66c0bc07a7.tar.gz
qemu-kvm-c68b2374c9048812f488e00ffb95db66c0bc07a7.tar.bz2
qemu-kvm-c68b2374c9048812f488e00ffb95db66c0bc07a7.zip
Add MCE simulation support to qemu/kvm
KVM ioctls are used to initialize MCE simulation and inject MCE. The real MCE simulation is implemented in Linux kernel. The Kernel part has been merged. ChangeLog: v7: - Re-based on qemu-kvm.git/next branch v6: - Re-based on latest qemu-kvm.git v5: - Re-based on latest qemu-kvm.git v3: - Re-based on qemu/tcg MCE support patch v2: - Use new kernel MCE capability exportion interface. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'qemu-kvm.h')
-rw-r--r--qemu-kvm.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/qemu-kvm.h b/qemu-kvm.h
index d5291a371..c90639e54 100644
--- a/qemu-kvm.h
+++ b/qemu-kvm.h
@@ -116,6 +116,10 @@ int try_push_interrupts(kvm_context_t kvm);
struct kvm_msr_list *kvm_get_msr_list(kvm_context_t);
int kvm_get_msrs(kvm_vcpu_context_t, struct kvm_msr_entry *msrs, int n);
int kvm_set_msrs(kvm_vcpu_context_t, struct kvm_msr_entry *msrs, int n);
+int kvm_get_mce_cap_supported(kvm_context_t, uint64_t *mce_cap, int *max_banks);
+int kvm_setup_mce(kvm_vcpu_context_t vcpu, uint64_t *mcg_cap);
+struct kvm_x86_mce;
+int kvm_set_mce(kvm_vcpu_context_t vcpu, struct kvm_x86_mce *mce);
#endif
/*!
@@ -620,6 +624,21 @@ int kvm_inject_nmi(kvm_vcpu_context_t vcpu);
#endif
/*!
+ * \brief Simulate an x86 MCE
+ *
+ * This allows you to simulate a x86 MCE.
+ *
+ * \param cenv Which virtual CPU should get MCE injected
+ * \param bank Bank number
+ * \param status MSR_MCI_STATUS
+ * \param mcg_status MSR_MCG_STATUS
+ * \param addr MSR_MCI_ADDR
+ * \param misc MSR_MCI_MISC
+ */
+void kvm_inject_x86_mce(CPUState *cenv, int bank, uint64_t status,
+ uint64_t mcg_status, uint64_t addr, uint64_t misc);
+
+/*!
* \brief Query wheather in kernel pit is used
*
* \param kvm Pointer to the current kvm_context