diff options
-rw-r--r-- | arch/x86/kvm/lapic.c | 22 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 41 | ||||
-rw-r--r-- | include/linux/kvm_host.h | 16 | ||||
-rw-r--r-- | virt/kvm/kvm_main.c | 34 |
4 files changed, 58 insertions, 55 deletions
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index bad6a25067bc..9fa5b8164961 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -529,14 +529,16 @@ int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq, | |||
529 | 529 | ||
530 | static int pv_eoi_put_user(struct kvm_vcpu *vcpu, u8 val) | 530 | static int pv_eoi_put_user(struct kvm_vcpu *vcpu, u8 val) |
531 | { | 531 | { |
532 | return kvm_vcpu_write_guest_cached(vcpu, &vcpu->arch.pv_eoi.data, &val, | 532 | |
533 | sizeof(val)); | 533 | return kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data, &val, |
534 | sizeof(val)); | ||
534 | } | 535 | } |
535 | 536 | ||
536 | static int pv_eoi_get_user(struct kvm_vcpu *vcpu, u8 *val) | 537 | static int pv_eoi_get_user(struct kvm_vcpu *vcpu, u8 *val) |
537 | { | 538 | { |
538 | return kvm_vcpu_read_guest_cached(vcpu, &vcpu->arch.pv_eoi.data, val, | 539 | |
539 | sizeof(*val)); | 540 | return kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data, val, |
541 | sizeof(*val)); | ||
540 | } | 542 | } |
541 | 543 | ||
542 | static inline bool pv_eoi_enabled(struct kvm_vcpu *vcpu) | 544 | static inline bool pv_eoi_enabled(struct kvm_vcpu *vcpu) |
@@ -2285,8 +2287,8 @@ void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu) | |||
2285 | if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention)) | 2287 | if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention)) |
2286 | return; | 2288 | return; |
2287 | 2289 | ||
2288 | if (kvm_vcpu_read_guest_cached(vcpu, &vcpu->arch.apic->vapic_cache, &data, | 2290 | if (kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data, |
2289 | sizeof(u32))) | 2291 | sizeof(u32))) |
2290 | return; | 2292 | return; |
2291 | 2293 | ||
2292 | apic_set_tpr(vcpu->arch.apic, data & 0xff); | 2294 | apic_set_tpr(vcpu->arch.apic, data & 0xff); |
@@ -2338,14 +2340,14 @@ void kvm_lapic_sync_to_vapic(struct kvm_vcpu *vcpu) | |||
2338 | max_isr = 0; | 2340 | max_isr = 0; |
2339 | data = (tpr & 0xff) | ((max_isr & 0xf0) << 8) | (max_irr << 24); | 2341 | data = (tpr & 0xff) | ((max_isr & 0xf0) << 8) | (max_irr << 24); |
2340 | 2342 | ||
2341 | kvm_vcpu_write_guest_cached(vcpu, &vcpu->arch.apic->vapic_cache, &data, | 2343 | kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data, |
2342 | sizeof(u32)); | 2344 | sizeof(u32)); |
2343 | } | 2345 | } |
2344 | 2346 | ||
2345 | int kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr) | 2347 | int kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr) |
2346 | { | 2348 | { |
2347 | if (vapic_addr) { | 2349 | if (vapic_addr) { |
2348 | if (kvm_vcpu_gfn_to_hva_cache_init(vcpu, | 2350 | if (kvm_gfn_to_hva_cache_init(vcpu->kvm, |
2349 | &vcpu->arch.apic->vapic_cache, | 2351 | &vcpu->arch.apic->vapic_cache, |
2350 | vapic_addr, sizeof(u32))) | 2352 | vapic_addr, sizeof(u32))) |
2351 | return -EINVAL; | 2353 | return -EINVAL; |
@@ -2439,7 +2441,7 @@ int kvm_lapic_enable_pv_eoi(struct kvm_vcpu *vcpu, u64 data) | |||
2439 | vcpu->arch.pv_eoi.msr_val = data; | 2441 | vcpu->arch.pv_eoi.msr_val = data; |
2440 | if (!pv_eoi_enabled(vcpu)) | 2442 | if (!pv_eoi_enabled(vcpu)) |
2441 | return 0; | 2443 | return 0; |
2442 | return kvm_vcpu_gfn_to_hva_cache_init(vcpu, &vcpu->arch.pv_eoi.data, | 2444 | return kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.pv_eoi.data, |
2443 | addr, sizeof(u8)); | 2445 | addr, sizeof(u8)); |
2444 | } | 2446 | } |
2445 | 2447 | ||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 2fe9aa116288..b38a302858a0 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -1785,7 +1785,7 @@ static void kvm_setup_pvclock_page(struct kvm_vcpu *v) | |||
1785 | struct kvm_vcpu_arch *vcpu = &v->arch; | 1785 | struct kvm_vcpu_arch *vcpu = &v->arch; |
1786 | struct pvclock_vcpu_time_info guest_hv_clock; | 1786 | struct pvclock_vcpu_time_info guest_hv_clock; |
1787 | 1787 | ||
1788 | if (unlikely(kvm_vcpu_read_guest_cached(v, &vcpu->pv_time, | 1788 | if (unlikely(kvm_read_guest_cached(v->kvm, &vcpu->pv_time, |
1789 | &guest_hv_clock, sizeof(guest_hv_clock)))) | 1789 | &guest_hv_clock, sizeof(guest_hv_clock)))) |
1790 | return; | 1790 | return; |
1791 | 1791 | ||
@@ -1806,9 +1806,9 @@ static void kvm_setup_pvclock_page(struct kvm_vcpu *v) | |||
1806 | BUILD_BUG_ON(offsetof(struct pvclock_vcpu_time_info, version) != 0); | 1806 | BUILD_BUG_ON(offsetof(struct pvclock_vcpu_time_info, version) != 0); |
1807 | 1807 | ||
1808 | vcpu->hv_clock.version = guest_hv_clock.version + 1; | 1808 | vcpu->hv_clock.version = guest_hv_clock.version + 1; |
1809 | kvm_vcpu_write_guest_cached(v, &vcpu->pv_time, | 1809 | kvm_write_guest_cached(v->kvm, &vcpu->pv_time, |
1810 | &vcpu->hv_clock, | 1810 | &vcpu->hv_clock, |
1811 | sizeof(vcpu->hv_clock.version)); | 1811 | sizeof(vcpu->hv_clock.version)); |
1812 | 1812 | ||
1813 | smp_wmb(); | 1813 | smp_wmb(); |
1814 | 1814 | ||
@@ -1822,16 +1822,16 @@ static void kvm_setup_pvclock_page(struct kvm_vcpu *v) | |||
1822 | 1822 | ||
1823 | trace_kvm_pvclock_update(v->vcpu_id, &vcpu->hv_clock); | 1823 | trace_kvm_pvclock_update(v->vcpu_id, &vcpu->hv_clock); |
1824 | 1824 | ||
1825 | kvm_vcpu_write_guest_cached(v, &vcpu->pv_time, | 1825 | kvm_write_guest_cached(v->kvm, &vcpu->pv_time, |
1826 | &vcpu->hv_clock, | 1826 | &vcpu->hv_clock, |
1827 | sizeof(vcpu->hv_clock)); | 1827 | sizeof(vcpu->hv_clock)); |
1828 | 1828 | ||
1829 | smp_wmb(); | 1829 | smp_wmb(); |
1830 | 1830 | ||
1831 | vcpu->hv_clock.version++; | 1831 | vcpu->hv_clock.version++; |
1832 | kvm_vcpu_write_guest_cached(v, &vcpu->pv_time, | 1832 | kvm_write_guest_cached(v->kvm, &vcpu->pv_time, |
1833 | &vcpu->hv_clock, | 1833 | &vcpu->hv_clock, |
1834 | sizeof(vcpu->hv_clock.version)); | 1834 | sizeof(vcpu->hv_clock.version)); |
1835 | } | 1835 | } |
1836 | 1836 | ||
1837 | static int kvm_guest_time_update(struct kvm_vcpu *v) | 1837 | static int kvm_guest_time_update(struct kvm_vcpu *v) |
@@ -2064,7 +2064,7 @@ static int kvm_pv_enable_async_pf(struct kvm_vcpu *vcpu, u64 data) | |||
2064 | return 0; | 2064 | return 0; |
2065 | } | 2065 | } |
2066 | 2066 | ||
2067 | if (kvm_vcpu_gfn_to_hva_cache_init(vcpu, &vcpu->arch.apf.data, gpa, | 2067 | if (kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.apf.data, gpa, |
2068 | sizeof(u32))) | 2068 | sizeof(u32))) |
2069 | return 1; | 2069 | return 1; |
2070 | 2070 | ||
@@ -2083,7 +2083,7 @@ static void record_steal_time(struct kvm_vcpu *vcpu) | |||
2083 | if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED)) | 2083 | if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED)) |
2084 | return; | 2084 | return; |
2085 | 2085 | ||
2086 | if (unlikely(kvm_vcpu_read_guest_cached(vcpu, &vcpu->arch.st.stime, | 2086 | if (unlikely(kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.st.stime, |
2087 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)))) | 2087 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)))) |
2088 | return; | 2088 | return; |
2089 | 2089 | ||
@@ -2094,7 +2094,7 @@ static void record_steal_time(struct kvm_vcpu *vcpu) | |||
2094 | 2094 | ||
2095 | vcpu->arch.st.steal.version += 1; | 2095 | vcpu->arch.st.steal.version += 1; |
2096 | 2096 | ||
2097 | kvm_vcpu_write_guest_cached(vcpu, &vcpu->arch.st.stime, | 2097 | kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.st.stime, |
2098 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)); | 2098 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)); |
2099 | 2099 | ||
2100 | smp_wmb(); | 2100 | smp_wmb(); |
@@ -2103,14 +2103,14 @@ static void record_steal_time(struct kvm_vcpu *vcpu) | |||
2103 | vcpu->arch.st.last_steal; | 2103 | vcpu->arch.st.last_steal; |
2104 | vcpu->arch.st.last_steal = current->sched_info.run_delay; | 2104 | vcpu->arch.st.last_steal = current->sched_info.run_delay; |
2105 | 2105 | ||
2106 | kvm_vcpu_write_guest_cached(vcpu, &vcpu->arch.st.stime, | 2106 | kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.st.stime, |
2107 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)); | 2107 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)); |
2108 | 2108 | ||
2109 | smp_wmb(); | 2109 | smp_wmb(); |
2110 | 2110 | ||
2111 | vcpu->arch.st.steal.version += 1; | 2111 | vcpu->arch.st.steal.version += 1; |
2112 | 2112 | ||
2113 | kvm_vcpu_write_guest_cached(vcpu, &vcpu->arch.st.stime, | 2113 | kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.st.stime, |
2114 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)); | 2114 | &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)); |
2115 | } | 2115 | } |
2116 | 2116 | ||
@@ -2215,7 +2215,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) | |||
2215 | if (!(data & 1)) | 2215 | if (!(data & 1)) |
2216 | break; | 2216 | break; |
2217 | 2217 | ||
2218 | if (kvm_vcpu_gfn_to_hva_cache_init(vcpu, | 2218 | if (kvm_gfn_to_hva_cache_init(vcpu->kvm, |
2219 | &vcpu->arch.pv_time, data & ~1ULL, | 2219 | &vcpu->arch.pv_time, data & ~1ULL, |
2220 | sizeof(struct pvclock_vcpu_time_info))) | 2220 | sizeof(struct pvclock_vcpu_time_info))) |
2221 | vcpu->arch.pv_time_enabled = false; | 2221 | vcpu->arch.pv_time_enabled = false; |
@@ -2236,7 +2236,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) | |||
2236 | if (data & KVM_STEAL_RESERVED_MASK) | 2236 | if (data & KVM_STEAL_RESERVED_MASK) |
2237 | return 1; | 2237 | return 1; |
2238 | 2238 | ||
2239 | if (kvm_vcpu_gfn_to_hva_cache_init(vcpu, &vcpu->arch.st.stime, | 2239 | if (kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.st.stime, |
2240 | data & KVM_STEAL_VALID_BITS, | 2240 | data & KVM_STEAL_VALID_BITS, |
2241 | sizeof(struct kvm_steal_time))) | 2241 | sizeof(struct kvm_steal_time))) |
2242 | return 1; | 2242 | return 1; |
@@ -2858,7 +2858,7 @@ static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu) | |||
2858 | 2858 | ||
2859 | vcpu->arch.st.steal.preempted = 1; | 2859 | vcpu->arch.st.steal.preempted = 1; |
2860 | 2860 | ||
2861 | kvm_vcpu_write_guest_offset_cached(vcpu, &vcpu->arch.st.stime, | 2861 | kvm_write_guest_offset_cached(vcpu->kvm, &vcpu->arch.st.stime, |
2862 | &vcpu->arch.st.steal.preempted, | 2862 | &vcpu->arch.st.steal.preempted, |
2863 | offsetof(struct kvm_steal_time, preempted), | 2863 | offsetof(struct kvm_steal_time, preempted), |
2864 | sizeof(vcpu->arch.st.steal.preempted)); | 2864 | sizeof(vcpu->arch.st.steal.preempted)); |
@@ -8527,8 +8527,9 @@ static void kvm_del_async_pf_gfn(struct kvm_vcpu *vcpu, gfn_t gfn) | |||
8527 | 8527 | ||
8528 | static int apf_put_user(struct kvm_vcpu *vcpu, u32 val) | 8528 | static int apf_put_user(struct kvm_vcpu *vcpu, u32 val) |
8529 | { | 8529 | { |
8530 | return kvm_vcpu_write_guest_cached(vcpu, &vcpu->arch.apf.data, &val, | 8530 | |
8531 | sizeof(val)); | 8531 | return kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.apf.data, &val, |
8532 | sizeof(val)); | ||
8532 | } | 8533 | } |
8533 | 8534 | ||
8534 | void kvm_arch_async_page_not_present(struct kvm_vcpu *vcpu, | 8535 | void kvm_arch_async_page_not_present(struct kvm_vcpu *vcpu, |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 25cf258a1c9b..3727afdf614d 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -650,18 +650,18 @@ int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset, | |||
650 | int kvm_read_guest_atomic(struct kvm *kvm, gpa_t gpa, void *data, | 650 | int kvm_read_guest_atomic(struct kvm *kvm, gpa_t gpa, void *data, |
651 | unsigned long len); | 651 | unsigned long len); |
652 | int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len); | 652 | int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len); |
653 | int kvm_vcpu_read_guest_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *ghc, | 653 | int kvm_read_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
654 | void *data, unsigned long len); | 654 | void *data, unsigned long len); |
655 | int kvm_write_guest_page(struct kvm *kvm, gfn_t gfn, const void *data, | 655 | int kvm_write_guest_page(struct kvm *kvm, gfn_t gfn, const void *data, |
656 | int offset, int len); | 656 | int offset, int len); |
657 | int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data, | 657 | int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data, |
658 | unsigned long len); | 658 | unsigned long len); |
659 | int kvm_vcpu_write_guest_cached(struct kvm_vcpu *v, struct gfn_to_hva_cache *ghc, | 659 | int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
660 | void *data, unsigned long len); | 660 | void *data, unsigned long len); |
661 | int kvm_vcpu_write_guest_offset_cached(struct kvm_vcpu *v, struct gfn_to_hva_cache *ghc, | 661 | int kvm_write_guest_offset_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
662 | void *data, int offset, unsigned long len); | 662 | void *data, int offset, unsigned long len); |
663 | int kvm_vcpu_gfn_to_hva_cache_init(struct kvm_vcpu *v, struct gfn_to_hva_cache *ghc, | 663 | int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
664 | gpa_t gpa, unsigned long len); | 664 | gpa_t gpa, unsigned long len); |
665 | int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len); | 665 | int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len); |
666 | int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len); | 666 | int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len); |
667 | struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn); | 667 | struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn); |
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 6281cc2446d5..4c4d3fe10654 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -1975,18 +1975,18 @@ static int __kvm_gfn_to_hva_cache_init(struct kvm_memslots *slots, | |||
1975 | return 0; | 1975 | return 0; |
1976 | } | 1976 | } |
1977 | 1977 | ||
1978 | int kvm_vcpu_gfn_to_hva_cache_init(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *ghc, | 1978 | int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
1979 | gpa_t gpa, unsigned long len) | 1979 | gpa_t gpa, unsigned long len) |
1980 | { | 1980 | { |
1981 | struct kvm_memslots *slots = kvm_vcpu_memslots(vcpu); | 1981 | struct kvm_memslots *slots = kvm_memslots(kvm); |
1982 | return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len); | 1982 | return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len); |
1983 | } | 1983 | } |
1984 | EXPORT_SYMBOL_GPL(kvm_vcpu_gfn_to_hva_cache_init); | 1984 | EXPORT_SYMBOL_GPL(kvm_gfn_to_hva_cache_init); |
1985 | 1985 | ||
1986 | int kvm_vcpu_write_guest_offset_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *ghc, | 1986 | int kvm_write_guest_offset_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
1987 | void *data, int offset, unsigned long len) | 1987 | void *data, int offset, unsigned long len) |
1988 | { | 1988 | { |
1989 | struct kvm_memslots *slots = kvm_vcpu_memslots(vcpu); | 1989 | struct kvm_memslots *slots = kvm_memslots(kvm); |
1990 | int r; | 1990 | int r; |
1991 | gpa_t gpa = ghc->gpa + offset; | 1991 | gpa_t gpa = ghc->gpa + offset; |
1992 | 1992 | ||
@@ -1996,7 +1996,7 @@ int kvm_vcpu_write_guest_offset_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_ | |||
1996 | __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); | 1996 | __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); |
1997 | 1997 | ||
1998 | if (unlikely(!ghc->memslot)) | 1998 | if (unlikely(!ghc->memslot)) |
1999 | return kvm_vcpu_write_guest(vcpu, gpa, data, len); | 1999 | return kvm_write_guest(kvm, gpa, data, len); |
2000 | 2000 | ||
2001 | if (kvm_is_error_hva(ghc->hva)) | 2001 | if (kvm_is_error_hva(ghc->hva)) |
2002 | return -EFAULT; | 2002 | return -EFAULT; |
@@ -2008,19 +2008,19 @@ int kvm_vcpu_write_guest_offset_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_ | |||
2008 | 2008 | ||
2009 | return 0; | 2009 | return 0; |
2010 | } | 2010 | } |
2011 | EXPORT_SYMBOL_GPL(kvm_vcpu_write_guest_offset_cached); | 2011 | EXPORT_SYMBOL_GPL(kvm_write_guest_offset_cached); |
2012 | 2012 | ||
2013 | int kvm_vcpu_write_guest_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *ghc, | 2013 | int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
2014 | void *data, unsigned long len) | 2014 | void *data, unsigned long len) |
2015 | { | 2015 | { |
2016 | return kvm_vcpu_write_guest_offset_cached(vcpu, ghc, data, 0, len); | 2016 | return kvm_write_guest_offset_cached(kvm, ghc, data, 0, len); |
2017 | } | 2017 | } |
2018 | EXPORT_SYMBOL_GPL(kvm_vcpu_write_guest_cached); | 2018 | EXPORT_SYMBOL_GPL(kvm_write_guest_cached); |
2019 | 2019 | ||
2020 | int kvm_vcpu_read_guest_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *ghc, | 2020 | int kvm_read_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
2021 | void *data, unsigned long len) | 2021 | void *data, unsigned long len) |
2022 | { | 2022 | { |
2023 | struct kvm_memslots *slots = kvm_vcpu_memslots(vcpu); | 2023 | struct kvm_memslots *slots = kvm_memslots(kvm); |
2024 | int r; | 2024 | int r; |
2025 | 2025 | ||
2026 | BUG_ON(len > ghc->len); | 2026 | BUG_ON(len > ghc->len); |
@@ -2029,7 +2029,7 @@ int kvm_vcpu_read_guest_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *g | |||
2029 | __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); | 2029 | __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); |
2030 | 2030 | ||
2031 | if (unlikely(!ghc->memslot)) | 2031 | if (unlikely(!ghc->memslot)) |
2032 | return kvm_vcpu_read_guest(vcpu, ghc->gpa, data, len); | 2032 | return kvm_read_guest(kvm, ghc->gpa, data, len); |
2033 | 2033 | ||
2034 | if (kvm_is_error_hva(ghc->hva)) | 2034 | if (kvm_is_error_hva(ghc->hva)) |
2035 | return -EFAULT; | 2035 | return -EFAULT; |
@@ -2040,7 +2040,7 @@ int kvm_vcpu_read_guest_cached(struct kvm_vcpu *vcpu, struct gfn_to_hva_cache *g | |||
2040 | 2040 | ||
2041 | return 0; | 2041 | return 0; |
2042 | } | 2042 | } |
2043 | EXPORT_SYMBOL_GPL(kvm_vcpu_read_guest_cached); | 2043 | EXPORT_SYMBOL_GPL(kvm_read_guest_cached); |
2044 | 2044 | ||
2045 | int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len) | 2045 | int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len) |
2046 | { | 2046 | { |