qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC 24/29] vhost+postcopy: Lock around set_mem_table


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [RFC 24/29] vhost+postcopy: Lock around set_mem_table
Date: Tue, 3 Oct 2017 14:23:51 +0100
User-agent: Mutt/1.9.0 (2017-09-02)

* Dr. David Alan Gilbert (address@hidden) wrote:
> * Maxime Coquelin (address@hidden) wrote:
> > 
> > 
> > On 06/28/2017 09:00 PM, Dr. David Alan Gilbert (git) wrote:
> > > From: "Dr. David Alan Gilbert"<address@hidden>
> > > 
> > > **HACK - better solution needed **
> > > We have the situation where:
> > > 
> > >       qemu                      bridge
> > > 
> > >       send set_mem_table
> > >                                map memory
> > >    a)                          mark area with UFD
> > >                                send reply with map addresses
> > >    b)                          start using
> > >    c) receive reply
> > > 
> > >    As soon as (a) happens qemu might start seeing faults
> > > from memory accesses (but doesn't until b); but it can't
> > > process those faults until (c) when it's received the
> > > mmap addresses.
> > > 
> > > Make the fault handler spin until it gets the reply in (c).
> > > 
> > > At the very least this needs some proper locks, but preferably
> > > we need to split the message.
> > 
> > Yes, maybe the slave channel could be used to send the ufds with
> > a dedicated request? The backend would set the reply-ack flag, so that
> > it starts accessing the guest memory only when Qemu is ready to handle
> > faults.
> 
> Yes, that would make life a lot easier.
> 
> > Note that the slave channel support has not been implemented in Qemu's
> > libvhost-user yet, but this is something I can do if we feel the need.
> 
> Can you tell me a bit about how the slave channel works?

I've looked at the slave-channel; and I'm worried that it's not suitable
for this case.
The problem is that 'slave_read' is wired to a fd_handler that I think
is serviced by the main thread, and while postcopy is running I don't
want to rely on the operation of the main thread (since it could be
blocked by a page fault).
I could still use an explicit ack at that point though over the main
channel I think (or use the slave synchronously?).

Dave

> Dave
> 
> > Maxime
> --
> Dr. David Alan Gilbert / address@hidden / Manchester, UK
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]