From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH -v4] KVM: Add VT-x machine check support Date: Mon, 08 Jun 2009 12:49:57 +0300 Message-ID: <4A2CDEC5.2070900@redhat.com> References: <1244453829.8361.602.camel@yhuang-dev.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , Andi Kleen To: Huang Ying Return-path: Received: from mx2.redhat.com ([66.187.237.31]:48760 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751308AbZFHJuI (ORCPT ); Mon, 8 Jun 2009 05:50:08 -0400 In-Reply-To: <1244453829.8361.602.camel@yhuang-dev.sh.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Huang Ying wrote: > From: Andi Kleen > > VT-x needs an explicit MC vector intercept to handle machine checks in the > hyper visor. > > It also has a special option to catch machine checks that happen > during VT entry. > > Do these interceptions and forward them to the Linux machine check > handler. Make it always look like user space is interrupted because > the machine check handler treats kernel/user space differently. > > Thanks to Jiang Yunhong for help and testing. > > v4: move exit_reason to struct vcpu_vmx, add is_machine_check() > > v3: Rebased on kvm.git > > v2: Handle machine checks still in interrupt off context > to avoid problems on preemptible kernels. > > Applied, thanks. > > + vmx->exit_reason = vmcs_read32(VM_EXIT_REASON); > + > + /* Handle machine checks before interrupts are enabled */ > + if ((vmx->exit_reason == EXIT_REASON_MCE_DURING_VMENTRY) || > + is_machine_check(exit_intr_info)) > + kvm_machine_check(); > + > I added a check here for exit_reason == EXCEPTION_NMI. I don't think exit_intr_info can be trusted otherwise. -- error compiling committee.c: too many arguments to function