KVM: selftests: Move vm_is_unrestricted_guest() to x86-64
authorSean Christopherson <seanjc@google.com>
Wed, 16 Feb 2022 17:08:00 +0000 (09:08 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 11 Jun 2022 15:47:02 +0000 (11:47 -0400)
An "unrestricted guest" is an VMX-only concept, move the relevant helper
to x86-64 code.  Assume most readers can correctly convert underscores to
spaces and oppurtunistically trim the function comment.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/include/kvm_util_base.h
tools/testing/selftests/kvm/include/x86_64/processor.h
tools/testing/selftests/kvm/lib/kvm_util.c
tools/testing/selftests/kvm/lib/x86_64/processor.c

index d94b608..5426de9 100644 (file)
@@ -667,8 +667,6 @@ struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm);
  */
 void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code);
 
-bool vm_is_unrestricted_guest(struct kvm_vm *vm);
-
 unsigned int vm_get_page_size(struct kvm_vm *vm);
 unsigned int vm_get_page_shift(struct kvm_vm *vm);
 unsigned long vm_compute_max_gfn(struct kvm_vm *vm);
index 0bb9ba9..a19a52c 100644 (file)
@@ -526,6 +526,7 @@ static inline void vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid,
 uint32_t kvm_get_cpuid_max_basic(void);
 uint32_t kvm_get_cpuid_max_extended(void);
 void kvm_get_cpu_address_width(unsigned int *pa_bits, unsigned int *va_bits);
+bool vm_is_unrestricted_guest(struct kvm_vm *vm);
 
 struct ex_regs {
        uint64_t rax, rcx, rdx, rbx;
index f8274ca..752731c 100644 (file)
@@ -1948,39 +1948,6 @@ void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva)
        return addr_gpa2hva(vm, addr_gva2gpa(vm, gva));
 }
 
-/*
- * Is Unrestricted Guest
- *
- * Input Args:
- *   vm - Virtual Machine
- *
- * Output Args: None
- *
- * Return: True if the unrestricted guest is set to 'Y', otherwise return false.
- *
- * Check if the unrestricted guest flag is enabled.
- */
-bool vm_is_unrestricted_guest(struct kvm_vm *vm)
-{
-       char val = 'N';
-       size_t count;
-       FILE *f;
-
-       if (vm == NULL) {
-               /* Ensure that the KVM vendor-specific module is loaded. */
-               close(open_kvm_dev_path_or_exit());
-       }
-
-       f = fopen("/sys/module/kvm_intel/parameters/unrestricted_guest", "r");
-       if (f) {
-               count = fread(&val, sizeof(char), 1, f);
-               TEST_ASSERT(count == 1, "Unable to read from param file.");
-               fclose(f);
-       }
-
-       return val == 'Y';
-}
-
 unsigned int vm_get_page_size(struct kvm_vm *vm)
 {
        return vm->page_size;
index 47bc84d..d25a6a9 100644 (file)
@@ -1357,3 +1357,24 @@ unsigned long vm_compute_max_gfn(struct kvm_vm *vm)
 done:
        return min(max_gfn, ht_gfn - 1);
 }
+
+/* Returns true if kvm_intel was loaded with unrestricted_guest=1. */
+bool vm_is_unrestricted_guest(struct kvm_vm *vm)
+{
+       char val = 'N';
+       size_t count;
+       FILE *f;
+
+       /* Ensure that a KVM vendor-specific module is loaded. */
+       if (vm == NULL)
+               close(open_kvm_dev_path_or_exit());
+
+       f = fopen("/sys/module/kvm_intel/parameters/unrestricted_guest", "r");
+       if (f) {
+               count = fread(&val, sizeof(char), 1, f);
+               TEST_ASSERT(count == 1, "Unable to read from param file.");
+               fclose(f);
+       }
+
+       return val == 'Y';
+}