From: "Michael S. Tsirkin" <mst@redhat.com>
To: elena.ufimtseva@oracle.com
Cc: fam@euphon.net, john.g.johnson@oracle.com,
swapnil.ingle@nutanix.com, qemu-devel@nongnu.org,
kraxel@redhat.com, jag.raman@oracle.com, quintela@redhat.com,
armbru@redhat.com, kanth.ghatraju@oracle.com, felipe@nutanix.com,
thuth@redhat.com, ehabkost@redhat.com, konrad.wilk@oracle.com,
dgilbert@redhat.com, stefanha@redhat.com,
thanos.makatos@nutanix.com, rth@twiddle.net, kwolf@redhat.com,
berrange@redhat.com, mreitz@redhat.com,
ross.lagerwall@citrix.com, marcandre.lureau@gmail.com,
pbonzini@redhat.com
Subject: Re: [PATCH v9 00/20] Initial support for multi-process Qemu
Date: Wed, 23 Sep 2020 11:47:51 -0400 [thread overview]
Message-ID: <20200923114652-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20200827181231.22778-1-elena.ufimtseva@oracle.com>
On Thu, Aug 27, 2020 at 11:12:11AM -0700, elena.ufimtseva@oracle.com wrote:
> From: Elena Ufimtseva <elena.ufimtseva@oracle.com>
>
> Hello
>
> This is the v9 of the patchset. Thank you very much for the
> detailed feedback for v8. We appreciate your time. We believe
> we have address all the comments for v8 in the current series.
> Special thanks to Stefan Hajnoczi.
I think overall it's in a good shape.
IIUC migration isn't supported yet so needs to be blocked.
But otherwise I don't see why we won't merge this and
interate on features upstream.
> The v9 has the following changes:
> - Communication channel. Qemu side uses blocking call to send
> and receive the message from the remote and cannot progress
> further until the remote side replies. Enhanced the
> communication channel by dropping iothread lock before blocking
> on Qemu end. Use the co-routines on the remote end to avoid
> blocking QMP monitor;
> - removed the heartbeat functionality, it will be added later
> in a full extent;
> - fixed leaked errors and similar fixes;
> - eliminated bytestream passing over the channel;
> - The build system had to be changed in order to accomodate the
> latest changes in Qemu to use Kconfig/mason.
>
> To touch upon the history of this project, we posted the
> Proof Of Concept patches before the BoF session in 2018.
> Subsequently, we posted 8 versions on the qemu-devel mailist.
> You can find them by following the links below ([1] - [8]).
>
> Following people contributed to the design and
> implementation of this project:
> Jagannathan Raman <jag.raman@oracle.com>
> Elena Ufimtseva <elena.ufimtseva@oracle.com>
> John G Johnson <john.g.johnson@oracle.com>
> Stefan Hajnoczi <stefanha@redhat.com>
> Konrad Wilk <konrad.wilk@oracle.com>
> Kanth Ghatraju <kanth.ghatraju@oracle.com>
>
> We would like to thank QEMU community for your feedback in the
> design and implementation of this project.
>
> Qemu wiki page:
> https://wiki.qemu.org/Features/MultiProcessQEMU
>
> For the full concept writeup about QEMU multi-process, please refer to
> docs/devel/qemu-multiprocess.rst. Also see docs/qemu-multiprocess.txt for
> usage information.
>
> We welcome all your ideas, concerns, and questions for this patchset.
>
> [POC]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg566538.html
> [1]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg602285.html
> [2]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg624877.html
> [3]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg642000.html
> [4]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg655118.html
> [5]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg682429.html
> [6]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg697484.html
> [7]: https://patchew.org/QEMU/cover.1593273671.git.elena.ufimtseva@oracle.com/
> [8]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg727007.html
>
> Elena Ufimtseva (8):
> multi-process: add qio channel function to transmit
> multi-process: define MPQemuMsg format and transmission functions
> multi-process: define transmission functions in remote
> multi-process: introduce proxy object
> multi-process: add proxy communication functions
> multi-process: Forward PCI config space acceses to the remote process
> multi-process: perform device reset in the remote process
> multi-process: add configure and usage information
>
> Jagannathan Raman (11):
> memory: alloc RAM from file at offset
> multi-process: Add config option for multi-process QEMU
> multi-process: setup PCI host bridge for remote device
> multi-process: setup a machine object for remote device process
> multi-process: Initialize message handler in remote device
> multi-process: Associate fd of a PCIDevice with its object
> multi-process: setup memory manager for remote device
> multi-process: PCI BAR read/write handling for proxy & remote
> endpoints
> multi-process: Synchronize remote memory
> multi-process: create IOHUB object to handle irq
> multi-process: Retrieve PCI info from remote process
>
> John G Johnson (1):
> multi-process: add the concept description to
> docs/devel/qemu-multiprocess
>
> MAINTAINERS | 26 +
> backends/hostmem-memfd.c | 2 +-
> configure | 10 +
> docs/devel/index.rst | 1 +
> docs/devel/multi-process.rst | 966 ++++++++++++++++++++++++++++++++
> docs/multi-process.rst | 67 +++
> exec.c | 11 +-
> hw/i386/meson.build | 5 +
> hw/i386/remote-iohub.c | 123 ++++
> hw/i386/remote-memory.c | 58 ++
> hw/i386/remote-msg.c | 263 +++++++++
> hw/i386/remote-obj.c | 140 +++++
> hw/i386/remote.c | 79 +++
> hw/misc/ivshmem.c | 3 +-
> hw/pci-host/meson.build | 1 +
> hw/pci-host/remote.c | 75 +++
> hw/pci/memory-sync.c | 210 +++++++
> hw/pci/meson.build | 3 +
> hw/pci/proxy.c | 363 ++++++++++++
> include/exec/memory.h | 2 +
> include/exec/ram_addr.h | 2 +-
> include/hw/i386/remote-iohub.h | 42 ++
> include/hw/i386/remote-memory.h | 19 +
> include/hw/i386/remote-obj.h | 42 ++
> include/hw/i386/remote.h | 35 ++
> include/hw/pci-host/remote.h | 31 +
> include/hw/pci/memory-sync.h | 27 +
> include/hw/pci/pci_ids.h | 3 +
> include/hw/pci/proxy.h | 54 ++
> include/io/channel.h | 24 +
> include/io/mpqemu-link.h | 110 ++++
> include/qemu/mmap-alloc.h | 3 +-
> io/channel.c | 45 ++
> io/meson.build | 2 +
> io/mpqemu-link.c | 347 ++++++++++++
> meson.build | 1 +
> scripts/mpqemu-launcher.py | 49 ++
> softmmu/memory.c | 3 +-
> util/mmap-alloc.c | 7 +-
> util/oslib-posix.c | 2 +-
> 40 files changed, 3243 insertions(+), 13 deletions(-)
> create mode 100644 docs/devel/multi-process.rst
> create mode 100644 docs/multi-process.rst
> create mode 100644 hw/i386/remote-iohub.c
> create mode 100644 hw/i386/remote-memory.c
> create mode 100644 hw/i386/remote-msg.c
> create mode 100644 hw/i386/remote-obj.c
> create mode 100644 hw/i386/remote.c
> create mode 100644 hw/pci-host/remote.c
> create mode 100644 hw/pci/memory-sync.c
> create mode 100644 hw/pci/proxy.c
> create mode 100644 include/hw/i386/remote-iohub.h
> create mode 100644 include/hw/i386/remote-memory.h
> create mode 100644 include/hw/i386/remote-obj.h
> create mode 100644 include/hw/i386/remote.h
> create mode 100644 include/hw/pci-host/remote.h
> create mode 100644 include/hw/pci/memory-sync.h
> create mode 100644 include/hw/pci/proxy.h
> create mode 100644 include/io/mpqemu-link.h
> create mode 100644 io/mpqemu-link.c
> create mode 100755 scripts/mpqemu-launcher.py
>
> --
> 2.25.GIT
next prev parent reply other threads:[~2020-09-23 15:49 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-27 18:12 [PATCH v9 00/20] Initial support for multi-process Qemu elena.ufimtseva
2020-08-27 18:12 ` [PATCH v9 01/20] memory: alloc RAM from file at offset elena.ufimtseva
2020-08-27 18:12 ` [PATCH v9 02/20] multi-process: Add config option for multi-process QEMU elena.ufimtseva
2020-08-27 18:12 ` [PATCH v9 03/20] multi-process: setup PCI host bridge for remote device elena.ufimtseva
2020-09-14 15:46 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 04/20] multi-process: setup a machine object for remote device process elena.ufimtseva
2020-09-15 13:01 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 05/20] multi-process: add qio channel function to transmit elena.ufimtseva
2020-08-27 18:12 ` [PATCH v9 06/20] multi-process: define MPQemuMsg format and transmission functions elena.ufimtseva
2020-09-23 13:47 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 07/20] multi-process: define transmission functions in remote elena.ufimtseva
2020-09-23 14:02 ` Stefan Hajnoczi
2020-09-24 17:18 ` Elena Ufimtseva
2020-08-27 18:12 ` [PATCH v9 08/20] multi-process: Initialize message handler in remote device elena.ufimtseva
2020-09-23 14:10 ` Stefan Hajnoczi
2020-09-24 17:20 ` Elena Ufimtseva
2020-08-27 18:12 ` [PATCH v9 09/20] multi-process: Associate fd of a PCIDevice with its object elena.ufimtseva
2020-09-23 14:17 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 10/20] multi-process: setup memory manager for remote device elena.ufimtseva
2020-09-23 15:03 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 11/20] multi-process: introduce proxy object elena.ufimtseva
2020-09-23 15:06 ` Stefan Hajnoczi
2020-09-23 15:10 ` Michael S. Tsirkin
2020-09-24 14:33 ` Jag Raman
2020-08-27 18:12 ` [PATCH v9 12/20] multi-process: add proxy communication functions elena.ufimtseva
2020-09-23 15:55 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 13/20] multi-process: Forward PCI config space acceses to the remote process elena.ufimtseva
2020-09-23 16:01 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 14/20] multi-process: PCI BAR read/write handling for proxy & remote endpoints elena.ufimtseva
2020-09-24 7:51 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 15/20] multi-process: Synchronize remote memory elena.ufimtseva
2020-09-24 8:27 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 16/20] multi-process: create IOHUB object to handle irq elena.ufimtseva
2020-09-24 8:29 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 17/20] multi-process: Retrieve PCI info from remote process elena.ufimtseva
2020-09-24 8:30 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 18/20] multi-process: perform device reset in the " elena.ufimtseva
2020-09-24 8:31 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 19/20] multi-process: add the concept description to docs/devel/qemu-multiprocess elena.ufimtseva
2020-09-24 8:32 ` Stefan Hajnoczi
2020-08-27 18:12 ` [PATCH v9 20/20] multi-process: add configure and usage information elena.ufimtseva
2020-09-24 8:32 ` Stefan Hajnoczi
2020-09-23 15:47 ` Michael S. Tsirkin [this message]
2020-09-24 8:38 ` [PATCH v9 00/20] Initial support for multi-process Qemu Stefan Hajnoczi
2020-09-24 14:33 ` Jag Raman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200923114652-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=elena.ufimtseva@oracle.com \
--cc=fam@euphon.net \
--cc=felipe@nutanix.com \
--cc=jag.raman@oracle.com \
--cc=john.g.johnson@oracle.com \
--cc=kanth.ghatraju@oracle.com \
--cc=konrad.wilk@oracle.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=ross.lagerwall@citrix.com \
--cc=rth@twiddle.net \
--cc=stefanha@redhat.com \
--cc=swapnil.ingle@nutanix.com \
--cc=thanos.makatos@nutanix.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.