From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60307) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aj59J-0001Po-UP for qemu-devel@nongnu.org; Thu, 24 Mar 2016 09:18:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aj59F-000531-Sy for qemu-devel@nongnu.org; Thu, 24 Mar 2016 09:18:05 -0400 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:33213) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aj59F-00052E-IO for qemu-devel@nongnu.org; Thu, 24 Mar 2016 09:18:01 -0400 Received: by mail-wm0-x241.google.com with SMTP id u125so12183667wmg.0 for ; Thu, 24 Mar 2016 06:18:01 -0700 (PDT) From: Baptiste Reynal Date: Thu, 24 Mar 2016 14:16:38 +0100 Message-Id: <1458825402-9592-1-git-send-email-b.reynal@virtualopensystems.com> Subject: [Qemu-devel] [RFC 0/4] QEMU shared-memory over network List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: b.reynal@virtualopensystems.com, Eduardo Habkost , Claudio.Fontana@huawei.com, pbonzini@redhat.com, Jani.Kokkonen@huawei.com, tech@virtualopensystems.com This patch series is an extension to "[RFC v2 0/6] QEMU shared-memory backend", and allows two instances of QEMU to share a memory over the network. Instead of allocating the memory using hugetlbfs, the memory is allocated as a simple ram pointer, and when a slave connects a new mmio region is created in the master main memory so that each access is trapped and forwarded over the network. The slave has direct access to its memory (no performance loss) while master accesses (which are less frequent) go over a network socket. To test those patches modules and test application are available on https://git.virtualopensystems.com/dev/qemu-het-tools. - SDM Platform module on branch sdm_test_mod_v1 - Test application on branch sdm_test_app - Slave files on branch demo_slaves_sdm QEMU code is available here https://git.virtualopensystems.com/dev/qemu on branch network-extension-v1. Run QEMU master instance: ./qemu-system-arm -nographic \ -kernel zImage \ -M virt -m 1G \ -initrd busybox.cpio \ -object multi-socket-backend,id=sock,listen,host="127.0.0.1",port="1234" \ -object memory-backend-network,id=mem,size=1G,shared-size=512M,socket=sock,master \ -object sdm-communication-socket,id=scomm,socket=sock \ -device sdm-platform,comm=scomm,master,num-slaves=2 \ -append "mem=512M memmap=512M$0x60000000" \ -numa node,memdev=mem -m 1G Run QEMU slave instance: ./qemu-system-arm -nographic \ -M virt,slave \ -object multi-socket-backend,id=sock,host="127.0.0.1",port="1234" \ -object memory-backend-network,id=mem,size=512M,socket=sock \ -object sdm-signal-nboot,id=boot,nhm=mem \ -object sdm-communication-socket,id=scomm,socket=sock \ -device sdm-platform,comm=scomm,len-signals=1,signals[0]="boot" \ -incoming "shared:mem" \ -numa node,memdev=mem -m 512M On the master, load the SDM module (insmod sdm_test_mod.ko) and trigger the boot with the following command: ./sdm-test -b 0 1 zImage slave.dtb zImage and slave.dtb are available on branch demo_slaves_sdm. This patch serie depends on: - [RFC v2 0/6] SDM Interface - [RFC v2 1/1] backend: multi-client-socket This work has been sponsored by Huawei Technologies Duesseldorf GmbH. Baptiste Reynal (4): backend: multi-client-socket backend: shared memory over network backend migration: extend shared migration type hw/misc: sdm signal nboot backends/Makefile.objs | 2 +- backends/hostmem-network.c | 301 ++++++++++++++++++++++++++ backends/multi-socket.c | 420 +++++++++++++++++++++++++------------ hw/misc/Makefile.objs | 1 + hw/misc/sdm-signal-nboot.c | 62 ++++++ include/hw/misc/sdm-signal-nboot.h | 28 +++ include/qemu/multi-socket.h | 57 ++++- include/sysemu/hostmem-network.h | 79 +++++++ migration/shared.c | 20 +- 9 files changed, 823 insertions(+), 147 deletions(-) create mode 100644 backends/hostmem-network.c create mode 100644 hw/misc/sdm-signal-nboot.c create mode 100644 include/hw/misc/sdm-signal-nboot.h create mode 100644 include/sysemu/hostmem-network.h -- 2.7.4