Skip to content

Commit 97dfbdf

Browse files
yosrym93sean-jc
authored andcommitted
KVM: selftests: Stop passing a memslot to nested_map_memslot()
On x86, KVM selftests use memslot 0 for all the default regions used by the test infrastructure. This is an implementation detail. nested_map_memslot() is currently used to map the default regions by explicitly passing slot 0, which leaks the library implementation into the caller. Rename the function to a very verbose nested_identity_map_default_memslots() to reflect what it actually does. Add an assertion that only memslot 0 is being used so that the implementation does not change from under us. No functional change intended. Signed-off-by: Yosry Ahmed <yosry.ahmed@linux.dev> Link: https://patch.msgid.link/20251230230150.4150236-3-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent 69e81ed commit 97dfbdf

3 files changed

Lines changed: 11 additions & 7 deletions

File tree

tools/testing/selftests/kvm/include/x86/vmx.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,8 @@ void nested_pg_map(struct vmx_pages *vmx, struct kvm_vm *vm,
563563
uint64_t nested_paddr, uint64_t paddr);
564564
void nested_map(struct vmx_pages *vmx, struct kvm_vm *vm,
565565
uint64_t nested_paddr, uint64_t paddr, uint64_t size);
566-
void nested_map_memslot(struct vmx_pages *vmx, struct kvm_vm *vm,
567-
uint32_t memslot);
566+
void nested_identity_map_default_memslots(struct vmx_pages *vmx,
567+
struct kvm_vm *vm);
568568
void nested_identity_map_1g(struct vmx_pages *vmx, struct kvm_vm *vm,
569569
uint64_t addr, uint64_t size);
570570
bool kvm_cpu_has_ept(void);

tools/testing/selftests/kvm/lib/x86/vmx.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -494,12 +494,16 @@ void nested_map(struct vmx_pages *vmx, struct kvm_vm *vm,
494494
/* Prepare an identity extended page table that maps all the
495495
* physical pages in VM.
496496
*/
497-
void nested_map_memslot(struct vmx_pages *vmx, struct kvm_vm *vm,
498-
uint32_t memslot)
497+
void nested_identity_map_default_memslots(struct vmx_pages *vmx,
498+
struct kvm_vm *vm)
499499
{
500+
uint32_t s, memslot = 0;
500501
sparsebit_idx_t i, last;
501-
struct userspace_mem_region *region =
502-
memslot2region(vm, memslot);
502+
struct userspace_mem_region *region = memslot2region(vm, memslot);
503+
504+
/* Only memslot 0 is mapped here, ensure it's the only one being used */
505+
for (s = 0; s < NR_MEM_REGIONS; s++)
506+
TEST_ASSERT_EQ(vm->memslots[s], 0);
503507

504508
i = (region->region.guest_phys_addr >> vm->page_shift) - 1;
505509
last = i + (region->region.memory_size >> vm->page_shift);

tools/testing/selftests/kvm/x86/vmx_dirty_log_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ static void test_vmx_dirty_log(bool enable_ept)
121121
*/
122122
if (enable_ept) {
123123
prepare_eptp(vmx, vm);
124-
nested_map_memslot(vmx, vm, 0);
124+
nested_identity_map_default_memslots(vmx, vm);
125125
nested_map(vmx, vm, NESTED_TEST_MEM1, GUEST_TEST_MEM, PAGE_SIZE);
126126
nested_map(vmx, vm, NESTED_TEST_MEM2, GUEST_TEST_MEM, PAGE_SIZE);
127127
}

0 commit comments

Comments
 (0)