[Qemu-devel] [PATCH v7 0/7] Add memfd memory backend

Marc-André Lureau posted 7 patches 6 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180201132757.23063-1-marcandre.lureau@redhat.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 passed
Test ppc passed
Test s390x passed
include/qemu/memfd.h     |   5 +-
backends/hostmem-memfd.c | 170 +++++++++++++++++++++++++++++++++++++++++++++++
hw/virtio/vhost.c        |   8 ++-
tests/vhost-user-test.c  | 128 +++++++++++++++++++++++------------
util/memfd.c             |  78 ++++++++++++++--------
backends/Makefile.objs   |   2 +
qemu-options.hx          |  22 ++++++
7 files changed, 340 insertions(+), 73 deletions(-)
create mode 100644 backends/hostmem-memfd.c
[Qemu-devel] [PATCH v7 0/7] Add memfd memory backend
Posted by Marc-André Lureau 6 years, 2 months ago
Hi,

This series adds a new memory backend, similar to hostmem-file, except
that it doesn't need to create files. It also enforces memory sealing.

This backend is mainly useful for sharing the memory with other
processes.

Note that Linux supports transparent huge-pages of shmem/memfd memory
since 4.8. It is relatively easier to set up THP than a dedicate
hugepage mount point by using "madvise" in
/sys/kernel/mm/transparent_hugepage/shmem_enabled.

Since 4.14, memfd allows to set hugetlb requirement explicitly.

Pending for merge in 4.16 is memfd sealing support for hugetlb backed
memory.

Usage:
-object memory-backend-memfd,id=mem1,size=1G

v7:
- fix a small memory leak
- update documentation and commit messages
- rebased

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

v2:
- make it linux-specific
- minor changes and commit message tweaks

Marc-André Lureau (7):
  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     |   5 +-
 backends/hostmem-memfd.c | 170 +++++++++++++++++++++++++++++++++++++++++++++++
 hw/virtio/vhost.c        |   8 ++-
 tests/vhost-user-test.c  | 128 +++++++++++++++++++++++------------
 util/memfd.c             |  78 ++++++++++++++--------
 backends/Makefile.objs   |   2 +
 qemu-options.hx          |  22 ++++++
 7 files changed, 340 insertions(+), 73 deletions(-)
 create mode 100644 backends/hostmem-memfd.c

-- 
2.16.0.rc1.1.gef27df75a1