summaryrefslogtreecommitdiffstats
path: root/virt/kvm/kvm_main.c
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2024-10-10 20:24:17 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2024-10-25 19:00:49 +0200
commitce6bf70346891f75e400f93193773fcbf72c27fc (patch)
treede80e440e6de78a2f23d2fc09e17b1e9556b3247 /virt/kvm/kvm_main.c
parentKVM: PPC: Use kvm_vcpu_map() to map guest memory to patch dcbz instructions (diff)
downloadlinux-ce6bf70346891f75e400f93193773fcbf72c27fc.tar.xz
linux-ce6bf70346891f75e400f93193773fcbf72c27fc.zip
KVM: Convert gfn_to_page() to use kvm_follow_pfn()
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>
Diffstat (limited to '')
-rw-r--r--virt/kvm/kvm_main.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index f79745d6500c..5a424598610f 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -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);