From: Marc-André Lureau <marcandre.lur...@redhat.com> Hi,
This series is mostly about adding the client/server code from David Marchand, code cleanups, and little improvements and fixes for ivshmem. Finally there is some ivshmem tests (they work fine without kvm btw). The first two series didn't get much feedback, and the third series is mostly untouched. The code is not complicated (hopefully), please review, thanks!! :) Git: https://github.com/elmarco/qemu.git ivshmem branch v2->v3: - add old migration fallback code - split a few patches - improve some commit messages - drop a commit checking eventfd read value v1->v2: - add support for hugepage shm (suggested by Andrew Jones) - add irqfd for msix notification David Marchand (3): contrib: add ivshmem client and server docs: update ivshmem device spec ivshmem: add check on protocol version in QEMU Marc-André Lureau (43): char: add qemu_chr_free() msix: add VMSTATE_MSIX_TEST ivhsmem: read do not accept more than sizeof(long) ivshmem: fix number of bytes to push to fifo ivshmem: factor out the incoming fifo handling ivshmem: remove unnecessary dup() ivshmem: remove superflous ivshmem_attr field ivshmem: remove useless doorbell field ivshmem: more qdev conversion ivshmem: remove last exit(1) ivshmem: limit maximum number of peers to G_MAXUINT16 ivshmem: simplify around increase_dynamic_storage() ivshmem: allocate eventfds in resize_peers() ivshmem: remove useless ivshmem_update_irq() val argument ivshmem: initialize max_peer to -1 ivshmem: remove max_peer field ivshmem: improve debug messages ivshmem: improve error ivshmem: print error on invalid peer id ivshmem: simplify a bit the code ivshmem: use common return ivshmem: use common is_power_of_2() ivshmem: migrate with VMStateDescription ivshmem: shmfd can be 0 ivshmem: check shm isn't already initialized ivshmem: add device description ivshmem: fix pci_ivshmem_exit() ivshmem: replace 'guest' for 'peer' appropriately ivshmem: error on too many eventfd received ivshmem: reset mask on device reset ivshmem-client: check the number of vectors ivshmem-server: use a uint16 for client ID ivshmem-server: fix hugetlbfs support contrib: remove unnecessary strdup() msix: implement pba write (but read-only) qtest: add qtest_add_abrt_handler() tests: add ivshmem qtest ivshmem: do not keep shm_fd open ivshmem: make ivshmem_get_size() more generic ivshmem: add hostmem backend ivshmem: remove EventfdEntry.vector ivshmem: rename MSI eventfd_table ivshmem: use kvm irqfd for msi notifications Makefile | 8 + configure | 3 + contrib/ivshmem-client/ivshmem-client.c | 444 ++++++++++++++++++ contrib/ivshmem-client/ivshmem-client.h | 213 +++++++++ contrib/ivshmem-client/main.c | 239 ++++++++++ contrib/ivshmem-server/ivshmem-server.c | 478 +++++++++++++++++++ contrib/ivshmem-server/ivshmem-server.h | 166 +++++++ contrib/ivshmem-server/main.c | 263 +++++++++++ docs/specs/ivshmem_device_spec.txt | 127 +++-- hw/misc/ivshmem.c | 801 ++++++++++++++++++++++---------- hw/pci/msix.c | 6 + include/hw/misc/ivshmem.h | 25 + include/hw/pci/msix.h | 16 +- include/sysemu/char.h | 10 +- qemu-char.c | 9 +- qemu-doc.texi | 10 +- tests/Makefile | 3 + tests/ivshmem-test.c | 486 +++++++++++++++++++ tests/libqtest.c | 37 +- tests/libqtest.h | 2 + 20 files changed, 3050 insertions(+), 296 deletions(-) create mode 100644 contrib/ivshmem-client/ivshmem-client.c create mode 100644 contrib/ivshmem-client/ivshmem-client.h create mode 100644 contrib/ivshmem-client/main.c create mode 100644 contrib/ivshmem-server/ivshmem-server.c create mode 100644 contrib/ivshmem-server/ivshmem-server.h create mode 100644 contrib/ivshmem-server/main.c create mode 100644 include/hw/misc/ivshmem.h create mode 100644 tests/ivshmem-test.c -- 2.4.3