From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [pvops-dom0]Let PV ops guest could handle Machine Check trap Date: Tue, 22 Sep 2009 09:36:34 -0700 Message-ID: <4AB8FD12.1090709@goop.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Ke, Liping" Cc: "Li, Haicheng" , "Jiang, Yunhong" , "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On 09/21/09 23:32, Ke, Liping wrote: > Hi, Jeremy and all > > This small patch lets pv ops guest handle machine check trap. When non > fatal mce error happens, xen will inject vMCE# to the impacted pv ops guest. > This patch allows pv ops guest could receive machine check trap and enter > its own machine check handler. > Have you tested this? This code is specifically to deal with traps installed using an IST stack. If the machine_check handler just works as-is then there's no need for that whole ifdef block. If it doesn't work, then we need a variant which has the right exception frame format. Thanks, J > Thanks & Regards, > Criping > > > From 5efc12fe8214d55e2becc2c4b6ec4a30531d7b60 Mon Sep 17 00:00:00 2001 > From: Liping Ke > Date: Tue, 22 Sep 2009 10:46:05 +0800 > Subject: [PATCH] Let PV guest handle machine check trap. > > This patch lets pv ops guest handle machine check trap. When non > fatal mce error happens, XEN will inject vMCE# to the pv ops guest > This patch allows pv ops guest could receive machine check trap > and enter its own machine check handler. > > Signed-off-by: Liping Ke > --- > arch/x86/xen/enlighten.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c > index 1edf6a8..3399a40 100644 > --- a/arch/x86/xen/enlighten.c > +++ b/arch/x86/xen/enlighten.c > @@ -476,7 +476,7 @@ static int cvt_gate_to_trap(int vector, const gate_desc *val, > return 0; > #ifdef CONFIG_X86_MCE > } else if (addr == (unsigned long)machine_check) { > - return 0; > + addr = (unsigned long)machine_check; > #endif > } else { > /* Some other trap using IST? */ >