Re: [PATCH v13 19/85] KVM: Introduce kvm_follow_pfn() to eventually replace "gfn_to_pfn" APIs

From: Yan Zhao
Date: Mon Oct 21 2024 - 04:52:17 EST


On Thu, Oct 10, 2024 at 11:23:21AM -0700, Sean Christopherson wrote:
> --- a/virt/kvm/pfncache.c
> +++ b/virt/kvm/pfncache.c
> @@ -159,6 +159,12 @@ static kvm_pfn_t hva_to_pfn_retry(struct gfn_to_pfn_cache *gpc)
> kvm_pfn_t new_pfn = KVM_PFN_ERR_FAULT;
> void *new_khva = NULL;
> unsigned long mmu_seq;
> + struct kvm_follow_pfn kfp = {
> + .slot = gpc->memslot,
> + .gfn = gpa_to_gfn(gpc->gpa),
> + .flags = FOLL_WRITE,
> + .hva = gpc->uhva,
> + };
Is .map_writable uninitialized?

>
> lockdep_assert_held(&gpc->refresh_lock);
>
> @@ -197,8 +203,7 @@ static kvm_pfn_t hva_to_pfn_retry(struct gfn_to_pfn_cache *gpc)
> cond_resched();
> }
>
> - /* We always request a writable mapping */
> - new_pfn = hva_to_pfn(gpc->uhva, false, false, true, NULL);
> + new_pfn = hva_to_pfn(&kfp);
> if (is_error_noslot_pfn(new_pfn))
> goto out_error;
>
> --
> 2.47.0.rc1.288.g06298d1525-goog
>