Add a new Linux-specific memory backend, similar to hostmem-file, except that it doesn't need file path. It also try to enforce memory sealing if available. It is thus slightly easier and secure, and is compatible with transparent huge-pages since Linux 4.8.
Since Linux 4.14, memfd supports explicit hugetlb, however without sealing. v6: - add hugetlbsize option - run vhost-user read-guest-mem test with memfile & memfd backend v5: - add memfd hugetlb support - add seal and hugeltb options to memfd memory backend - update qemu-option to explain sharing works with vhost-user for now - rebased, misc code changes v4: - rebased, now that preliminary patches are merged v3: - make vhost-user-test use memfd only if possible - rebased v1->v2: - make it linux-specific - minor changes and commit message tweaks Marc-André Lureau (9): memfd: split qemu_memfd_alloc() memfd: remove needless include memfd: add error argument, instead of perror() memfd: add hugetlb support memfd: add hugetlbsize argument Add memfd based hostmem tests: keep compiling failing vhost-user tests vhost-user-test: make read-guest-mem setup its own qemu tests: use memfd in vhost-user-test include/qemu/memfd.h | 4 +- backends/hostmem-memfd.c | 168 +++++++++++++++++++++++++++++++++++++++++++++++ hw/virtio/vhost.c | 8 ++- tests/vhost-user-test.c | 160 +++++++++++++++++++++++++++----------------- util/memfd.c | 115 ++++++++++++++++++++------------ backends/Makefile.objs | 2 + qemu-options.hx | 23 +++++++ 7 files changed, 378 insertions(+), 102 deletions(-) create mode 100644 backends/hostmem-memfd.c -- 2.15.0.rc0.40.gaefcc5f6f