Zenghui Yu 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Thomas Huth 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Thomas Huth 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Thomas Huth 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Elena Ufimtseva 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Elena Ufimtseva 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Elena Ufimtseva 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Elena Ufimtseva 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Elena Ufimtseva 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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