Hi, This series is mostly about adding the client/server code from David Marchand, code cleanups, and little improvements for ivshmem. Finally there is some ivshmem tests (they work fine without kvm).
The first series didn't get much feedback. As suggested by Andrew Jones, this second version adds support for hugepage shm, in qemu with a hostmem backend and a fix in the server side (instead of relying on bad/old glibc hack). It also adds irqfd usage for msix notification. (the branch is on github: https://github.com/elmarco/qemu.git ivshmem) 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 (42): 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: increase_dynamic_storage() improvements 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: add a warning if eventfd value is 0 ivshmem: beautify 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: rename ivshmem_get_size/parse_mem_size 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 | 485 ++++++++++++++++++++ contrib/ivshmem-server/ivshmem-server.h | 166 +++++++ contrib/ivshmem-server/main.c | 263 +++++++++++ docs/specs/ivshmem_device_spec.txt | 127 ++++-- hw/misc/ivshmem.c | 769 ++++++++++++++++++++++---------- 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, 3025 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