KVM: selftests: Drop superfluous switch() on vm->mode in vcpu_init_sregs()
authorSean Christopherson <seanjc@google.com>
Thu, 14 Mar 2024 23:26:32 +0000 (16:26 -0700)
committerSean Christopherson <seanjc@google.com>
Mon, 29 Apr 2024 19:55:17 +0000 (12:55 -0700)
Replace the switch statement on vm->mode in x86's vcpu_init_sregs()'s with
a simple assert that the VM has a 48-bit virtual address space.  A switch
statement is both overkill and misleading, as the existing code incorrectly
implies that VMs with LA57 would need different to configuration for the
LDT, TSS, and flat segments.  In all likelihood, the only difference that
would be needed for selftests is CR4.LA57 itself.

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

index 7ac77dd970ca1fd60b2b9e29ba9036d3402b4385..6128c9c52cc5be6687985dda7d451e9f3ae884d7 100644 (file)
@@ -556,6 +556,8 @@ static void vcpu_init_sregs(struct kvm_vm *vm, struct kvm_vcpu *vcpu)
 {
        struct kvm_sregs sregs;
 
+       TEST_ASSERT_EQ(vm->mode, VM_MODE_PXXV48_4K);
+
        /* Set mode specific system register values. */
        vcpu_sregs_get(vcpu, &sregs);
 
@@ -563,22 +565,15 @@ static void vcpu_init_sregs(struct kvm_vm *vm, struct kvm_vcpu *vcpu)
 
        kvm_setup_gdt(vm, &sregs.gdt);
 
-       switch (vm->mode) {
-       case VM_MODE_PXXV48_4K:
-               sregs.cr0 = X86_CR0_PE | X86_CR0_NE | X86_CR0_PG;
-               sregs.cr4 |= X86_CR4_PAE | X86_CR4_OSFXSR;
-               sregs.efer |= (EFER_LME | EFER_LMA | EFER_NX);
-
-               kvm_seg_set_unusable(&sregs.ldt);
-               kvm_seg_set_kernel_code_64bit(vm, DEFAULT_CODE_SELECTOR, &sregs.cs);
-               kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs.ds);
-               kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs.es);
-               kvm_setup_tss_64bit(vm, &sregs.tr, 0x18);
-               break;
-
-       default:
-               TEST_FAIL("Unknown guest mode, mode: 0x%x", vm->mode);
-       }
+       sregs.cr0 = X86_CR0_PE | X86_CR0_NE | X86_CR0_PG;
+       sregs.cr4 |= X86_CR4_PAE | X86_CR4_OSFXSR;
+       sregs.efer |= (EFER_LME | EFER_LMA | EFER_NX);
+
+       kvm_seg_set_unusable(&sregs.ldt);
+       kvm_seg_set_kernel_code_64bit(vm, DEFAULT_CODE_SELECTOR, &sregs.cs);
+       kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs.ds);
+       kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs.es);
+       kvm_setup_tss_64bit(vm, &sregs.tr, 0x18);
 
        sregs.cr3 = vm->pgd;
        vcpu_sregs_set(vcpu, &sregs);