On 8/31/2026 8:25 AM, Ackerley Tng via B4 Relay wrote: > From: Sean Christopherson <[email protected]> > > Stub in global variable to enable in-place guest_memfd private<=>shared > memory conversion, which will eventually be exposed to userspace via a > module param, and wire up the __kvm_is_private_gfn() static call to the > guest_memfd version when in-place conversion is enabled, i.e. when gmem is > the sole authority on private vs. shared memory. > > Cc: Fuad Tabba <[email protected]> > Cc: Xiaoyao Li <[email protected]> > Signed-off-by: Sean Christopherson <[email protected]> > Co-developed-by: Ackerley Tng <[email protected]> > Signed-off-by: Ackerley Tng <[email protected]>
Reviewed-by: Binbin Wu <[email protected]> One nit below. > --- > Documentation/virt/kvm/api.rst | 7 +++++++ > include/linux/kvm_host.h | 6 ++++++ > virt/kvm/guest_memfd.c | 26 ++++++++++++++++++++++++++ > virt/kvm/kvm_main.c | 12 +++++++++++- > 4 files changed, 50 insertions(+), 1 deletion(-) > > diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst > index e0430cc750c9e..90a29424c54c8 100644 > --- a/Documentation/virt/kvm/api.rst > +++ b/Documentation/virt/kvm/api.rst > @@ -6382,6 +6382,11 @@ KVM_SET_USER_MEMORY_REGION2, e.g. shared memory can be > lazily mapped/allocated > on-demand. > > When mapping a gfn into the guest, KVM selects shared vs. private, i.e > consumes > +userspace_addr vs. guest_memfd, based on the state in guest_memfd, which is > the > +sole authority on private vs. shared memory. See > :ref:`KVM_CREATE_GUEST_MEMFD` > +to find out more about the creation-time shared/private status. > + > +If in-place conversion is disabled, KVM selects shared vs. private, i.e > consumes Nit: i.e -> i.e. > userspace_addr vs. guest_memfd, based on the gfn's > KVM_MEMORY_ATTRIBUTE_PRIVATE > state. At VM creation time, all memory is shared, i.e. the PRIVATE attribute > is '0' for all gfns. Userspace can control whether memory is shared/private > by > @@ -6429,6 +6434,8 @@ the state of a gfn/page as needed. >
