From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JtuMs-0000rv-HP for qemu-devel@nongnu.org; Wed, 07 May 2008 20:52:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JtuMq-0000rU-KJ for qemu-devel@nongnu.org; Wed, 07 May 2008 20:52:17 -0400 Received: from [199.232.76.173] (port=57815 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JtuMq-0000rR-GI for qemu-devel@nongnu.org; Wed, 07 May 2008 20:52:16 -0400 Received: from mail.codesourcery.com ([65.74.133.4]:32906) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JtuMp-0008EW-UR for qemu-devel@nongnu.org; Wed, 07 May 2008 20:52:16 -0400 From: Paul Brook Subject: Re: [Qemu-devel] Re: LSI: avoid infinite loops Date: Thu, 8 May 2008 01:52:11 +0100 References: <20080507230206.GB28197@dmt> <20080507234239.GA28545@dmt> <200805080139.39137.paul@codesourcery.com> In-Reply-To: <200805080139.39137.paul@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain; charset="ansi_x3.4-1968" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200805080152.11677.paul@codesourcery.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alberto =?utf-8?q?Trevi=C3=B1o?= , Marcelo Tosatti On Thursday 08 May 2008, Paul Brook wrote: > On Thursday 08 May 2008, Marcelo Tosatti wrote: > > On Thu, May 08, 2008 at 12:21:54AM +0100, Paul Brook wrote: > > > On Thursday 08 May 2008, Marcelo Tosatti wrote: > > > > The Windows driver has SCRIPTS code which busy loops on main memory. > > > > So give the CPU's a chance to run if that happens. > > > > > > I'm kinda surprised this works. What causes the scripts engine to be > > > restarted? > > > > LSI_ISTAT0_SIGP. > > In that case my surprise continues, and this is looking like an > unbelievably horrid hack. > > By my reading you're making LSI_ISTAT0_SIGP effect whatever instruction > happens to be executing when we stall. You get doubly lucky because (a) the > guest OS decides to bang on SIGP, even though it doesn't need to. And (b) > the last instruction executed happens to have set dnad to a value that > "works". I'm guessing you always happen to stop execution on the > conditional jump instruction and taking that jump doesn't cause any bad > effects, right? Oh, I'd also be worried what happens if an async IO operation completes at this point. lsi_command_complete is liable to trample all over your state. Paul