Re: [PATCH v4 08/11] KVM: guest_memfd: Add support for preservation via LUO
From: tarunsahu
Date: Mon Aug 10 2026 - 09:49:14 EST
Ackerley Tng <ackerleytng@xxxxxxxxxx> writes:
> Tarun Sahu <tarunsahu@xxxxxxxxxx> writes:
>
>>
>> [...snip...]
>>
>> +static bool kvm_gmem_luo_can_preserve(struct liveupdate_file_handler *handler, struct file *file)
>> +{
>> + struct inode *inode = file_inode(file);
>> + struct gmem_file *gmem_file;
>> + struct kvm *kvm;
>> +
>> + if (inode->i_sb->s_magic != GUEST_MEMFD_MAGIC)
>> + return false;
>> +
>> + gmem_file = file->private_data;
>> + if (!gmem_file)
>> + return false;
>> +
>> + /*
>> + * Only Fully-shared guest_memfd preservation is supported
>> + */
>> + if (!(GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED))
>> + return false;
>> +
>
> The above check can probably be removed. I think the core thing about
> this series is "we can preserve any memory that doesn't have any
> encryption state that goes along with it", and so the check for
> kvm_arch_has_private_mem() below would be sufficient to gate that.
Sounds Good. Will remove it in next version. I will rephrase the
Line: "Support only fully shared guest_memfd" => "Support only
guest_memfd that does not support private pages and also can not be
converted to private"
>
>> + /*
>> + * It makes sure that no memory can be converted to private
>> + * even if it was initially fully shared (in-place conversions are
>> + * prevented).
>> + */
>> + kvm = gmem_file->kvm;
>> + if (kvm_arch_has_private_mem(kvm))
>> + return false;
>> +
>
> For now, has_private_mem == has some encryption state that we can't
> preserve yet.
>
> This also gates off KVM_X86_SW_PROTECTED_VM, but I guess that is
> intended, since when work is done for preserving encryption state, we
> can then test using KVM_X86_SW_PROTECTED_VM, and only then, remove this
> check?
Yes, It will be enabled when private memory preservation will be supported.
>
>> + if (mapping_large_folio_support(inode->i_mapping))
>> + return false;
>> +
>> + return true;
>> +}
>> +
>>
>> [...snip...]
>>