Lines Matching defs:gpa

60 static bool kvm_gpc_is_valid_len(gpa_t gpa, unsigned long uhva,
63 unsigned long offset = kvm_is_error_gpa(gpa) ? offset_in_page(uhva) :
64 offset_in_page(gpa);
84 if (!kvm_is_error_gpa(gpc->gpa) && gpc->generation != slots->generation)
90 if (!kvm_gpc_is_valid_len(gpc->gpa, gpc->uhva, len))
168 * Invalidate the cache prior to dropping gpc->lock, the gpa=>uhva
170 * different task may not fail the gpa/uhva/generation checks.
248 static int __kvm_gpc_refresh(struct gfn_to_pfn_cache *gpc, gpa_t gpa, unsigned long uhva)
258 /* Either gpa or uhva must be valid, but not both */
259 if (WARN_ON_ONCE(kvm_is_error_gpa(gpa) == kvm_is_error_hva(uhva)))
275 if (kvm_is_error_gpa(gpa)) {
278 gpc->gpa = INVALID_GPA;
287 page_offset = offset_in_page(gpa);
289 if (gpc->gpa != gpa || gpc->generation != slots->generation ||
291 gfn_t gfn = gpa_to_gfn(gpa);
293 gpc->gpa = gpa;
337 * Some/all of the uhva, gpa, and memslot generation info may still be
364 if (!kvm_gpc_is_valid_len(gpc->gpa, gpc->uhva, len))
372 uhva = kvm_is_error_gpa(gpc->gpa) ? gpc->uhva : KVM_HVA_ERR_BAD;
374 return __kvm_gpc_refresh(gpc, gpc->gpa, uhva);
384 gpc->gpa = INVALID_GPA;
389 static int __kvm_gpc_activate(struct gfn_to_pfn_cache *gpc, gpa_t gpa, unsigned long uhva,
394 if (!kvm_gpc_is_valid_len(gpa, uhva, len))
416 return __kvm_gpc_refresh(gpc, gpa, uhva);
419 int kvm_gpc_activate(struct gfn_to_pfn_cache *gpc, gpa_t gpa, unsigned long len)
425 if (WARN_ON_ONCE(kvm_is_error_gpa(gpa)))
428 return __kvm_gpc_activate(gpc, gpa, KVM_HVA_ERR_BAD, len);