On 8/31/26 02:25, Ackerley Tng via B4 Relay wrote:
> From: Sean Christopherson <[email protected]>
> 
> Allow the user to disable KVM_VM_MEMORY_ATTRIBUTES even when KVM supports
> PRIVATE and SHARED attributes, and expose gmem_in_place_conversion as a
> module parameter when per-VM attributes are supported.  I.e. let userspace
> enable in-place PRIVATE<=>SHARED conversion of guest_memfd pages.
> 
> Provide both a Kconfig option and a (conditional) module param so that
> deployments that use a custom kernel can fully disable per-VM tracking,
> while not forcing distros to ship two separate kernels in order to provide
> backwards compatibility for downstream users.
> 
> Don't allow running VMs with mixed tracking for a given instance of KVM,
> i.e. disallow toggling the module param after KVM is loaded, as the extra
> complexity needed to handle per-VM behavior far outweighs any potential
> benefit.  E.g. neither TDX nor SNP supports live migration, so in effect
> the requirement is that existing deployments that want to support both the
> old and the new models would need to tell their VMM which flavor of
> tracking to use.
> 
> Signed-off-by: Sean Christopherson <[email protected]>
> Reviewed-by: Fuad Tabba <[email protected]>
> Tested-by: Shivank Garg <[email protected]>
> [Define module_param only if CONFIG_KVM_VM_MEMORY_ATTRIBUTES is enabled]
> Suggested-by: Xiaoyao Li <[email protected]>
> Reviewed-by: Xiaoyao Li <[email protected]>
> Co-developed-by: Ackerley Tng <[email protected]>
> Signed-off-by: Ackerley Tng <[email protected]>
> ---
>  Documentation/admin-guide/kernel-parameters.txt | 25 
> +++++++++++++++++++++++++
>  arch/x86/include/asm/kvm_host.h                 |  4 +++-
>  arch/x86/kvm/Kconfig                            | 14 ++++++++++----
>  virt/kvm/kvm_main.c                             |  5 ++++-
>  4 files changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt 
> b/Documentation/admin-guide/kernel-parameters.txt
> index 68647ff4bdd24..b5719714458fb 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -3156,6 +3156,31 @@ Kernel parameters
>       kvm.enable_vmware_backdoor=[KVM] Support VMware backdoor PV interface.
>                                  Default is false (don't support).
>  
> +     kvm.gmem_in_place_conversion=
> +                     [KVM] Controls whether KVM enables in-place conversion
> +                     support for guest_memfd and tracks the private/shared
> +                     state of memory per guest_memfd instead of per VM.
> +
> +                     If enabled, KVM enables the KVM_SET_MEMORY_ATTRIBUTES2
> +                     ioctl on guest_memfd file descriptors and disables the
> +                     legacy VM-scoped KVM_SET_MEMORY_ATTRIBUTES ioctl for
> +                     private memory state tracking. Only the
> +                     KVM_MEMORY_ATTRIBUTE_PRIVATE attribute moves to
> +                     per-guest_memfd tracking; other attributes remain
> +                     per-VM.
> +
> +                     This parameter toggles KVM's in-place conversion
> +                     capability support. Whether a VMM uses separate backends
> +                     or out-of-place memory management is determined by
> +                     userspace VMM design.
> +
> +                     Note, this parameter is only available when
> +                     CONFIG_KVM_VM_MEMORY_ATTRIBUTES=y. When
> +                     CONFIG_KVM_VM_MEMORY_ATTRIBUTES is not set, in-place
> +                     conversion is unconditionally enabled.
> +
> +                     Default is Y (on).

With the doc fixed

Acked-by: David Hildenbrand (Arm) <[email protected]>

-- 
Cheers,

David

Reply via email to