From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH v2 3/3] Reenter guest after instruction emulation failure if emulation was due to access to non-mmio address. Date: Thu, 08 Jul 2010 12:46:14 +0300 Message-ID: <4C359E66.1090201@redhat.com> References: <1278523006-21645-1-git-send-email-gleb@redhat.com> <20100708094112.GS4689@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: mtosatti@redhat.com, kvm@vger.kernel.org To: Gleb Natapov Return-path: Received: from mx1.redhat.com ([209.132.183.28]:20213 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755569Ab0GHJqQ (ORCPT ); Thu, 8 Jul 2010 05:46:16 -0400 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o689kF6b024216 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 8 Jul 2010 05:46:16 -0400 Received: from cleopatra.tlv.redhat.com (cleopatra.tlv.redhat.com [10.35.255.11]) by int-mx03.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o689kESe011794 for ; Thu, 8 Jul 2010 05:46:15 -0400 In-Reply-To: <20100708094112.GS4689@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 07/08/2010 12:41 PM, Gleb Natapov wrote: > When shadow pages are in use sometimes KVM try to emulate an instruction > when it accesses a shadowed page. If emulation fails KVM un-shadows the > page and reenter guest to allow vcpu to execute the instruction. If page > is not in shadow page hash KVM assumes that this was attempt to do MMIO > and reports emulation failure to userspace since there is no way to fix > the situation. This logic has a race though. If two vcpus tries to write > to the same shadowed page simultaneously both will enter emulator, but > only one of them will find the page in shadow page hash since the one who > founds it also removes it from there, so another cpu will report failure > to userspace and will abort the guest. > > Fix this by checking (in addition to checking shadowed page hash) that > page that caused the emulation belongs to valid memory slot. If it is > then reenter the guest to allow vcpu to reexecute the instruction. > > Applied, thanks. -- error compiling committee.c: too many arguments to function