|
@@ -1119,6 +1119,20 @@ static int kvm_vm_ioctl_get_nr_mmu_pages(struct kvm *kvm)
|
|
|
return kvm->n_alloc_mmu_pages;
|
|
|
}
|
|
|
|
|
|
+gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+ struct kvm_mem_alias *alias;
|
|
|
+
|
|
|
+ for (i = 0; i < kvm->naliases; ++i) {
|
|
|
+ alias = &kvm->aliases[i];
|
|
|
+ if (gfn >= alias->base_gfn
|
|
|
+ && gfn < alias->base_gfn + alias->npages)
|
|
|
+ return alias->target_gfn + gfn - alias->base_gfn;
|
|
|
+ }
|
|
|
+ return gfn;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Set a new alias region. Aliases map a portion of physical memory into
|
|
|
* another portion. This is useful for memory windows, for example the PC
|