From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ram Pai Subject: Re: kvm: emulation failure Date: Sun, 21 Jun 2009 23:55:46 -0700 Message-ID: <1245653746.6262.365.camel@localhost> References: <1245439420.6262.349.camel@localhost> <200906221312.36795.sheng@linux.intel.com> Reply-To: linuxram@us.ibm.com Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, Anthony Liguori , Ryan Harper To: Sheng Yang Return-path: Received: from e33.co.us.ibm.com ([32.97.110.151]:36880 "EHLO e33.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751660AbZFVGzr (ORCPT ); Mon, 22 Jun 2009 02:55:47 -0400 Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e33.co.us.ibm.com (8.13.1/8.13.1) with ESMTP id n5M6rjUT017111 for ; Mon, 22 Jun 2009 00:53:45 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.2) with ESMTP id n5M6tn3T238462 for ; Mon, 22 Jun 2009 00:55:49 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n5M6tn3I027365 for ; Mon, 22 Jun 2009 00:55:49 -0600 In-Reply-To: <200906221312.36795.sheng@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: On Mon, 2009-06-22 at 13:12 +0800, Sheng Yang wrote: > On Saturday 20 June 2009 03:23:40 Ram Pai wrote: > > I see this problem with a x86 sles10 guest running on x86_64 intel host. > > If the guest is reset abruptly and rebooted, some where > > before grub sequence it hangs and the following message is seen in the > > logs > > > > emulation failed (pagetable) rip 7ed5 66 60 ac 20. > > > > I located this instruction sequence in isolinux.bin on the iso ;if that > > is relevant. > > > > > > I did some analysis and find that there is an ept violation, which is > > handled and then the next instruction '66 60' is attempted to decode > > and emulate. But decode fails. kvm continues loops in the kernel > > in __vcpu_run(). > > > > the code path is > > > > kvm_run() -> __vcpu_run() -> vcpu_enter_guest() -> kvm_handle_exit() -> > > handle_ept_violation() -> kvm_mmu_page_fault() -> emulate_instruction() -> > > x86_decode_insn() > > > > Hi Ram > > Seems KVM failed to emulate a unknown instruction. > > 00000000 6660 pushad > 00000002 AC lodsb > > And PUSHAD have not implemented in x86_emulate.c. Thanks Sheng for your response, Good. that was the conclusion i had reached reading the code. However was not sure whether the (a) the code path should have never reached there or (b) the code must have learnt to emulate pushad. Sounds like (b) is the case. > > But I am a little curious about why this code path was only triggered when > reset. Maybe other issue exists. What do you want me to check? I have seen ept violation code getting triggered a few number of times at various stages. But the one reported above is the only case where the instruction being emulated is 66 60. one more observation: seen only if the /boot partition is reiserfs. I have been unable to reproduce this with /boot being ext3. thanks and let me know, RP