Sean Christopherson [off-list ref] writes:
quoted hunk ↗ jump to hunk
[...snip...]
quoted
quoted
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!