On 12/01/2016 16:11, Alex Bennée wrote: > > Sorry for the late answer, I find some time to take a look at it. > > > > Seems you were right I fixed the exit issue and it seems it was one of > > the problem. > > I think we must double check how we use cpu->exit_request as Paolo > > removed SIG_IPI to exit the CPU. > > > > I found one additional issue and it seems booting well right now. > > The other thing that needs cleaning up is the tcg_current_cpu and > current_cpu. I suspect the former should go and the restrictions on the > later be loosend so the TLS current_cpu is available to deferred tasks.
Yes, you can make TLS current_cpu always non-NULL for multi-threaded TCG. tcg_current_cpu definitely should go, it doesn't make sense if you have multiple threads. > The thing I'm currently looking at is what happens when something like a > virtio completes in a non-CPU thread. It should just work. It will cause a cpu_interrupt under the BQL, and that sets cpu->interrupt_request. The code that modifies cpu->interrupt_request in the VCPU thread also runs under the BQL. Paolo
