1 #ifndef _MCHECK_VMCE_H
2 #define _MCHECK_VMCE_H
3 
4 #include "x86_mca.h"
5 
6 int vmce_init(struct cpuinfo_x86 *c);
7 
8 #define dom0_vmce_enabled() (hardware_domain && hardware_domain->max_vcpus \
9         && hardware_domain->vcpu[0] \
10         && guest_enabled_event(hardware_domain->vcpu[0], VIRQ_MCA))
11 
12 int unmmap_broken_page(struct domain *d, mfn_t mfn, unsigned long gfn);
13 
14 int vmce_intel_rdmsr(const struct vcpu *, uint32_t msr, uint64_t *val);
15 int vmce_intel_wrmsr(struct vcpu *, uint32_t msr, uint64_t val);
16 int vmce_amd_rdmsr(const struct vcpu *, uint32_t msr, uint64_t *val);
17 int vmce_amd_wrmsr(struct vcpu *, uint32_t msr, uint64_t val);
18 
19 int fill_vmsr_data(struct mcinfo_bank *mc_bank, struct domain *d,
20                    uint64_t gstatus, int vmce_vcpuid);
21 
22 #define VMCE_INJECT_BROADCAST (-1)
23 int inject_vmce(struct domain *d, int vcpu);
24 
25 #endif
26