From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39569) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sinqa-0002Nw-2U for qemu-devel@nongnu.org; Sun, 24 Jun 2012 10:31:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SinqY-0001hj-Ax for qemu-devel@nongnu.org; Sun, 24 Jun 2012 10:31:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35527) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SinqY-0001he-3D for qemu-devel@nongnu.org; Sun, 24 Jun 2012 10:31:26 -0400 Message-ID: <4FE724B6.8010607@redhat.com> Date: Sun, 24 Jun 2012 17:31:18 +0300 From: Avi Kivity MIME-Version: 1.0 References: <4FE4F56D.1020201@web.de> <4FE4F7F5.7030400@web.de> <20120623002259.GA13440@amt.cnet> <20120623090646.GA21908@amt.cnet> <4FE5AC75.1020504@web.de> <4FE6D4A6.9080708@redhat.com> <4FE71F44.9020800@web.de> In-Reply-To: <4FE71F44.9020800@web.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Liu Ping Fan , Gleb Natapov , kvm , Marcelo Tosatti , qemu-devel , Alexander Graf , Anthony Liguori On 06/24/2012 05:08 PM, Jan Kiszka wrote: > On 2012-06-24 10:49, Avi Kivity wrote: >> On 06/23/2012 02:45 PM, Jan Kiszka wrote: >>> >>> Hmm, we may need the iothread lock around cpu_set_apic_tpr for >>> !kvm_irqchip_in_kernel(). And as we are at it, apic_base manipulation >>> can be but there as well. >>> >>> With in-kernel irqchip, there is no such need. Also, no one accesses >>> eflags outside of the vcpu thread, independent of the irqchip mode. >> >> In fact !kvm_irqchip_in_kernel() is broken wrt the tpr. Interrupt >> injection needs to be done atomically, but currently we check the tpr >> from the injecting thread, which means the cpu thread can race with it. >> We need to move the check to the vcpu thread so that the guest vcpu is >> halted. > > So apic_set_irq basically needs to be deferred to vcpu context, right? > Will have a look. Correct. IIRC, the kernel's 0a5fff192388d2 made the problem much worse, but did not create it. It was either Vista or XP-64 which triggered the problem reliably. Copying Gleb in case he remembers more. -- error compiling committee.c: too many arguments to function