KVM: selftests: Allocate x86's GDT during VM creation
authorSean Christopherson <seanjc@google.com>
Thu, 14 Mar 2024 23:26:31 +0000 (16:26 -0700)
committerSean Christopherson <seanjc@google.com>
Mon, 29 Apr 2024 19:55:17 +0000 (12:55 -0700)
Allocate the GDT during creation of non-barebones VMs instead of waiting
until the first vCPU is created, as the whole point of non-barebones VMs
is to be able to run vCPUs, i.e. the GDT is going to get allocated no
matter what.

Reviewed-by: Ackerley Tng <ackerleytng@google.com>
Link: https://lore.kernel.org/r/20240314232637.2538648-13-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
tools/testing/selftests/kvm/lib/x86_64/processor.c

index ff800b8609135afe45e268995535ff3602b5809e..7ac77dd970ca1fd60b2b9e29ba9036d3402b4385 100644 (file)
@@ -519,9 +519,6 @@ vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
 
 static void kvm_setup_gdt(struct kvm_vm *vm, struct kvm_dtable *dt)
 {
-       if (!vm->arch.gdt)
-               vm->arch.gdt = __vm_vaddr_alloc_page(vm, MEM_REGION_DATA);
-
        dt->base = vm->arch.gdt;
        dt->limit = getpagesize() - 1;
 }
@@ -645,6 +642,7 @@ static void vm_init_descriptor_tables(struct kvm_vm *vm)
        extern void *idt_handlers;
        int i;
 
+       vm->arch.gdt = __vm_vaddr_alloc_page(vm, MEM_REGION_DATA);
        vm->arch.idt = __vm_vaddr_alloc_page(vm, MEM_REGION_DATA);
        vm->handlers = __vm_vaddr_alloc_page(vm, MEM_REGION_DATA);
        /* Handlers have the same address in both address spaces.*/