Sean Christopherson <[email protected]> writes: > > [...snip...] > >> > >> > I'm looking at the doc of KVM_SET_USER_MEMORY_REGION2, which reads >> > >> > # When mapping a gfn into the guest, KVM selects shared vs. private, i.e >> > consumes >> > # 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 >> > # toggling KVM_MEMORY_ATTRIBUTE_PRIVATE via KVM_SET_MEMORY_ATTRIBUTES as >> > needed. >> >> I'm not sure how this snippet from the documentation connects with what >> you'd like changed. > > It's flat out wrong once in-place conversion lands, because it assumes PRIVATE > is tracked per-VM. Something like this? > > diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst > index 4eb7e75a7473..c9769e5e7329 100644 > --- a/Documentation/virt/kvm/api.rst > +++ b/Documentation/virt/kvm/api.rst > @@ -6383,9 +6383,12 @@ 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 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 > +state. If in-place conversion is disabled, i.e. PRIVATE is tracked per-VM, > +then 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 > toggling KVM_MEMORY_ATTRIBUTE_PRIVATE via KVM_SET_MEMORY_ATTRIBUTES as > needed. > +If in-place conversion is enabled, then the starting PRIVATE vs. SHARED state > +of a gfn is determined by the relevant guest_memfd instance. > > S390: > ^^^^^
Will apply this, thanks!
