new file mode 100644
@@ -0,0 +1,86 @@
+Multi-process QEMU
+==================
+
+This document describes how to configure and use multi-process qemu.
+For the design document refer to docs/devel/qemu-multiprocess.
+
+1) Configuration
+----------------
+
+To enable support for multi-process add --enable-mpqemu
+to the list of options for the "configure" script.
+
+
+2) Usage
+--------
+
+To start qemu with devices intended to run in a separate emulation
+process without libvirtd support, the following should be used on QEMU
+command line. As of now, we only support the emulation of lsi53c895a
+in a separate process
+
+* Since parts of the RAM are shared between QEMU & remote process, a
+ memory-backend-file is required to facilitate this, as follows:
+
+ -object memory-backend-file,id=mem,mem-path=/dev/shm/,size=4096M,share=on
+
+* The devices to be emulated in the separate process are defined as
+ before with addition of "rid" suboption that serves as a remote group
+ identificator.
+
+ -device <device options>,rid="remote process id"
+
+ For exmaple, for non multi-process qemu:
+ -device lsi53c895a,id=scsi0 device
+ -device scsi-hd,drive=drive0,bus=scsi0.0,scsi-id=0
+ -drive id=drive0,file=data-disk.img
+
+ and for multi-process qemu and no libvirt
+ support (i.e. QEMU forks child processes):
+ -device lsi53c895a,id=scsi0,rid=0
+ -device scsi-hd,drive=drive0,bus=scsi0.0,scsi-id=0,rid="0"
+
+* The command-line options for the remote process is added to the "command"
+ suboption of the newly added "-remote" option.
+
+ -remote [socket],rid=,command="..."
+
+ The drives to be emulated by the remote process are specified as part of
+ this command sub-option. The device to be used to connect to the monitor
+ is also specified as part of this suboption.
+
+ For example, the following option adds a drive and monitor to the remote
+ process:
+ -remote rid=0,command="-drive id=drive0,,file=data-disk.img -monitor unix:/home/qmp-sock,,server,,nowait"
+
+ Note: There's an issue with this "command" subtion which we are in the
+ process of fixing. To work around this issue, it requires additional
+ "comma" characters as illustrated above, and in the example below.
+
+* Example QEMU command-line to launch lsi53c895a in a remote process
+
+ #/bin/sh
+ qemu-system-x86_64 \
+ -name "OL7.4" \
+ -machine q35,accel=kvm \
+ -smp sockets=1,cores=1,threads=1 \
+ -cpu host \
+ -m 2048 \
+ -object memory-backend-file,id=mem,mem-path=/dev/shm/,size=2G,share=on \
+ -numa node,memdev=mem \
+ -device virtio-scsi-pci,id=virtio_scsi_pci0 \
+ -drive id=drive_image1,if=none,format=raw,file=/root/ol7.qcow2 \
+ -device scsi-hd,id=image1,drive=drive_image1,bus=virtio_scsi_pci0.0 \
+ -boot d \
+ -monitor stdio \
+ -vnc :0 \
+ -device lsi53c895a,id=lsi0,remote,rid=8,command="qemu-scsi-dev" \
+ -device scsi-hd,id=drive2,drive=drive_image2,bus=lsi0.0,scsi-id=0,remote,rid=8,command="qemu-scsi-dev"\
+ -remote rid=8,command="-drive id=drive_image2,,file=/root/remote-process-disk.img -monitor unix:/home/qmp-sock,,server,,nowait"
+
+ We could connect to the monitor using the following command:
+ socat /home/qmp-sock stdio
+
+ After hotplugging disks to the remote process, please execute the
+ following command in the guest to refresh the list of storage devices:
+ rescan_scsi_bus.sh -a