diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-04-19 08:54:53 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-04-19 08:54:53 +0100 |
commit | 05dd855d25a97c11c775ac8a8e61c9ddaa45ab64 (patch) | |
tree | 9800c172958b4ec3260f5fc5f1b94d3ce4390165 /xen/include/asm-x86/mce.h | |
parent | ba4608bf8c15d1539dfd177aef49b0edd4dbc92a (diff) | |
download | xen-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.h | 36 |
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 |