]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: Convert gfn_to_page() to use kvm_follow_pfn()
authorSean Christopherson <seanjc@google.com>
Thu, 10 Oct 2024 18:24:17 +0000 (11:24 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 25 Oct 2024 17:00:49 +0000 (13:00 -0400)
Convert gfn_to_page() to the new kvm_follow_pfn() internal API, which will
eventually allow removing gfn_to_pfn() and kvm_pfn_to_refcounted_page().

Tested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20241010182427.1434605-76-seanjc@google.com>

virt/kvm/kvm_main.c

index f79745d6500c2c6d0477ea5b1c643e3ad89de111..5a424598610f7c817fafbdb4e8c23add1d4811da 100644 (file)
@@ -3139,14 +3139,16 @@ EXPORT_SYMBOL_GPL(kvm_prefetch_pages);
  */
 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn)
 {
-       kvm_pfn_t pfn;
-
-       pfn = gfn_to_pfn(kvm, gfn);
-
-       if (is_error_noslot_pfn(pfn))
-               return NULL;
+       struct page *refcounted_page = NULL;
+       struct kvm_follow_pfn kfp = {
+               .slot = gfn_to_memslot(kvm, gfn),
+               .gfn = gfn,
+               .flags = FOLL_WRITE,
+               .refcounted_page = &refcounted_page,
+       };
 
-       return kvm_pfn_to_refcounted_page(pfn);
+       (void)kvm_follow_pfn(&kfp);
+       return refcounted_page;
 }
 EXPORT_SYMBOL_GPL(gfn_to_page);