The remote process sends the VMSD to the Proxy object, on the source
side
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
New patch in v4
migration/savevm.c | 27 +++
migration/savevm.h | 2 ++
remote/remote
Adds the handler to process message from QEMU,
Initialize remote process main loop, handles SYNC_SYSMEM
message by updating its "system_memory" container using
shared file descriptors received from QEMU.
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Signed-off-by: J
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
docs/qemu-multiprocess.txt | 86 ++
1 file changed, 86 insertions(+)
create mode 100644 docs/qemu-multiprocess.txt
diff --git
From: Elena Ufimtseva
The remote process accepts the VMSD from Proxy object and
restores it
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
New patch in v4
migration/savevm.c | 36
migration/savevm.h
From: Elena Ufimtseva
The Proxy object loads the VMSD of remote process in source
and send it to the remote process in the destination
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
New patch in v4
hw/proxy/qemu-proxy.c| 50
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
New patch in v3
remote/remote-main.c | 11 +++
remote/remote-opts.c | 10 ++
2 files changed, 21 insertions(+)
diff --git a/remote/remote-main.c b/remote/remote-main.c
index
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
New patch in v3
qemu-options.hx | 21 +
1 file changed, 21 insertions(+)
diff --git a/qemu-options.hx b/qemu-options.hx
index 996b6fb..4734e8e 100644
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
include/monitor/qdev.h | 1 +
softmmu/vl.c | 105 +
vl-parse.c | 31 +++
vl.h
The remote process sends the VMSD to the Proxy object, on the source
side
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
migration/savevm.c | 27 +++
migration/savevm.h | 2 ++
remote/remote-main.c | 43
Collect the VMSD from remote process on the source and save
it to the channel leading to the destination
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
v4 -> v5:
- Using qemu_file_shutdown() instead of qemu_thread_cancel(). Removed pa
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
qemu-options.hx | 21 +
1 file changed, 21 insertions(+)
diff --git a/qemu-options.hx b/qemu-options.hx
index ac315c1..2c5e97f 100644
--- a/qemu
Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
accel/stubs/tcg-stub.c | 10 +++
configure | 4 ++
include/qemu-common.h | 8 +++
stubs/gdbstub.c| 23 +++
stubs/migration.c | 162 +
stubs
process receives
the message and processes it in the handler for SYNC_SYSMEM message.
TODO: No need to create object for remote memory listener.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
Makefile.target| 3 +
hw/proxy
Build system changes to enable QMP module in the remote process
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
Makefile.objs | 9 +
Makefile.target| 35 +--
hmp-commands.hx| 5 +--
hw
Perform device reset in the remote process when QEMU performs
device reset. This is required to reset the internal state
(like registers, etc...) of emulated devices
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
V4 -> v5:
- Device re
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
remote/Makefile.objs | 1 +
remote/remote-main.c | 11 ++
remote/remote-opts.c | 99
remote/remote-opts.h | 15
Add a configuration option to separate multi-process code
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
configure | 11 +++
1 file changed, 11 insertions(+)
diff --git a/configure b/configure
index 48d6f89..ab1e344 100755
From: Elena Ufimtseva
Can be used with -d rdebug command options when starting qemu.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Reviewed-by: Stefan Hajnoczi
---
include/qemu/log.h | 1 +
util/log.c | 2 ++
2 files changed, 3
. In case
of pci config write it forwards it to the remote device using
communication channel set by proxy-link object.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
v4 -> v5:
- Switched to execv
hw/Makefile.objs | 2 +
hw/pr
From: Elena Ufimtseva
Receive by remote side the configuration messages and build the
device object from JSON device descriptions.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
include/hw/qdev-core.h | 2 +
qdev-monitor.c | 2
remote-machine object sets up various subsystems of the remote device
process. Instantiate PCI host bridge object and initialize RAM, IO &
PCI memory regions.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
v4 -> v5:
- Refactor notifi
PCI host bridge is setup for the remote device process. It is
implemented using remote-pcihost object. It is an extension of the PCI
host bridge setup by QEMU.
Remote-pcihost configures a PCI bus which could be used by the remote
PCI device to latch on to.
Signed-off-by: Jagannathan Raman
Relocate machine_int and exit notifiers into common code
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
include/sysemu/sysemu.h | 2 ++
softmmu/vl.c| 42 --
util/notify.c | 43
ived to improve this
patchset. We also received valuable feedback and direction on future
improvements from the bi-weekly KVM community conference. We have
incorporated all the feedback in the current version of the series, v5.
Following people contributed to this patchset:
John G Johnson
Jagannathan R
In some cases, for example MMIO read, QEMU has to wait for the remote to
complete a command before proceeding. An eventfd based mechanism is
added to synchronize QEMU & remote process.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
includ
From: Elena Ufimtseva
In order to detect remote processes which are hung, the
proxy periodically sends heartbeat messages to confirm if
the remote process is alive
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
v4 -> v5:
- Heart b
From: Elena Ufimtseva
To re-use for device initialization for remote emulated
devices and parsing options for remote process.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
Makefile.objs| 5 ++
remote/Makefile.objs | 1
From: Elena Ufimtseva
Do not allow BAR,MMIO handlers and irq setup to run before
the configuration of the devices completes.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
remote/remote-main.c | 27 ++-
1 file
-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
---
hw/proxy/qemu-proxy.c | 65 ++
include/hw/proxy/qemu-proxy.h | 22 +++--
include/io/mpqemu-link.h | 12 +++
remote/remote-main.c | 73
From: Elena Ufimtseva
The remote process accepts the VMSD from Proxy object and
restores it
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
migration/savevm.c | 36
migration/savevm.h | 1 +
remote
Retrieve PCI configuration info about the remote device and
configure the Proxy PCI object based on the returned information
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
New Patch in v5. Removes per-device proxy and adds support
From: Elena Ufimtseva
Add processing of command line options for devices emulated
in the remote process.
After remote devices are created along with their proxies,
signal the proxies to finish the configuration steps.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off
-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
v4 -> v5:
- Refactored remote_ram_init_from_fd into common code
Makefile.target | 2 ++
exec.c | 17 +
include/exec/ram_addr.h | 2 ++
include/io/mpqemu-link.h |
From: Elena Ufimtseva
Add functions to configure remote devices.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
v4 -> v5:
- Fixed qstr leak issue
hw/proxy/qemu-proxy.c | 56 ++-
include
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
v4 -> v5:
- Added "exec" suboption to get the executable's name
- Addressed feedback about variable names
- Removed redundant check for spawning a proce
From: Elena Ufimtseva
This is handled while parsing the command line options.
The parsed options are being sent to remote process
as the messgaes containing JSON strings.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
v4 -> v5:
- Remo
gned-off-by: Jagannathan Raman
---
chardev/char.c| 14 ++
include/chardev/char.h| 1 +
include/monitor/monitor.h | 2 ++
monitor/monitor.c | 40 ++-
remote/remote-main.c | 1 +
remote/remote-opts.c | 1 +
soft
Using a separate communication channel for MMIO helps
with improving Performance
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
hw/proxy/qemu-proxy.c | 51 ---
include/hw/proxy/qemu-proxy.h | 1
From: Elena Ufimtseva
Add "targets" field to HMP command definition to select the targets
which would be supported by each command
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
hmp-commands-info.hx | 10 ++
hmp-c
Allow RAM MemoryRegion to be created from an offset in a file, instead
of allocating at offset of 0 by default. This is needed to synchronize
RAM between QEMU & remote process.
This will be needed for the following patches.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Si
Modify Makefile to support the building of the remote
device process. Implements main() function of remote
device process.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
Makefile| 2 ++
Makefile.objs | 26
Introduce SCSI_PROCESS & REMOTE_PROCESS build flags to separate
code that applies only to remote processes.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
Makefile.target | 4
rules.mak | 2 +-
2 files changed, 5 insertions(+
From: Elena Ufimtseva
The Proxy object loads the VMSD of remote process in source
and send it to the remote process in the destination
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
hw/proxy/qemu-proxy.c| 50
ived on the communication channel.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
v4 -> v5:
- Cleaned up included header files
include/io/mpqemu-link.h | 138 ++
io/Makefile.objs | 2 +
io/mpqemu-link.c
From: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
remote/remote-main.c | 10 +-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/remote/remote-main.c b/remote/remote-main.c
index 3a67cb9..455cfb6 100644
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
v4 -> v5:
- Using event_notifier_test_and_clear
- Using event_notifier_cleanup()
- The token is not malloced
Makefile.target | 1 +
hw/Makefile.objs | 2 -
hw/proxy/Makefile.objs|
Adds the handler to process message from QEMU,
Initialize remote process main loop, handles SYNC_SYSMEM
message by updating its "system_memory" container using
shared file descriptors received from QEMU.
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Signed-off-by: J
G Johnson
Signed-off-by: Jagannathan Raman
---
hw/proxy/qemu-proxy.c | 13 -
include/hw/proxy/qemu-proxy.h | 1 +
qdev-monitor.c| 2 +-
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/hw/proxy/qemu-proxy.c b/hw/proxy/qemu-proxy.c
index 741f02
From: Elena Ufimtseva
If the remote process is alive, it responds to proxy's heartbeat
messages
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
remote/remote-main.c | 5 +
1 file changed, 5 insertions(+)
diff --git a/remote/remote
From: Elena Ufimtseva
Synchronize the runstate of the remote process with that of QEMU
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
hw/proxy/qemu-proxy.c | 26 ++
include/hw/proxy/qemu-proxy.h | 2
Add Makefile support to enable migration in remote process
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
Makefile.objs | 4 +++-
Makefile.target | 1 +
migration/Makefile.objs | 13 -
net/Makefile.objs
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
remote/remote-main.c | 11 +++
remote/remote-opts.c | 10 ++
2 files changed, 21 insertions(+)
diff --git a/remote/remote-main.c b/remote/remote-main.c
index 23fc0df..58d9905
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
docs/qemu-multiprocess.txt | 86 ++
1 file changed, 86 insertions(+)
create mode 100644 docs/qemu-multiprocess.txt
diff --git
From: Elena Ufimtseva
Add support to allow multiple devices to be configured in the
remote process
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
hw/proxy/qemu-proxy.c | 4 ++-
include/hw/proxy/qemu-proxy.h | 3 +++
include/io
Add stub functions that are needed during compile time but not in
runtime.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
accel/stubs/kvm-stub.c| 5 +++
accel/stubs/tcg-stub.c| 97
From: Elena Ufimtseva
Validate the incoming commands to confirm that they would not cause any
errors in the remote process.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
hw/proxy/qemu-proxy.c| 6 +++-
include/io/mpqemu-link.h | 2
From: Elena Ufimtseva
runstate_check file is refactored into vl-parse.c
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
Makefile.objs | 2 ++
include/sysemu/runstate.h | 2 ++
runstate.c| 36
From: John G Johnson
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
---
docs/devel/index.rst |1 +
docs/devel/qemu-multiprocess.rst | 1102 ++
2 files changed, 1103 insertions(+)
create mode
Allow RAM MemoryRegion to be created from an offset in a file, instead
of allocating at offset of 0 by default. This is needed to synchronize
RAM between QEMU & remote process.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Reviewed-by: St
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Reviewed-by: Stefan Hajnoczi
---
include/io/mpqemu-link.h | 4
io/mpqemu-link.c | 38 ++
2 files changed, 42 insertions
From: Elena Ufimtseva
Defines a PCI Device proxy object as a child of TYPE_PCI_DEVICE.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
MAINTAINERS| 2 ++
hw/pci/meson.build | 1 +
hw/pci/proxy.c | 98
From: Elena Ufimtseva
Perform device reset in the remote process when QEMU performs
device reset. This is required to reset the internal state
(like registers, etc...) of emulated devices
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Reviewed
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
Reviewed-by: Stefan Hajnoczi
---
MAINTAINERS| 2 +
hw/i386/meson.build| 1 +
hw/i386/remote-iohub.c | 123 +
hw/i386/remote-msg.c | 4
remote-machine object sets up various subsystems of the remote
device process. Instantiate PCI host bridge object and initialize RAM, IO &
PCI memory regions.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
Reviewed-by: Stefan Hajn
Retrieve PCI configuration info about the remote device and
configure the Proxy PCI object based on the returned information
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Reviewed-by: Stefan Hajnoczi
---
hw/pci/proxy.c | 85
times out on the probing.
We have tried to only refer to the remote for the PCI config writes,
but the driver timeout in the guest forced as to left this
as it is (removing local PCI config only).
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Proxy device object implements handler for PCI BAR writes and reads.
The handler uses BAR_WRITE/BAR_READ message to communicate to the
remote process with the BAR address and value to be written/read.
The remote process implements handler for BAR_WRITE/BAR_READ
message.
Signed-off-by: Jagannathan
From: Elena Ufimtseva
The entire array of the memory regions and file handlers.
Will be used in the next patch.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Reviewed-by: Stefan Hajnoczi
---
include/io/channel.h | 24
Initializes the message handler function in the remote process. It is
called whenever there's an event pending on QIOChannel that registers
this function.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Reviewed-by: Stefan Hajnoczi
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Reviewed-by: Stefan Hajnoczi
---
MAINTAINERS| 2 ++
docs/multi-process.rst | 67 ++
scripts/mpqemu-launcher.py
PCI host bridge is setup for the remote device process. It is
implemented using remote-pcihost object. It is an extension of the PCI
host bridge setup by QEMU.
Remote-pcihost configures a PCI bus which could be used by the remote
PCI device to latch on to.
Signed-off-by: Jagannathan Raman
Signed
on the qemu-devel mailist.
You can find them by following the links below ([1] - [9]).
Following people contributed to the design and
implementation of this project:
Jagannathan Raman
Elena Ufimtseva
John G Johnson
Stefan Hajnoczi
Konrad Wilk
Kanth Ghatraju
We would like to thank QEMU community
Associate the file descriptor for a PCIDevice in remote process with
DeviceState object.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
MAINTAINERS | 2 +
hw/i386/meson.build | 1 +
hw/i386/remote-msg.c
process receives
the message and processes it in the handler for SYNC_SYSMEM message.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Reviewed-by: Stefan Hajnoczi
---
MAINTAINERS | 2 +
hw/i386/remote-msg.c | 5 ++
hw
, outside of co-routine context will
block IOThread;
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
MAINTAINERS | 2 +
include/io/mpqemu-link.h | 60
io/meson.build | 2 +
io/mpqemu-link.c | 237
Add a configuration option to separate multi-process code
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
Reviewed-by: Stefan Hajnoczi
---
configure | 10 ++
meson.build | 1 +
2 files changed, 11 insertions(+)
diff --git a/configure
SyncSysMemMsg message format is defined. It is used to send
file descriptors of the RAM regions to remote device.
RAM on the remote device is configured with a set of file descriptors.
Old RAM regions are deleted and new regions, each with an fd, is
added to the RAM.
Signed-off-by: Jagannathan
From: John G Johnson
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Reviewed-by: Stefan Hajnoczi
---
MAINTAINERS | 1 +
docs/devel/index.rst | 1 +
docs/devel/multi-process.rst | 966
.
Subsequently, we posted RFC v1 [1], RFC v2 [2], RFC v3 [3],
RFC v4 [4], v5 [5], v6 [6] and v7 [7] of the patch series.
Following people contributed to the design and
implementation of this project:
Stefan Hajnoczi
Konrad Wilk
Kanth Ghatraju
John G Johnson
Elena Ufimtseva
Jagannathan Raman
Retrieve PCI configuration info about the remote device and
configure the Proxy PCI object based on the returned information
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
hw/pci/proxy.c | 85
Allow RAM MemoryRegion to be created from an offset in a file, instead
of allocating at offset of 0 by default. This is needed to synchronize
RAM between QEMU & remote process.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Reviewed-by: St
PCI host bridge is setup for the remote device process. It is
implemented using remote-pcihost object. It is an extension of the PCI
host bridge setup by QEMU.
Remote-pcihost configures a PCI bus which could be used by the remote
PCI device to latch on to.
Signed-off-by: Jagannathan Raman
Signed
From: Elena Ufimtseva
The entire array of the memory regions and file handlers.
Will be used in the next patch.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Reviewed-by: Stefan Hajnoczi
---
include/io/channel.h | 24
Initializes the message handler function in the remote process. It is
called whenever there's an event pending on QIOChannel that registers
this function.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
MAINTAINERS | 1 +
hw/i386
Add a configuration option to separate multi-process code
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
Reviewed-by: Stefan Hajnoczi
---
configure | 11 +++
1 file changed, 11 insertions(+)
diff --git a/configure b/configure
index
Proxy device object implements handler for PCI BAR writes and reads.
The handler uses BAR_WRITE/BAR_READ message to communicate to the
remote process with the BAR address and value to be written/read.
The remote process implements handler for BAR_WRITE/BAR_READ
message.
Signed-off-by: Jagannathan
process receives
the message and processes it in the handler for SYNC_SYSMEM message.
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
MAINTAINERS | 2 +
hw/i386/remote-msg.c | 4 +
hw/pci/Makefile.objs | 1
From: Elena Ufimtseva
process to avoid blocking the main loop during the message exchanges.
To be used by proxy device.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
include/io/mpqemu-link.h | 15 +
io/mpqemu-link.c | 82
Associate the file descriptor for a PCIDevice in remote process with
DeviceState object.
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
MAINTAINERS | 2 +
hw/i386/Makefile.objs| 1 +
hw/i386/remote-obj.c
remote-machine object sets up various subsystems of the remote
device process. Instantiate PCI host bridge object and initialize RAM, IO &
PCI memory regions.
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
MAINTAINERS
From: Elena Ufimtseva
In order to detect remote processes which are hung, the
proxy periodically sends heartbeat messages to confirm if
the remote process is alive. The remote process responds
to this heartbeat message to confirm it is alive.
Signed-off-by: Jagannathan Raman
Signed-off
SyncSysMemMsg message format is defined. It is used to send
file descriptors of the RAM regions to remote device.
RAM on the remote device is configured with a set of file descriptors.
Old RAM regions are deleted and new regions, each with an fd, is
added to the RAM.
Signed-off-by: Jagannathan
From: Elena Ufimtseva
Defines a PCI Device proxy object as a child of TYPE_PCI_DEVICE.
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
MAINTAINERS| 2 ++
hw/pci/Makefile.objs | 1 +
hw/pci/proxy.c | 80
From: John G Johnson
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
---
MAINTAINERS | 1 +
docs/devel/index.rst | 1 +
docs/devel/multi-process.rst | 966 +++
3 files changed
From: Elena Ufimtseva
Perform device reset in the remote process when QEMU performs
device reset. This is required to reset the internal state
(like registers, etc...) of emulated devices
Signed-off-by: Elena Ufimtseva
Signed-off-by: John G Johnson
Signed-off-by: Jagannathan Raman
---
hw
Signed-off-by: Jagannathan Raman
Signed-off-by: Elena Ufimtseva
---
MAINTAINERS | 2 +
hw/Makefile.objs | 1 +
hw/i386/remote-msg.c | 4 ++
hw/i386/remote.c | 10
hw/pci/proxy.c| 58 ++
hw/remote/Makefile.objs
-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
Signed-off-by: Elena Ufimtseva
---
MAINTAINERS | 2 +
include/io/mpqemu-link.h | 73
io/Makefile.objs | 2 +
io/mpqemu-link.c | 175 +++
4
From: Elena Ufimtseva
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
MAINTAINERS| 2 ++
docs/multi-process.rst | 67 ++
scripts/mpqemu-launcher.py | 49
times out on the probing.
We have tried to only refer to the remote for the PCI config writes,
but the driver timeout in the guest forced as to left this
as it is (removing local PCI config only).
Signed-off-by: Elena Ufimtseva
Signed-off-by: Jagannathan Raman
Signed-off-by: John G Johnson
---
hw
> On Dec 3, 2020, at 4:53 AM, Stefan Hajnoczi wrote:
>
> On Tue, Dec 01, 2020 at 03:22:35PM -0500, Jagannathan Raman wrote:
>> This is the v12 of the patchset. Thank you very much for the
>> review of the v11 of the series.
>
> I'm in favor of merging this for
101 - 200 of 574 matches
Mail list logo