Pass the root_gpa into __virt_pg_map() instead of assuming vm->pgd in preparation for using it with other MMUs. No functional change intended. Signed-off-by: Yosry Ahmed --- .../testing/selftests/kvm/include/x86/processor.h | 4 ++-- tools/testing/selftests/kvm/lib/x86/processor.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/include/x86/processor.h b/tools/testing/selftests/kvm/include/x86/processor.h index 8debe0df3ffca..2f0d83b6e5952 100644 --- a/tools/testing/selftests/kvm/include/x86/processor.h +++ b/tools/testing/selftests/kvm/include/x86/processor.h @@ -1451,8 +1451,8 @@ struct pte_masks { extern const struct pte_masks x86_pte_masks; -void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, - int level, const struct pte_masks *masks); +void __virt_pg_map(struct kvm_vm *vm, vm_paddr_t root_gpa, uint64_t vaddr, + uint64_t paddr, int level, const struct pte_masks *masks); void virt_map_level(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, uint64_t nr_bytes, int level); diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c index 92a2b5aefd880..13e9376d5f545 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -230,11 +230,11 @@ static uint64_t *virt_create_upper_pte(struct kvm_vm *vm, return pte; } -void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, - int level, const struct pte_masks *masks) +void __virt_pg_map(struct kvm_vm *vm, vm_paddr_t root_gpa, uint64_t vaddr, + uint64_t paddr, int level, const struct pte_masks *masks) { const uint64_t pg_size = PG_LEVEL_SIZE(level); - uint64_t *pte = &vm->pgd; + uint64_t *pte = &root_gpa; int current_level; TEST_ASSERT(vm->mode == VM_MODE_PXXV48_4K || @@ -261,14 +261,14 @@ void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, * early if a hugepage was created. */ for (current_level = vm->pgtable_levels; current_level > PG_LEVEL_4K; current_level--) { - pte = virt_create_upper_pte(vm, vm->pgd, pte, vaddr, paddr, + pte = virt_create_upper_pte(vm, root_gpa, pte, vaddr, paddr, current_level, level, masks); if (*pte & masks->large) return; } /* Fill in page table entry. */ - pte = virt_get_pte(vm, vm->pgd, pte, vaddr, PG_LEVEL_4K, masks); + pte = virt_get_pte(vm, root_gpa, pte, vaddr, PG_LEVEL_4K, masks); TEST_ASSERT(!(*pte & masks->present), "PTE already present for 4k page at vaddr: 0x%lx", vaddr); *pte = masks->present | masks->writeable | (paddr & PHYSICAL_PAGE_MASK); @@ -285,7 +285,7 @@ void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) { - __virt_pg_map(vm, vaddr, paddr, PG_LEVEL_4K, &x86_pte_masks); + __virt_pg_map(vm, vm->pgd, vaddr, paddr, PG_LEVEL_4K, &x86_pte_masks); } void virt_map_level(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, @@ -300,7 +300,7 @@ void virt_map_level(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, nr_bytes, pg_size); for (i = 0; i < nr_pages; i++) { - __virt_pg_map(vm, vaddr, paddr, level, &x86_pte_masks); + __virt_pg_map(vm, vm->pgd, vaddr, paddr, level, &x86_pte_masks); sparsebit_set_num(vm->vpages_mapped, vaddr >> vm->page_shift, nr_bytes / PAGE_SIZE); -- 2.51.0.869.ge66316f041-goog