mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
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>
This commit is contained in:
parent
7ee3f82384
commit
c746b74a7d
7 changed files with 270 additions and 0 deletions
28
include/hw/remote/proxy-memory-listener.h
Normal file
28
include/hw/remote/proxy-memory-listener.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright © 2018, 2021 Oracle and/or its affiliates.
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PROXY_MEMORY_LISTENER_H
|
||||
#define PROXY_MEMORY_LISTENER_H
|
||||
|
||||
#include "exec/memory.h"
|
||||
#include "io/channel.h"
|
||||
|
||||
typedef struct ProxyMemoryListener {
|
||||
MemoryListener listener;
|
||||
|
||||
int n_mr_sections;
|
||||
MemoryRegionSection *mr_sections;
|
||||
|
||||
QIOChannel *ioc;
|
||||
} ProxyMemoryListener;
|
||||
|
||||
void proxy_memory_listener_configure(ProxyMemoryListener *proxy_listener,
|
||||
QIOChannel *ioc);
|
||||
void proxy_memory_listener_deconfigure(ProxyMemoryListener *proxy_listener);
|
||||
|
||||
#endif
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "hw/pci/pci.h"
|
||||
#include "io/channel.h"
|
||||
#include "hw/remote/proxy-memory-listener.h"
|
||||
|
||||
#define TYPE_PCI_PROXY_DEV "x-pci-proxy-dev"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(PCIProxyDev, PCI_PROXY_DEV)
|
||||
|
@ -36,6 +37,7 @@ struct PCIProxyDev {
|
|||
QemuMutex io_mutex;
|
||||
QIOChannel *ioc;
|
||||
Error *migration_blocker;
|
||||
ProxyMemoryListener proxy_listener;
|
||||
ProxyMemoryRegion region[PCI_NUM_REGIONS];
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue