Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * maximum APIC ID capability tests
0004  *
0005  * Copyright (C) 2022, Intel, Inc.
0006  *
0007  * Tests for getting/setting maximum APIC ID capability
0008  */
0009 
0010 #include "kvm_util.h"
0011 
0012 #define MAX_VCPU_ID 2
0013 
0014 int main(int argc, char *argv[])
0015 {
0016     struct kvm_vm *vm;
0017     int ret;
0018 
0019     vm = vm_create_barebones();
0020 
0021     /* Get KVM_CAP_MAX_VCPU_ID cap supported in KVM */
0022     ret = vm_check_cap(vm, KVM_CAP_MAX_VCPU_ID);
0023 
0024     /* Try to set KVM_CAP_MAX_VCPU_ID beyond KVM cap */
0025     ret = __vm_enable_cap(vm, KVM_CAP_MAX_VCPU_ID, ret + 1);
0026     TEST_ASSERT(ret < 0,
0027             "Setting KVM_CAP_MAX_VCPU_ID beyond KVM cap should fail");
0028 
0029     /* Set KVM_CAP_MAX_VCPU_ID */
0030     vm_enable_cap(vm, KVM_CAP_MAX_VCPU_ID, MAX_VCPU_ID);
0031 
0032 
0033     /* Try to set KVM_CAP_MAX_VCPU_ID again */
0034     ret = __vm_enable_cap(vm, KVM_CAP_MAX_VCPU_ID, MAX_VCPU_ID + 1);
0035     TEST_ASSERT(ret < 0,
0036             "Setting KVM_CAP_MAX_VCPU_ID multiple times should fail");
0037 
0038     /* Create vCPU with id beyond KVM_CAP_MAX_VCPU_ID cap*/
0039     ret = __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)MAX_VCPU_ID);
0040     TEST_ASSERT(ret < 0, "Creating vCPU with ID > MAX_VCPU_ID should fail");
0041 
0042     kvm_vm_free(vm);
0043     return 0;
0044 }