kvm->slots_lock is better. In tdx_vcpu_init_mem_region() you can
take it before the is_td_finalized() so that there is a lock that
is clearly protecting kvm_tdx->finalized between the two. (I also
suggest switching to guard() in tdx_vcpu_init_mem_region()).
Doesn't KVM_PRE_FAULT_MEMORY also need to be protected?