[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86/MCE: add more strict sanity check of one SRAR case
# HG changeset patch # User Liu, Jinsong <jinsong.liu@xxxxxxxxx> # Date 1323943133 -3600 # Node ID 25f8952313ae683f41b634163f62651185d7be38 # Parent 0cd9f3e5f3e0eca34f58219c4d3fca10243e1fdd x86/MCE: add more strict sanity check of one SRAR case When RIPV = EIPV = 0, it's a little bit tricky. It may be an asynchronic error, currently we have no way to precisely locate whether the error occur at guest or hypervisor. To avoid handling error in wrong way, we treat it as unrecovered. Signed-off-by: Liu, Jinsong <jinsong.liu@xxxxxxxxx> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Committed-by: Jan Beulich <jbeulich@xxxxxxxx> --- diff -r 0cd9f3e5f3e0 -r 25f8952313ae xen/arch/x86/cpu/mcheck/mce_intel.c --- a/xen/arch/x86/cpu/mcheck/mce_intel.c Thu Dec 15 10:54:51 2011 +0100 +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c Thu Dec 15 10:58:53 2011 +0100 @@ -375,8 +375,18 @@ return 0; gstatus = mca_rdmsr(MSR_IA32_MCG_STATUS); - /* Xen is not pre-emptible */ - if ( !(gstatus & MCG_STATUS_RIPV) && !guest_mode(regs)) + + /* + * FIXME: When RIPV = EIPV = 0, it's a little bit tricky. It may be an + * asynchronic error, currently we have no way to precisely locate + * whether the error occur at guest or hypervisor. + * To avoid handling error in wrong way, we treat it as unrecovered. + * + * Another unrecovered case is RIPV = 0 while in hypervisor + * since Xen is not pre-emptible. + */ + if ( !(gstatus & MCG_STATUS_RIPV) && + (!(gstatus & MCG_STATUS_EIPV) || !guest_mode(regs)) ) return -1; return mce_action(regs, mctc) == MCER_RESET ? -1 : 0; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |