From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH 2/2] vnc: don't mess up with iohandlers in the vnc thread Date: Thu, 10 Mar 2011 14:56:05 +0100 Message-ID: <4D78D875.2090101@redhat.com> References: <4D7767C0.6060609@siemens.com> <1299761979-15197-2-git-send-email-corentin.chary@gmail.com> <4D78CCDF.6090906@redhat.com> <4D78D603.5060000@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Corentin Chary , Jan Kiszka , Peter Lieven , qemu-devel , kvm@vger.kernel.org, Anthony Liguori To: Anthony Liguori Return-path: Received: from mx1.redhat.com ([209.132.183.28]:42334 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751137Ab1CJN4S (ORCPT ); Thu, 10 Mar 2011 08:56:18 -0500 In-Reply-To: <4D78D603.5060000@us.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: On 03/10/2011 02:45 PM, Anthony Liguori wrote: > On 03/10/2011 07:06 AM, Paolo Bonzini wrote: >> On 03/10/2011 01:59 PM, Corentin Chary wrote: >>> Instead, we now store the data in a temporary buffer, and use a socket >>> pair to notify the main thread that new data is available. >> >> You can use a bottom half for this instead of a special socket. >> Signaling a bottom half is async-signal- and thread-safe. > > Bottom halves are thread safe? > > I don't think so. > > They probably should be but they aren't today. Creating a new bottom half is not thread-safe, but scheduling one is. Assuming that you never use qemu_bh_schedule_idle, qemu_bh_schedule boils down to: if (bh->scheduled) return; bh->scheduled = 1; /* stop the currently executing CPU to execute the BH ASAP */ qemu_notify_event(); You may have a spurious wakeup if two threads race on the same bottom half (including the signaling thread racing with the IO thread), but overall you can safely treat them as thread-safe. Paolo