aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/mce.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-04-19 08:54:53 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-04-19 08:54:53 +0100
commit05dd855d25a97c11c775ac8a8e61c9ddaa45ab64 (patch)
tree9800c172958b4ec3260f5fc5f1b94d3ce4390165 /xen/include/asm-x86/mce.h
parentba4608bf8c15d1539dfd177aef49b0edd4dbc92a (diff)
downloadxen-05dd855d25a97c11c775ac8a8e61c9ddaa45ab64.tar.gz
xen-05dd855d25a97c11c775ac8a8e61c9ddaa45ab64.tar.bz2
xen-05dd855d25a97c11c775ac8a8e61c9ddaa45ab64.zip
Clean up MCA MSR virtualization and vMCE injection
Remove all virtual MCE related work into a seperated file. It also try to do some clean-up on the vMCE, including: a) renmae some function name like mce_init_msr/mce_rdmsr to be vmce_init_msr/vmce_rdmsr to make it more straightforward, b) make the vmca_msrs be a pointer in arch_domain, to decrease arch_domain's size c) extract per-bank MCA MSR access to be seperated function (bank_mce_wrmsr/bank_mce_rdmsr) to make it be a bit cleaner. d) A new file xen/include/asm-x86/mce.h is added for vmce related header. Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
Diffstat (limited to 'xen/include/asm-x86/mce.h')
-rw-r--r--xen/include/asm-x86/mce.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/xen/include/asm-x86/mce.h b/xen/include/asm-x86/mce.h
new file mode 100644
index 0000000000..d140803222
--- /dev/null
+++ b/xen/include/asm-x86/mce.h
@@ -0,0 +1,36 @@
+#include <xen/types.h>
+#include <public/arch-x86/xen-mca.h>
+#ifndef _XEN_X86_MCE_H
+#define _XEN_X86_MCE_H
+/* Define for GUEST MCA handling */
+#define MAX_NR_BANKS 30
+
+/* This entry is for recording bank nodes for the impacted domain,
+ * put into impact_header list. */
+struct bank_entry {
+ struct list_head list;
+ uint16_t bank;
+ uint64_t mci_status;
+ uint64_t mci_addr;
+ uint64_t mci_misc;
+};
+
+struct domain_mca_msrs
+{
+ /* Guest should not change below values after DOM boot up */
+ uint64_t mcg_cap;
+ uint64_t mcg_ctl;
+ uint64_t mcg_status;
+ uint64_t *mci_ctl;
+ uint16_t nr_injection;
+ struct list_head impact_header;
+ spinlock_t lock;
+};
+
+#define dom_vmce(x) ((x)->arch.vmca_msrs)
+
+/* Guest vMCE MSRs virtualization */
+extern int vmce_init_msr(struct domain *d);
+extern int vmce_wrmsr(uint32_t msr, uint64_t val);
+extern int vmce_rdmsr(uint32_t msr, uint64_t *val);
+#endif