Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								Jagannathan Raman 
							
						 
					 
					
						
						
							
						
						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 
						 
				 
			
				
					
						
							
							
								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 
						 
				 
			
				
					
						
							
							
								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