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
Subject: Re: [PATCH v5 00/12] KVM/hostmem: Support init-shared guest-memfd as VM backends
Date: Thu, 10 Sep 2026 10:45:46 +0200 [thread overview]
Message-ID: <9cebada1-bda8-4e70-bfcc-7776e202420c@kernel.org> (raw)
In-Reply-To: <20260908133151.836685-1-michael.roth@amd.com>
On 9/8/26 15:30, Michael Roth wrote:
> v1: https://lore.kernel.org/r/20251023185913.2923322-1-peterx@redhat.com
> v2: https://lore.kernel.org/r/20251119172913.577392-1-peterx@redhat.com
> v3: https://lore.kernel.org/r/20251215205203.1185099-1-peterx@redhat.com/
> v4: https://lore.kernel.org/qemu-devel/20260812201938.198915-1-michael.roth@amd.com/
> v5:
> - Fix error handling for 'hugetlb' when guest-memfd=on (Daniel, Peter)
> - Default to 'seal' option being allowed/on for guest-memfd=on since
> it already satisfies the documented semantics (Peter)
> - Don't explicitly set a placeholder URI for qtest/migration-test
> as the code now relies on NULL for this path (Peter)
> - Clarify rationale for checking for kvm_enabled() in
> kvm_create_guest_memfd() (Philippe, Peter)
>
> This patchset is also available at:
>
> https://github.com/amdese/qemu/commits/gmem-shared-mem-v5
>
> and is based on top of qemu master (99e54ab5e7)
>
>
> OVERVIEW
> ========
>
> (cover letter shamelessly adapted from Peter's prior postings)
>
> Recent kernels allow guest_memfd to be initialized with an 'init-shared'
> flag that will default to allocating normal/non-private memory that can be
> used to back non-confidential VMs.
>
> This allows QEMU to make use of these init-shared guest_memfd instances via
> a common memory backend that's usable for either provide a common memory
> backend.
>
> On the QEMU side, before this series, guest_memfd was only used for private
> guest memory (and thus only applied to confidential VMs), and the guest_memfd
> FDs would be created implicitly whenever a confidential environment was
> detected/specified.
>
> With this series, users can now explicitly configure QEMU to use guest_memfd
> for non-private memory; thus, it can be used for non-confidential
> VMs. It also has implications for confidential VMs, since with this series an
> init-shared guest_memfd instance can now be specified for the shared memory
> while the internally-allocated guest_memfd continues to be used for private
> memory. This same infrastructure will also be used as the base for enabling
> in-place conversion for confidential VMs, where these separate shared/private
> paths will be modified to act on the same underlying guest_memfd instance and
> use a unified pool of shared/private memory.
>
>
> IMPLEMENTATION
> ==============
>
> In the current patchset, I reused the memory-backend-memfd object, rather
> than creating a new type of object. After all, guest-memfd (at least from
> userspace POV) works similarly like a memfd, except that it was tailored
> for VM's use case. While there is potential that new guest_memfd features
> may eventually necessitate introducing a dedicated guest_memfd memory
> backend object, for now the memory-backend-memfd object is a good fit for
> the current feature set.
>
> This will also make it easier when in-place conversion comes around, since
> confidential VMs typically already use memory-backend-memfd for their shared
> memory, so by also making using that approach to specify the guest_memfd
> backend for in-place conversion the command-line syntax remains similar, and
> even allow choosing between memfd vs. guest_memfd to be handled automatically
> based on whether or not we're dealing with a Confidential VM with in-place
> conversion enabled.
>
> Now, instead of using a normal memfd backend using:
>
> -object memory-backend-memfd,id=ID,size=SIZE,share=on
>
> One can also boot a VM with guest-memfd:
>
> -object memory-backend-memfd,id=ID,size=SIZE,share=on,guest-memfd=on
>
> The init-shared guest-memfd relies on a recent kernel (6.18+). When run it on
> an older qemu, you'll see errors like:
>
> qemu-system-x86_64: KVM does not support guest_memfd
>
> One thing to mention is live migration is by default supported, however
> postcopy is still currently not supported. The postcopy support will have
> some kernel dependency work to be merged in Linux first.
All makes sense to me!
--
Cheers,
David
prev parent reply other threads:[~2026-09-10 8:46 UTC|newest]
Thread overview: 35+ 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
2026-09-10 23:00 ` Michael Roth
2026-09-11 12:06 ` Peter Xu
2026-09-11 16:00 ` David Hildenbrand (Arm)
2026-09-14 12:59 ` Peter Xu
2026-09-15 15:02 ` 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 ` David Hildenbrand [this message]
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=9cebada1-bda8-4e70-bfcc-7776e202420c@kernel.org \
--to=david@kernel.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=chao.p.peng@linux.intel.com \
--cc=isaku.yamahata@intel.com \
--cc=michael.roth@amd.com \
--cc=pankaj.gupta@amd.com \
--cc=pbonzini@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox