vMCE: Implement AMD MSRs

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Committed-by: Keir Fraser <keir@xen.org>
This commit is contained in:
Christoph Egger committed 2012-10-23 04:10:54 -07:00
1 parent ac46875641
commit 9b8733ac93
1 file changed
+33 -14
+33 -14
View File
@@ -106,24 +106,43 @@ enum mcheck_type amd_f10_mcheck_init(struct cpuinfo_x86 *c)
/* amd specific MCA MSR */
int vmce_amd_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
{
switch (msr) {
case MSR_F10_MC4_MISC1:
case MSR_F10_MC4_MISC2:
case MSR_F10_MC4_MISC3:
break;
}
switch (msr) {
case MSR_F10_MC4_MISC1: /* DRAM error type */
v->arch.vmce.bank[1].mci_misc = val;
mce_printk(MCE_VERBOSE, "MCE: wr msr %#"PRIx64"\n", val);
break;
case MSR_F10_MC4_MISC2: /* Link error type */
case MSR_F10_MC4_MISC3: /* L3 cache error type */
/* ignore write: we do not emulate link and l3 cache errors
* to the guest.
*/
mce_printk(MCE_VERBOSE, "MCE: wr msr %#"PRIx64"\n", val);
break;
default:
return 0;
}
return 1;
return 1;
}
int vmce_amd_rdmsr(const struct vcpu *v, uint32_t msr, uint64_t *val)
{
switch (msr) {
case MSR_F10_MC4_MISC1:
case MSR_F10_MC4_MISC2:
case MSR_F10_MC4_MISC3:
break;
}
switch (msr) {
case MSR_F10_MC4_MISC1: /* DRAM error type */
*val = v->arch.vmce.bank[1].mci_misc;
mce_printk(MCE_VERBOSE, "MCE: rd msr %#"PRIx64"\n", *val);
break;
case MSR_F10_MC4_MISC2: /* Link error type */
case MSR_F10_MC4_MISC3: /* L3 cache error type */
/* we do not emulate link and l3 cache
* errors to the guest.
*/
*val = 0;
mce_printk(MCE_VERBOSE, "MCE: rd msr %#"PRIx64"\n", *val);
break;
default:
return 0;
}
return 1;
return 1;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.