Latest patch for PCI shared memory device that maps a host shared memory object to be shared between guests
new in this series - migration support with 'master' and 'peer' roles for guest to determine who "owns" memory. With 'master', the guest has the canonical copy of the shared memory and will copy it with it on migration. With 'role=peer', the guest will not copy the shared memory, but attach to what is on the destination machine. - modified phys_ram_dirty array for marking memory as not to be migrated - add support for non-migrated memory regions v5: - fixed segfault for non-server case - code style fixes - removed limit on the number of guests - shared memory server is now in qemu.git/contrib - made ioeventfd setup function generic - removed interrupts when guest joined (let application handle it) v4: - moved to single Doorbell register and use datamatch to trigger different VMs rather than one register per eventfd - remove writing arbitrary values to eventfds. Only values of 1 are now written to ensure correct usage Cam Macdonell (6): Device specification for shared memory PCI device Adds two new functions for assigning ioeventfd and irqfds. Change phys_ram_dirty to phys_ram_status Add support for marking memory to not be migrated. On migration, memory is checked for the NO_MIGRATION_FLAG. Inter-VM shared memory PCI device the stand-alone shared memory server for inter-VM shared memory Makefile.target | 3 + arch_init.c | 28 +- contrib/ivshmem-server/Makefile | 16 + contrib/ivshmem-server/README | 30 ++ contrib/ivshmem-server/ivshmem_server.c | 353 +++++++++++++ contrib/ivshmem-server/send_scm.c | 208 ++++++++ contrib/ivshmem-server/send_scm.h | 19 + cpu-all.h | 18 +- cpu-common.h | 2 + docs/specs/ivshmem_device_spec.txt | 96 ++++ exec.c | 48 ++- hw/ivshmem.c | 852 +++++++++++++++++++++++++++++++ kvm-all.c | 32 ++ kvm.h | 1 + qemu-char.c | 6 + qemu-char.h | 3 + qemu-doc.texi | 32 ++ 17 files changed, 1710 insertions(+), 37 deletions(-) create mode 100644 contrib/ivshmem-server/Makefile create mode 100644 contrib/ivshmem-server/README create mode 100644 contrib/ivshmem-server/ivshmem_server.c create mode 100644 contrib/ivshmem-server/send_scm.c create mode 100644 contrib/ivshmem-server/send_scm.h create mode 100644 docs/specs/ivshmem_device_spec.txt create mode 100644 hw/ivshmem.c