|
@@ -681,6 +681,13 @@ static inline int memslot_id(struct kvm *kvm, gfn_t gfn)
|
|
return gfn_to_memslot(kvm, gfn)->id;
|
|
return gfn_to_memslot(kvm, gfn)->id;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline gfn_t gfn_to_index(gfn_t gfn, gfn_t base_gfn, int level)
|
|
|
|
+{
|
|
|
|
+ /* KVM_HPAGE_GFN_SHIFT(PT_PAGE_TABLE_LEVEL) must be 0. */
|
|
|
|
+ return (gfn >> KVM_HPAGE_GFN_SHIFT(level)) -
|
|
|
|
+ (base_gfn >> KVM_HPAGE_GFN_SHIFT(level));
|
|
|
|
+}
|
|
|
|
+
|
|
static inline unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot,
|
|
static inline unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot,
|
|
gfn_t gfn)
|
|
gfn_t gfn)
|
|
{
|
|
{
|