From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KneuC-0007gX-Ik for qemu-devel@nongnu.org; Wed, 08 Oct 2008 15:41:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KneuB-0007g6-PR for qemu-devel@nongnu.org; Wed, 08 Oct 2008 15:41:08 -0400 Received: from [199.232.76.173] (port=33998 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KneuB-0007fz-JM for qemu-devel@nongnu.org; Wed, 08 Oct 2008 15:41:07 -0400 Received: from e6.ny.us.ibm.com ([32.97.182.146]:47741) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KneuB-0006fr-CV for qemu-devel@nongnu.org; Wed, 08 Oct 2008 15:41:07 -0400 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e6.ny.us.ibm.com (8.13.8/8.13.8) with ESMTP id m98JhjST032493 for ; Wed, 8 Oct 2008 15:43:45 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id m98JerF5236874 for ; Wed, 8 Oct 2008 15:40:53 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m98JerH0011413 for ; Wed, 8 Oct 2008 15:40:53 -0400 Message-ID: <48ED0CC3.7060608@us.ibm.com> Date: Wed, 08 Oct 2008 14:40:51 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <48EBE1D0.2050002@us.ibm.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH][RFT] Fix the regression with SPARC emulation Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: "qemu-devel@nongnu.org" , Aurelien Jarno Blue Swirl wrote: > On 10/8/08, Anthony Liguori wrote: > >> The attached patch should be the proper fix for the sparc performance >> regression. Unfortunately, this means abandoning signalfd() in favor of the >> signal handler/pipe trick but I don't see another solution to the problem. >> > > That's too bad, what was the problem? > signalfd() worked fine for KVM because KVM handles the main loop in a dedicated thread. This means select() is always running in that thread. With normal QEMU, something needs to kick the VCPU execution out of it's loop to handle the IO request. You need something like a signal to do because you need to be able to execute code to basically do cpu_interrupt. The signal-pipe stuff works before we can write to the pipe to queue up the io completion, but also do the cpu_interrupt. I was hoping to set SIGIO on the signalfd() to just have a signal handler that did cpu_interrupt but it doesn't appear that signalfd() supports SIGIO so that's not an option. > Maybe there should be two commits for future bisections, one that > reverses the signalfd patches and second one that adds the signal/pipe > stuff? > It would be difficult to do that because of the aio refactoring that came after the signalfd implementation. >> Please test and let me know if this works for all of your cases (it did for >> me with -clock unix and -clock dynticks). >> > > Works here too, with AIO and AIO disabled. > Okay, I'll commit. Regards, Anthony Liguori