Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kvm: selftests: hide vcpu_setup in processor code

This removes the processor-dependent arguments from vm_vcpu_add.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

+28 -31
+1 -2
tools/testing/selftests/kvm/include/kvm_util.h
··· 88 88 void *arg); 89 89 void vm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); 90 90 void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t flags); 91 - void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, int pgd_memslot, 92 - int gdt_memslot); 91 + void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); 93 92 vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min, 94 93 uint32_t data_memslot, uint32_t pgd_memslot); 95 94 void virt_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr,
+17 -15
tools/testing/selftests/kvm/lib/aarch64/processor.c
··· 235 235 return vm; 236 236 } 237 237 238 - void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) 239 - { 240 - size_t stack_size = vm->page_size == 4096 ? 241 - DEFAULT_STACK_PGS * vm->page_size : 242 - vm->page_size; 243 - uint64_t stack_vaddr = vm_vaddr_alloc(vm, stack_size, 244 - DEFAULT_ARM64_GUEST_STACK_VADDR_MIN, 0, 0); 245 - 246 - vm_vcpu_add(vm, vcpuid, 0, 0); 247 - 248 - set_reg(vm, vcpuid, ARM64_CORE_REG(sp_el1), stack_vaddr + stack_size); 249 - set_reg(vm, vcpuid, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); 250 - } 251 - 252 - void vcpu_setup(struct kvm_vm *vm, int vcpuid, int pgd_memslot, int gdt_memslot) 238 + static void vcpu_setup(struct kvm_vm *vm, int vcpuid) 253 239 { 254 240 struct kvm_vcpu_init init; 255 241 uint64_t sctlr_el1, tcr_el1; ··· 302 316 fprintf(stream, "%*spstate: 0x%.16lx pc: 0x%.16lx\n", 303 317 indent, "", pstate, pc); 304 318 } 319 + 320 + void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) 321 + { 322 + size_t stack_size = vm->page_size == 4096 ? 323 + DEFAULT_STACK_PGS * vm->page_size : 324 + vm->page_size; 325 + uint64_t stack_vaddr = vm_vaddr_alloc(vm, stack_size, 326 + DEFAULT_ARM64_GUEST_STACK_VADDR_MIN, 0, 0); 327 + 328 + vm_vcpu_add(vm, vcpuid); 329 + vcpu_setup(vm, vcpuid); 330 + 331 + set_reg(vm, vcpuid, ARM64_CORE_REG(sp_el1), stack_vaddr + stack_size); 332 + set_reg(vm, vcpuid, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); 333 + } 334 +
+3 -6
tools/testing/selftests/kvm/lib/kvm_util.c
··· 764 764 * 765 765 * Return: None 766 766 * 767 - * Creates and adds to the VM specified by vm and virtual CPU with 768 - * the ID given by vcpuid. 767 + * Adds a virtual CPU to the VM specified by vm with the ID given by vcpuid. 768 + * No additional VCPU setup is done. 769 769 */ 770 - void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, int pgd_memslot, 771 - int gdt_memslot) 770 + void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) 772 771 { 773 772 struct vcpu *vcpu; 774 773 ··· 801 802 vm->vcpu_head->prev = vcpu; 802 803 vcpu->next = vm->vcpu_head; 803 804 vm->vcpu_head = vcpu; 804 - 805 - vcpu_setup(vm, vcpuid, pgd_memslot, gdt_memslot); 806 805 } 807 806 808 807 /*
-2
tools/testing/selftests/kvm/lib/kvm_util_internal.h
··· 65 65 }; 66 66 67 67 struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpuid); 68 - void vcpu_setup(struct kvm_vm *vm, int vcpuid, int pgd_memslot, 69 - int gdt_memslot); 70 68 void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); 71 69 void regs_dump(FILE *stream, struct kvm_regs *regs, uint8_t indent); 72 70 void sregs_dump(FILE *stream, struct kvm_sregs *sregs, uint8_t indent);
+3 -2
tools/testing/selftests/kvm/lib/x86_64/processor.c
··· 610 610 kvm_seg_fill_gdt_64bit(vm, segp); 611 611 } 612 612 613 - void vcpu_setup(struct kvm_vm *vm, int vcpuid, int pgd_memslot, int gdt_memslot) 613 + static void vcpu_setup(struct kvm_vm *vm, int vcpuid, int pgd_memslot, int gdt_memslot) 614 614 { 615 615 struct kvm_sregs sregs; 616 616 ··· 656 656 DEFAULT_GUEST_STACK_VADDR_MIN, 0, 0); 657 657 658 658 /* Create VCPU */ 659 - vm_vcpu_add(vm, vcpuid, 0, 0); 659 + vm_vcpu_add(vm, vcpuid); 660 + vcpu_setup(vm, vcpuid, 0, 0); 660 661 661 662 /* Setup guest general purpose registers */ 662 663 vcpu_regs_get(vm, vcpuid, &regs);
+1 -1
tools/testing/selftests/kvm/x86_64/evmcs_test.c
··· 144 144 145 145 /* Restore state in a new VM. */ 146 146 kvm_vm_restart(vm, O_RDWR); 147 - vm_vcpu_add(vm, VCPU_ID, 0, 0); 147 + vm_vcpu_add(vm, VCPU_ID); 148 148 vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); 149 149 vcpu_load_state(vm, VCPU_ID, state); 150 150 run = vcpu_state(vm, VCPU_ID);
+1 -1
tools/testing/selftests/kvm/x86_64/kvm_create_max_vcpus.c
··· 34 34 int vcpu_id = first_vcpu_id + i; 35 35 36 36 /* This asserts that the vCPU was created. */ 37 - vm_vcpu_add(vm, vcpu_id, 0, 0); 37 + vm_vcpu_add(vm, vcpu_id); 38 38 } 39 39 40 40 kvm_vm_free(vm);
+1 -1
tools/testing/selftests/kvm/x86_64/smm_test.c
··· 144 144 state = vcpu_save_state(vm, VCPU_ID); 145 145 kvm_vm_release(vm); 146 146 kvm_vm_restart(vm, O_RDWR); 147 - vm_vcpu_add(vm, VCPU_ID, 0, 0); 147 + vm_vcpu_add(vm, VCPU_ID); 148 148 vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); 149 149 vcpu_load_state(vm, VCPU_ID, state); 150 150 run = vcpu_state(vm, VCPU_ID);
+1 -1
tools/testing/selftests/kvm/x86_64/state_test.c
··· 177 177 178 178 /* Restore state in a new VM. */ 179 179 kvm_vm_restart(vm, O_RDWR); 180 - vm_vcpu_add(vm, VCPU_ID, 0, 0); 180 + vm_vcpu_add(vm, VCPU_ID); 181 181 vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); 182 182 vcpu_load_state(vm, VCPU_ID, state); 183 183 run = vcpu_state(vm, VCPU_ID);