[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 1/6] MCE: Handle the vMCA bank correctly



Handle the vMCA bank correctly

Currently the virtual MCE MSR assume all MSRs range from 0 to MAX_NR_BANKS are 
always MCE MSR, this is not always correct. With this patch, the 
mce_rdmsr/mce_wrmsr will only handle vMCE MSR range from 0 to the MCA banks in 
the host platform.
Please notice that some MSR beyond current MCA banks in the host platform are 
really MCA MSRs, that should be handled by general MSR handler.

Signed-off-by: Jiang, Yunhong <yunhong.jiang@xxxxxxxxx>

diff -r 221c9b796e32 xen/arch/x86/cpu/mcheck/mce.c
--- a/xen/arch/x86/cpu/mcheck/mce.c     Tue Jan 26 00:33:03 2010 +0800
+++ b/xen/arch/x86/cpu/mcheck/mce.c     Tue Jan 26 00:52:04 2010 +0800
@@ -716,8 +716,8 @@ int mce_rdmsr(uint32_t msr, uint64_t *va
         bank = (msr - MSR_IA32_MC0_CTL) / 4;
         if ( bank >= (d->arch.vmca_msrs.mcg_cap & MCG_CAP_COUNT) )
         {
-            mce_printk(MCE_QUIET, "MCE: bank %u does not exist\n", bank);
-            ret = -1;
+            mce_printk(MCE_QUIET, "MCE: MSR %x is not MCA MSR\n", msr);
+            ret = 0;
             break;
         }
         switch (msr & (MSR_IA32_MC0_CTL | 3))
@@ -848,8 +848,8 @@ int mce_wrmsr(u32 msr, u64 val)
         bank = (msr - MSR_IA32_MC0_CTL) / 4;
         if ( bank >= (d->arch.vmca_msrs.mcg_cap & MCG_CAP_COUNT) )
         {
-            mce_printk(MCE_QUIET, "MCE: bank %u does not exist\n", bank);
-            ret = -1;
+            mce_printk(MCE_QUIET, "MCE: MSR %x is not MCA MSR\n", msr);
+            ret = 0;
             break;
         }
         switch ( msr & (MSR_IA32_MC0_CTL | 3) )


Attachment: bank.patch
Description: bank.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.