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). Git: https://github.com/elmarco/qemu.git ivshmem branch List of missing extra signed-off or review-by: - 20, 32, 39, 40, 41, 43, 47 please review, v4->v5: - re-add the pow2 check for mem size - fix getopt return type variable - explicitely set load_state_old to 0 - added/modified debug lines - changed some commit comments - check write() return value in ivshmem-test - add g_assert_* compat (cherry-picked from my qga-test series) v3->v4: - remove an extra ; - improve msix debug message - improve some commit summary - improve some code comment - add a message to server to inform hugepages or shm usage - replace function macros in test with regular functions - replace parse_mem_size() patch with strtosz() - add a patch to change the protocol to i64 le 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 (45): 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 handling 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() glib-compat: add 2.38/2.40/2.46 asserts tests: add ivshmem qtest ivshmem: do not keep shm_fd open ivshmem: use qemu_strtosz() ivshmem: add hostmem backend ivshmem: remove EventfdEntry.vector ivshmem: rename MSI eventfd_table ivshmem: use kvm irqfd for msi notifications ivshmem: use little-endian int64_t for the protocol Makefile | 8 + configure | 3 + contrib/ivshmem-client/ivshmem-client.c | 446 +++++++++++++++++ contrib/ivshmem-client/ivshmem-client.h | 213 ++++++++ contrib/ivshmem-client/main.c | 239 +++++++++ contrib/ivshmem-server/ivshmem-server.c | 480 ++++++++++++++++++ contrib/ivshmem-server/ivshmem-server.h | 166 +++++++ contrib/ivshmem-server/main.c | 263 ++++++++++ docs/specs/ivshmem_device_spec.txt | 127 +++-- hw/misc/ivshmem.c | 833 ++++++++++++++++++++++---------- hw/pci/msix.c | 6 + include/glib-compat.h | 61 +++ 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 | 496 +++++++++++++++++++ tests/libqtest.c | 37 +- tests/libqtest.h | 2 + 21 files changed, 3137 insertions(+), 316 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