KVM: selftests: virt_map should take npages, not size
authorAndrew Jones <drjones@redhat.com>
Fri, 13 Mar 2020 15:56:43 +0000 (16:56 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 16 Mar 2020 16:59:06 +0000 (17:59 +0100)
Also correct the comment and prototype for vm_create_default(),
as it takes a number of pages, not a size.

Signed-off-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/demand_paging_test.c
tools/testing/selftests/kvm/dirty_log_test.c
tools/testing/selftests/kvm/include/kvm_util.h
tools/testing/selftests/kvm/lib/kvm_util.c
tools/testing/selftests/kvm/x86_64/set_memory_region_test.c
tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c

index c4fc96bd064b8549b708cc520c9452525b461f6e..d82f7bc060c34bdd40675d051e3faffd152e6136 100644 (file)
@@ -410,8 +410,7 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
                                    guest_num_pages, 0);
 
        /* Do mapping for the demand paging memory slot */
-       virt_map(vm, guest_test_virt_mem, guest_test_phys_mem,
-                guest_num_pages * guest_page_size, 0);
+       virt_map(vm, guest_test_virt_mem, guest_test_phys_mem, guest_num_pages, 0);
 
        ucall_init(vm, NULL);
 
index 051791e0f5fbac5159202f603fe45943433c4526..8f5b590805a4e749ee456590a915f960ef6129ab 100644 (file)
@@ -334,8 +334,7 @@ static void run_test(enum vm_guest_mode mode, unsigned long iterations,
                                    KVM_MEM_LOG_DIRTY_PAGES);
 
        /* Do mapping for the dirty track memory slot */
-       virt_map(vm, guest_test_virt_mem, guest_test_phys_mem,
-                guest_num_pages * guest_page_size, 0);
+       virt_map(vm, guest_test_virt_mem, guest_test_phys_mem, guest_num_pages, 0);
 
        /* Cache the HVA pointer of the region */
        host_test_mem = addr_gpa2hva(vm, (vm_paddr_t)guest_test_phys_mem);
index 24f7a93671a260c3b0ebcfc2ec7ef9af2099aca3..3aa4d1e522848e6339ae2cdac7d7ef588deda135 100644 (file)
@@ -117,7 +117,7 @@ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid);
 vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min,
                          uint32_t data_memslot, uint32_t pgd_memslot);
 void virt_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr,
-             size_t size, uint32_t pgd_memslot);
+             unsigned int npages, uint32_t pgd_memslot);
 void *addr_gpa2hva(struct kvm_vm *vm, vm_paddr_t gpa);
 void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva);
 vm_paddr_t addr_hva2gpa(struct kvm_vm *vm, void *hva);
@@ -226,7 +226,7 @@ vm_paddr_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t num,
  *
  * Input Args:
  *   vcpuid - The id of the single VCPU to add to the VM.
- *   extra_mem_pages - The size of extra memories to add (this will
+ *   extra_mem_pages - The number of extra pages to add (this will
  *                     decide how much extra space we will need to
  *                     setup the page tables using memslot 0)
  *   guest_code - The vCPU's entry point
@@ -236,7 +236,7 @@ vm_paddr_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t num,
  * Return:
  *   Pointer to opaque structure that describes the created VM.
  */
-struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_size,
+struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_pages,
                                 void *guest_code);
 
 /*
index aa7697212267435562e682d39ed9b68beedc9dbb..e26917ba25bc710ec579e68cb1ec97f3908ccd5a 100644 (file)
@@ -1015,21 +1015,21 @@ vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min,
  *   vm - Virtual Machine
  *   vaddr - Virtuall address to map
  *   paddr - VM Physical Address
- *   size - The size of the range to map
+ *   npages - The number of pages to map
  *   pgd_memslot - Memory region slot for new virtual translation tables
  *
  * Output Args: None
  *
  * Return: None
  *
- * Within the VM given by vm, creates a virtual translation for the
- * page range starting at vaddr to the page range starting at paddr.
+ * Within the VM given by @vm, creates a virtual translation for
+ * @npages starting at @vaddr to the page range starting at @paddr.
  */
 void virt_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr,
-             size_t size, uint32_t pgd_memslot)
+             unsigned int npages, uint32_t pgd_memslot)
 {
        size_t page_size = vm->page_size;
-       size_t npages = size / page_size;
+       size_t size = npages * page_size;
 
        TEST_ASSERT(vaddr + size > vaddr, "Vaddr overflow");
        TEST_ASSERT(paddr + size > paddr, "Paddr overflow");
index f2efaa57679428e930910a9a0f3f491fafc4a578..c6691cff4e199369d7176ee8798531097f354521 100644 (file)
@@ -87,7 +87,7 @@ static void test_move_memory_region(void)
        gpa = vm_phy_pages_alloc(vm, 2, MEM_REGION_GPA, MEM_REGION_SLOT);
        TEST_ASSERT(gpa == MEM_REGION_GPA, "Failed vm_phy_pages_alloc\n");
 
-       virt_map(vm, MEM_REGION_GPA, MEM_REGION_GPA, 2 * 4096, 0);
+       virt_map(vm, MEM_REGION_GPA, MEM_REGION_GPA, 2, 0);
 
        /* Ditto for the host mapping so that both pages can be zeroed. */
        hva = addr_gpa2hva(vm, MEM_REGION_GPA);
index d9ca948d0b72d6ed5fc219577a39284d60918b3c..7a3228c80d2ded591ded22626d30ce6979798d11 100644 (file)
@@ -21,7 +21,7 @@
 
 /* The memory slot index to track dirty pages */
 #define TEST_MEM_SLOT_INDEX            1
-#define TEST_MEM_SIZE                  3
+#define TEST_MEM_PAGES                 3
 
 /* L1 guest test virtual memory offset */
 #define GUEST_TEST_MEM                 0xc0000000
@@ -91,15 +91,14 @@ int main(int argc, char *argv[])
        vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
                                    GUEST_TEST_MEM,
                                    TEST_MEM_SLOT_INDEX,
-                                   TEST_MEM_SIZE,
+                                   TEST_MEM_PAGES,
                                    KVM_MEM_LOG_DIRTY_PAGES);
 
        /*
         * Add an identity map for GVA range [0xc0000000, 0xc0002000).  This
         * affects both L1 and L2.  However...
         */
-       virt_map(vm, GUEST_TEST_MEM, GUEST_TEST_MEM,
-                TEST_MEM_SIZE * 4096, 0);
+       virt_map(vm, GUEST_TEST_MEM, GUEST_TEST_MEM, TEST_MEM_PAGES, 0);
 
        /*
         * ... pages in the L2 GPA range [0xc0001000, 0xc0003000) will map to
@@ -113,11 +112,11 @@ int main(int argc, char *argv[])
        nested_map(vmx, vm, NESTED_TEST_MEM1, GUEST_TEST_MEM, 4096, 0);
        nested_map(vmx, vm, NESTED_TEST_MEM2, GUEST_TEST_MEM, 4096, 0);
 
-       bmap = bitmap_alloc(TEST_MEM_SIZE);
+       bmap = bitmap_alloc(TEST_MEM_PAGES);
        host_test_mem = addr_gpa2hva(vm, GUEST_TEST_MEM);
 
        while (!done) {
-               memset(host_test_mem, 0xaa, TEST_MEM_SIZE * 4096);
+               memset(host_test_mem, 0xaa, TEST_MEM_PAGES * 4096);
                _vcpu_run(vm, VCPU_ID);
                TEST_ASSERT(run->exit_reason == KVM_EXIT_IO,
                            "Unexpected exit reason: %u (%s),\n",