On Mon, May 25, 2020 at 02:14:18AM -0700, Pratik Vyas wrote:
> * Claudio Jeker <cje...@diehard.n-r-g.com> [2020-05-25 10:14:11 +0200]:
> 
> > The problem is that the vm exit is handled by a different thread then the
> > event loop. So some event_add/evtimer_add calls are done from a different
> > thread then the main event loop (mainly interrupt processing).
> > 
> > One approach to fix this is to ensure that the event functions are
> > exclusivly used in the main event thread but as usual it is easy to
> > introduce bugs again. 
> 
> Hi Claudio,
> 
> I think it is possible to do this without too much complexity till we
> have one only one cpu.  Bascially, we have two threads right now that do
> event_add/evtimer_add, 
> 1) vmm_pipe / imsg comm channel between vmm and vm process
> 2) vcpu0 loop
> 
> I think it's possible to make the vmm_pipe be not its own thread and
> just be an event based implementation.
> 
> Dave actually discovered that if you disable vmm_pipe, this libevent
> state corruption does not occour.
> 
> I will take a stab at this.

Sure, this is a simple fix.
In the long run I guess we need to fix this better (also the way devices
are implemented could benefit from this, since they are currently too
synchronous to get a lot of performance out of them).

-- 
:wq Claudio

Reply via email to