[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Re: LSI: avoid infinite loops
From: |
Paul Brook |
Subject: |
Re: [Qemu-devel] Re: LSI: avoid infinite loops |
Date: |
Thu, 8 May 2008 01:52:11 +0100 |
User-agent: |
KMail/1.9.9 |
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