78e27dfa8d
vfio-user: handle reset of remote device
...
Adds handler to reset a remote device
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 112eeadf3bc4c6cdb100bc3f9a6fcfc20b467c1b.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
08cf3dc611
vfio-user: handle device interrupts
...
Forward remote device's interrupts to the guest
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Message-id: 9523479eaafe050677f4de2af5dd0df18c27cfd9.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
3123f93d6b
vfio-user: handle PCI BAR accesses
...
Determine the BARs used by the PCI device and register handlers to
manage the access to the same.
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 3373e10b5be5f42846f0632d4382466e1698c505.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
15ccf9bee7
vfio-user: handle DMA mappings
...
Define and register callbacks to manage the RAM regions used for
device DMA
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: faacbcd45c4d02c591f0dbfdc19041fbb3eae7eb.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
253007d147
vfio-user: IOMMU support for remote device
...
Assign separate address space for each device in the remote processes.
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: afe0b0a97582cdad42b5b25636a29c523265a10a.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
90072f29d6
vfio-user: handle PCI config space accesses
...
Define and register handlers for PCI config space accesses
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: be9d2ccf9b1d24e50dcd9c23404dbf284142cec7.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
9fb3fba149
vfio-user: run vfio-user context
...
Setup a handler to run vfio-user context. The context is driven by
messages to the file descriptor associated with it - get the fd for
the context and hook up the handler with it
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: e934b0090529d448b6a7972b21dfc3d7421ce494.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
a6e8d6d98e
vfio-user: find and init PCI device
...
Find the PCI device with specified id. Initialize the device context
with the QEMU PCI device
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 7798dbd730099b33fdd00c4c202cfe79e5c5c151.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
87f7249ff6
vfio-user: instantiate vfio-user context
...
create a context with the vfio-user library to run a PCI device
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: a452871ac8c812ff96fc4f0ce6037f4769953fab.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
8f9a9259d3
vfio-user: define vfio-user-server object
...
Define vfio-user object which is remote process server for QEMU. Setup
object initialization functions and properties necessary to instantiate
the object
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: e45a17001e9b38f451543a664ababdf860e5f2f2.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:43:42 +01:00
55116968de
vfio-user: build library
...
add the libvfio-user library as a submodule. build it as a meson
subproject.
libvfio-user is distributed with BSD 3-Clause license and
json-c with MIT (Expat) license
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: c2adec87958b081d1dc8775d4aa05c897912f025.1655151679.git.jag.raman@oracle.com
[Changed submodule URL to QEMU's libvfio-user mirror on GitLab. The QEMU
project mirrors its dependencies so that it can provide full source code
even in the event that its dependencies become unavailable. Note that
the mirror repo is manually updated, so please contact me to make newer
libvfio-user commits available. If I become a bottleneck we can set up a
cronjob.
Updated scripts/meson-buildoptions.sh to match the meson_options.txt
change. Failure to do so can result in scripts/meson-buildoptions.sh
being modified by the build system later on and you end up with a dirty
working tree.
--Stefan]
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 16:42:33 +01:00
9b5b473eae
remote/machine: add vfio-user property
...
Add vfio-user to x-remote machine. It is a boolean, which indicates if
the machine supports vfio-user protocol. The machine configures the bus
differently vfio-user and multiprocess protocols, so this property
informs it on how to configure the bus.
This property should be short lived. Once vfio-user fully replaces
multiprocess, this property could be removed.
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 5d51a152a419cbda35d070b8e49b772b60a7230a.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 14:50:41 +01:00
661e21c48e
remote/machine: add HotplugHandler for remote machine
...
Allow hotplugging of PCI(e) devices to remote machine
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: d1e6cfa0afb528ad343758f9b1d918be0175c5e5.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2022-06-15 14:50:41 +01:00
b88651cb4d
QIOChannel: Add flags on io_writev and introduce io_flush callback
...
Add flags to io_writev and introduce io_flush as optional callback to
QIOChannelClass, allowing the implementation of zero copy writes by
subclasses.
How to use them:
- Write data using qio_channel_writev*(...,QIO_CHANNEL_WRITE_FLAG_ZERO_COPY),
- Wait write completion with qio_channel_flush().
Notes:
As some zero copy write implementations work asynchronously, it's
recommended to keep the write buffer untouched until the return of
qio_channel_flush(), to avoid the risk of sending an updated buffer
instead of the buffer state during write.
As io_flush callback is optional, if a subclass does not implement it, then:
- io_flush will return 0 without changing anything.
Also, some functions like qio_channel_writev_full_all() were adapted to
receive a flag parameter. That allows shared code between zero copy and
non-zero copy writev, and also an easier implementation on new flags.
Signed-off-by: Leonardo Bras <leobras@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Peter Xu <peterx@redhat.com >
Reviewed-by: Juan Quintela <quintela@redhat.com >
Message-Id: <20220513062836.965425-3-leobras@redhat.com >
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com >
2022-05-16 13:56:24 +01:00
0f9668e0c1
Remove qemu-common.h include from most units
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20220323155743.1585078-33-marcandre.lureau@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2022-04-06 14:31:55 +02:00
83bb745154
hw/remote: Add missing include
...
Currently "qemu/error-report.h" is implicitly included, however
if headers in include/ get refactored, we get:
hw/remote/proxy-memory-listener.c: In function ‘proxy_memory_listener_commit’:
hw/remote/proxy-memory-listener.c:183:9: error: implicit declaration of function ‘error_report’; did you mean ‘error_report_err’? [-Werror=implicit-function-declaration]
183 | error_report("Number of fds is more than %d", REMOTE_MAX_FDS);
| ^~~~~~~~~~~~
| error_report_err
Add the missing "qemu/error-report.h" header to avoid that.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220207082756.82600-3-f4bug@amsat.org >
Signed-off-by: Thomas Huth <thuth@redhat.com >
2022-02-21 10:18:06 +01:00
daf0db0630
hw/remote/proxy: Categorize Wireless devices as 'Network' ones
...
QEMU doesn't distinct network devices per link layer (Ethernet,
Wi-Fi, CAN, ...). Categorize PCI Wireless cards as Network
devices.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Jagannathan Raman <jag.raman@oracle.com >
Message-Id: <20210926201926.1690896-1-f4bug@amsat.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-10-04 09:47:26 +02:00
142518bda5
memory: Name all the memory listeners
...
Provide a name field for all the memory listeners. It can be used to identify
which memory listener is which.
Signed-off-by: Peter Xu <peterx@redhat.com >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210817013553.30584-2-peterx@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-09-30 15:30:24 +02:00
fff0e451f3
Remove superfluous ERRP_GUARD()
...
Macro ERRP_GUARD() is only needed when we want to dereference @errp or
pass it to error_prepend() or error_append_hint(). Delete superfluous
ones.
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Message-Id: <20210720125408.387910-15-armbru@redhat.com >
Acked-by: Michael S. Tsirkin <mst@redhat.com >
2021-08-26 17:15:28 +02:00
96ac971933
multi-process: Fix pci_proxy_dev_realize() error handling
...
The Error ** argument must be NULL, &error_abort, &error_fatal, or a
pointer to a variable containing NULL. Passing an argument of the
latter kind twice without clearing it in between is wrong: if the
first call sets an error, it no longer points to NULL for the second
call.
pci_proxy_dev_realize() is wrong that way: it passes @errp to
qio_channel_new_fd() without checking for failure. If it runs into
another failure, it trips error_setv()'s assertion.
Fix it to check for failure properly.
Fixes: 9f8112073a
Cc: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Cc: Jagannathan Raman <jag.raman@oracle.com >
Cc: John G Johnson <john.g.johnson@oracle.com >
Cc: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Message-Id: <20210720125408.387910-5-armbru@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Jagannathan Raman <jag.raman@oracle.com >
Acked-by: Michael S. Tsirkin <mst@redhat.com >
2021-08-26 17:15:28 +02:00
f4a3fda43e
remote/memory: Replace share parameter with ram_flags
...
Fixes: d5015b8013
("softmmu/memory: Pass ram_flags to
qemu_ram_alloc_from_fd()")
Signed-off-by: Yang Zhong <yang.zhong@intel.com >
Reviewed-by: David Hildenbrand <david@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Pankaj Gupta <pankaj.gupta@ionos.com >
Reviewed-by: Peter Xu <peterx@redhat.com >
Message-Id: <20210709052800.63588-1-yang.zhong@intel.com >
Signed-off-by: Cleber Rosa <crosa@redhat.com >
2021-07-20 15:34:20 -04:00
d90226808b
multi-process: Initialize variables declared with g_auto*
...
Quote docs/devel/style.rst (section "Automatic memory deallocation"):
* Variables declared with g_auto* MUST always be initialized,
otherwise the cleanup function will use uninitialized stack memory
Initialize @name properly to get rid of the compilation error (using
gcc-7.3.0 on CentOS):
../hw/remote/proxy.c: In function 'pci_proxy_dev_realize':
/usr/include/glib-2.0/glib/glib-autocleanups.h:28:3: error: 'name' may be used uninitialized in this function [-Werror=maybe-uninitialized]
g_free (*pp);
^~~~~~~~~~~~
../hw/remote/proxy.c:350:30: note: 'name' was declared here
g_autofree char *name;
^~~~
Signed-off-by: Zenghui Yu <yuzenghui@huawei.com >
Reviewed-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Miroslav Rezanina <mrezanin@redhat.com >
Message-id: 20210312112143.1369-1-yuzenghui@huawei.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-05-21 15:43:57 +01:00
dcf20655ff
multi-process: Avoid logical AND of mutually exclusive tests
...
Fixes an if statement that performs a logical AND of mutually exclusive
tests
Buglink: https://bugs.launchpad.net/qemu/+bug/1926995
Reviewed-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-Id: <1620402803-9237-1-git-send-email-jag.raman@oracle.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-13 18:15:32 +02:00
ee86213aa3
Do not include exec/address-spaces.h if it's not really necessary
...
Stop including exec/address-spaces.h in files that don't need it.
Signed-off-by: Thomas Huth <thuth@redhat.com >
Message-Id: <20210416171314.2074665-5-thuth@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-02 17:24:51 +02:00
2068cabd3f
Do not include cpu.h if it's not really necessary
...
Stop including cpu.h in files that don't need it.
Signed-off-by: Thomas Huth <thuth@redhat.com >
Message-Id: <20210416171314.2074665-4-thuth@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-02 17:24:51 +02:00
ead62c75f6
Do not include hw/boards.h if it's not really necessary
...
Stop including hw/boards.h in files that don't need it.
Signed-off-by: Thomas Huth <thuth@redhat.com >
Message-Id: <20210416171314.2074665-3-thuth@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-02 17:24:51 +02:00
b6cc02d98f
multi-process: perform device reset in the remote process
...
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 <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 7cb220a51f565dc0817bd76e2f540e89c2d2b850.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
1bec145cd9
multi-process: Retrieve PCI info from remote process
...
Retrieve PCI configuration info about the remote device and
configure the Proxy PCI object based on the returned information
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 85ee367bbb993aa23699b44cfedd83b4ea6d5221.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
bd36adb8df
multi-process: create IOHUB object to handle irq
...
IOHUB object is added to manage PCI IRQs. It uses KVM_IRQFD
ioctl to create irqfd to injecting PCI interrupts to the guest.
IOHUB object forwards the irqfd to the remote process. Remote process
uses this fd to directly send interrupts to the guest, bypassing QEMU.
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 51d5c3d54e28a68b002e3875c59599c9f5a424a1.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
c746b74a7d
multi-process: Synchronize remote memory
...
Add ProxyMemoryListener object which is used to keep the view of the RAM
in sync between QEMU and remote process.
A MemoryListener is registered for system-memory AddressSpace. The
listener sends SYNC_SYSMEM message to the remote process when memory
listener commits the changes to memory, the remote process receives
the message and processes it in the handler for SYNC_SYSMEM message.
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 04fe4e6a9ca90d4f11ab6f59be7652f5b086a071.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
7ee3f82384
multi-process: PCI BAR read/write handling for proxy & remote endpoints
...
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 Raman <jag.raman@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: a8b76714a9688be5552c4c92d089bc9e8a4707ff.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
11ab872588
multi-process: Forward PCI config space acceses to the remote process
...
The Proxy Object sends the PCI config space accesses as messages
to the remote process over the communication channel
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: d3c94f4618813234655356c60e6f0d0362ff42d6.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
e7b2c9eaa2
multi-process: add proxy communication functions
...
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: d54edb4176361eed86b903e8f27058363b6c83b3.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
9f8112073a
multi-process: introduce proxy object
...
Defines a PCI Device proxy object as a child of TYPE_PCI_DEVICE.
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: b5186ebfedf8e557044d09a768846c59230ad3a7.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
ed5d001916
multi-process: setup memory manager for remote device
...
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 Raman <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 7d2d1831d812e85f681e7a8ab99e032cf4704689.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
c7d80c7c1d
multi-process: Associate fd of a PCIDevice with its object
...
Associate the file descriptor for a PCIDevice in remote process with
DeviceState object.
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: f405a2ed5d7518b87bea7c59cfdf334d67e5ee51.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
48b06f50d8
multi-process: Initialize message handler in remote device
...
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 <elena.ufimtseva@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 99d38d8b93753a6409ac2340e858858cda59ab1b.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
ad22c3088b
multi-process: define MPQemuMsg format and transmission functions
...
Defines MPQemuMsg, which is the message that is sent to the remote
process. This message is sent over QIOChannel and is used to
command the remote process to perform various tasks.
Define transmission functions used by proxy and by remote.
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 56ca8bcf95195b2b195b08f6b9565b6d7410bce5.1611938319.git.jag.raman@oracle.com
[Replace struct iovec send[2] = {0} with {} to make clang happy as
suggested by Peter Maydell <peter.maydell@linaro.org >.
--Stefan]
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
3f0e7e57a3
multi-process: setup a machine object for remote device process
...
x-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 <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: c537f38d17f90453ca610c6b70cf3480274e0ba1.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:28 +00:00
6fbd84d632
multi-process: setup PCI host bridge for remote device
...
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 <jag.raman@oracle.com >
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 0871ba857abb2eafacde07e7fe66a3f12415bfb2.1611938319.git.jag.raman@oracle.com
[Added PCI_EXPRESS condition in hw/remote/Kconfig since remote-pcihost
needs PCIe. This solves "make check" failure on s390x. Fix suggested by
Philippe Mathieu-Daudé <philmd@redhat.com > and Thomas Huth
<thuth@redhat.com >.
--Stefan]
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-10 09:23:22 +00:00
3090de695b
multi-process: Add config option for multi-process QEMU
...
Add configuration options to enable or disable multiprocess QEMU code
Signed-off-by: John G Johnson <john.g.johnson@oracle.com >
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com >
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-id: 6cc37253e35418ebd7b675a31a3df6e3c7a12dc1.1611938319.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2021-02-09 20:53:56 +00:00