On Wed, May 05, 2021, Kai Huang wrote: > Currently tdp_mmu_map_handle_target_level() returns 0, which is > RET_PF_RETRY, when page fault is actually fixed. This makes > kvm_tdp_mmu_map() also return RET_PF_RETRY in this case, instead of > RET_PF_FIXED. Fix by initializing ret to RET_PF_FIXED. Probably worth adding a blurb to call out that the bad return value is benign since kvm_mmu_page_fault() resumes the guest on RET_PF_RETRY or RET_PF_FIXED. And for good measure, a Fixes without stable@. Fixes: bb18842e2111 ("kvm: x86/mmu: Add TDP MMU PF handler") Reviewed-by: Sean Christopherson <seanjc@xxxxxxxxxx> Side topic... Ben, does the TDP MMU intentionally not prefetch pages? If so, why not? > Signed-off-by: Kai Huang <kai.huang@xxxxxxxxx> > --- > arch/x86/kvm/mmu/tdp_mmu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c > index ff0ae030004d..1cad4c9f7c34 100644 > --- a/arch/x86/kvm/mmu/tdp_mmu.c > +++ b/arch/x86/kvm/mmu/tdp_mmu.c > @@ -905,7 +905,7 @@ static int tdp_mmu_map_handle_target_level(struct kvm_vcpu *vcpu, int write, > kvm_pfn_t pfn, bool prefault) > { > u64 new_spte; > - int ret = 0; > + int ret = RET_PF_FIXED; > int make_spte_ret = 0; > > if (unlikely(is_noslot_pfn(pfn))) > -- > 2.31.1 >