Michael Roth <[email protected]> writes:
> The sev-snp-guest object is currently used to provide confidential guest
> by using guest_memfd for private GPA ranges, and for shared GPA ranges
> the normal memory backend is used, i.e. "out-of-place" conversion
> between shared/private.
>
> Now that "in-place" conversion support is available in QEMU, add a
> parameter to select between these 2 modes of utilizing guest_memfd (it
> cannot be enabled transparently due to noticeable differences in
> behavior (e.g. memory usage accounting and lack of hugetlb support for
> shared GPA ranges) that userspace needs to be aware of when selecting
> the mode).
>
> Note that the actual capability checks for in-place conversion support
> in the host kernel will happen later in kvm_arch_init().
>
> Signed-off-by: Michael Roth <[email protected]>
> ---
> qapi/qom.json | 8 +++++++-
> target/i386/sev.c | 17 +++++++++++++++++
> 2 files changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/qapi/qom.json b/qapi/qom.json
> index 49f222796a..84166c2457 100644
> --- a/qapi/qom.json
> +++ b/qapi/qom.json
> @@ -1099,6 +1099,11 @@
> # @tsc-frequency: set secure TSC frequency. Only valid if Secure TSC
> # is enabled (default: zero) (since 11.1)
> #
> +# @convert-in-place: If true, the same physical pages are reused
> +# when memory is converted between shared and private states.
> +# If false (default), separate allocations are used depending
> +# on whether the page is private or shared. (since 11.2)
> +#
Guidance on when to enable it? Link to suitable docs would be fine.
> # Since: 9.1
> ##
> { 'struct': 'SevSnpGuestProperties',
> @@ -1112,7 +1117,8 @@
> '*host-data': 'str',
> '*vcek-disabled': 'bool',
> '*secure-tsc': 'bool',
> - '*tsc-frequency': 'uint32' } }
> + '*tsc-frequency': 'uint32',
> + '*convert-in-place': 'bool'} }
>
> ##
> # @TdxGuestProperties:
[...]