From: David Hildenbrand <david@kernel.org>
To: Michael Roth <michael.roth@amd.com>, qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, berrange@redhat.com, armbru@redhat.com,
pankaj.gupta@amd.com, isaku.yamahata@intel.com,
xiaoyao.li@intel.com, chao.p.peng@linux.intel.com,
Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>
Subject: Re: [PATCH v5 08/12] hostmem: Support fully shared guest memfd to back a VM
Date: Thu, 10 Sep 2026 10:54:09 +0200 [thread overview]
Message-ID: <eee90083-3962-4bf4-a7be-2e06e02e4e94@kernel.org> (raw)
In-Reply-To: <20260908133151.836685-9-michael.roth@amd.com>
On 9/8/26 15:30, Michael Roth wrote:
> From: Peter Xu <peterx@redhat.com>
>
> Host backends supports guest-memfd now by detecting whether it's a
> confidential VM. There's no way to choose it yet from the memory level to
> use it fully shared. If we use guest-memfd, it so far always implies we
> need two layers of memory backends, while the guest-memfd only provides the
> private set of pages.
>
> This patch introduces a way so that QEMU can consume guest memfd as the
> only source of memory to back the object (aka, fully shared).
>
> To use the fully shared guest-memfd, one can add a memfd object with:
>
> -object memory-backend-memfd,guest-memfd=on,share=on
>
> Note that share=on is required with fully shared guest_memfd.
>
> PS: there's a trivial touch-up on fd<0 check, because the stub to create
> guest-memfd may return negative but not -1.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> Reviewed-by: Fabiano Rosas <farosas@suse.de>
> Signed-off-by: Michael Roth <michael.roth@amd.com>
> ---
[...]
> static bool
> @@ -47,11 +56,31 @@ memfd_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
> goto have_fd;
> }
>
> - fd = qemu_memfd_create(TYPE_MEMORY_BACKEND_MEMFD, backend->size,
> - m->hugetlb, m->hugetlbsize, m->seal ?
> - F_SEAL_GROW | F_SEAL_SHRINK | F_SEAL_SEAL : 0,
> - errp);
> - if (fd == -1) {
> + if (m->guest_memfd) {
> + /*
> + * NOTE: guest-memfd ignores seal=on/off because it always
> + * implicitly seals the FD by definition.
> + */
> + if (!backend->share) {
> + error_setg(errp, "guest-memfd=on must be used with share=on");
> + return false;
> + } else if (m->hugetlb) {
> + error_setg(errp, "guest-memfd=on doesn't support hugetlb=on yet");
There is a lot of uncertainty how guest_memfd would consume huge pages. So best
to drop the "yet" that implies how it would be consumed (and that it would be
called "hugetlb").
Apart from that LGTM
Reviewed-by: David Hildenbrand <david@kernel.org>
--
Cheers,
David
next prev parent reply other threads:[~2026-09-10 8:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 13:30 [PATCH v5 00/12] KVM/hostmem: Support init-shared guest-memfd as VM backends Michael Roth
2026-09-08 13:30 ` [PATCH v5 01/12] kvm: Decouple memory attribute check from kvm_guest_memfd_supported Michael Roth
2026-09-10 8:47 ` David Hildenbrand
2026-09-08 13:30 ` [PATCH v5 02/12] kvm: Detect guest-memfd flags supported Michael Roth
2026-09-08 13:30 ` [PATCH v5 03/12] kvm: Provide explicit error for kvm_create_guest_memfd() Michael Roth
2026-09-10 8:48 ` David Hildenbrand
2026-09-08 13:30 ` [PATCH v5 04/12] ramblock: Rename guest_memfd to guest_memfd_private Michael Roth
2026-09-10 8:49 ` David Hildenbrand
2026-09-08 13:30 ` [PATCH v5 05/12] memory: Rename RAM_GUEST_MEMFD to RAM_GUEST_MEMFD_PRIVATE Michael Roth
2026-09-10 8:50 ` David Hildenbrand
2026-09-08 13:30 ` [PATCH v5 06/12] memory: Rename memory_region_has_guest_memfd() to *_private() Michael Roth
2026-09-10 8:50 ` David Hildenbrand
2026-09-08 13:30 ` [PATCH v5 07/12] hostmem: Rename guest_memfd to guest_memfd_private Michael Roth
2026-09-10 8:51 ` David Hildenbrand
2026-09-08 13:30 ` [PATCH v5 08/12] hostmem: Support fully shared guest memfd to back a VM Michael Roth
2026-09-08 14:03 ` Markus Armbruster
2026-09-10 22:58 ` Michael Roth
2026-09-11 5:56 ` Markus Armbruster
2026-09-11 19:22 ` Michael Roth
2026-09-10 8:54 ` David Hildenbrand [this message]
2026-09-10 23:00 ` Michael Roth
2026-09-11 12:06 ` Peter Xu
2026-09-11 16:00 ` David Hildenbrand (Arm)
2026-09-08 13:30 ` [PATCH v5 09/12] machine: Rename machine_require_guest_memfd() to *_private() Michael Roth
2026-09-10 8:55 ` David Hildenbrand
2026-09-10 23:08 ` Michael Roth
2026-09-11 10:48 ` David Hildenbrand (Arm)
2026-09-11 19:27 ` Michael Roth
2026-09-08 13:31 ` [PATCH v5 10/12] memory: Rename memory_region_init_ram_guest_memfd() " Michael Roth
2026-09-10 8:56 ` David Hildenbrand
2026-09-08 13:31 ` [PATCH v5 11/12] tests/migration-test: Support guest-memfd init shared mem type Michael Roth
2026-09-08 13:31 ` [PATCH v5 12/12] tests/migration-test: Add a precopy test for guest-memfd Michael Roth
2026-09-10 8:45 ` [PATCH v5 00/12] KVM/hostmem: Support init-shared guest-memfd as VM backends David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=eee90083-3962-4bf4-a7be-2e06e02e4e94@kernel.org \
--to=david@kernel.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=chao.p.peng@linux.intel.com \
--cc=farosas@suse.de \
--cc=isaku.yamahata@intel.com \
--cc=michael.roth@amd.com \
--cc=pankaj.gupta@amd.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=xiaoyao.li@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.