From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ryan Harper Subject: Re: [PATCH] Fix QEMU vcpu thread race with apic_reset Date: Sat, 26 Apr 2008 00:33:13 -0500 Message-ID: <20080426053313.GT17938@us.ibm.com> References: <1209187574-21081-1-git-send-email-ryanh@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Avi Kivity To: kvm-devel@lists.sourceforge.net Return-path: Content-Disposition: inline In-Reply-To: <1209187574-21081-1-git-send-email-ryanh@us.ibm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org * Ryan Harper [2008-04-26 00:27]: > There is a race between when the vcpu thread issues a create ioctl and when > apic_reset() gets called resulting in getting a badfd error. > > main thread vcpu thread guilt refresh clipped my text short. main thread vcpu thread ----------- ----------- qemu/hw/pc.c:pc_new_cpu() cpu_init() cpu_x86_init() kvm_init_new_ap() ap_main_loop() *blocks* usleep() apic_init() kvm_set_lapic() kvm_ioctl with unitilized context badfd To fix this, ensure we create the vcpu in the vcpu thread before returning from kvm_init_new_ap. Synchronize on a new mutux, vcpu_mutex, and wait for the vcpuup condition before signaling to ensure the main thread is waiting before we send the signal. With this patch, I can launch 64 kvm guests, 1 second apart and not see any Bad File descriptor errors. Signed-off-by: Ryan Harper -- Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx (512) 838-9253 T/L: 678-9253 ryanh@us.ibm.com ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone