1 // SPDX-License-Identifier: GPL-2.0-only
3 * maximum APIC ID capability tests
5 * Copyright (C) 2022, Intel, Inc.
7 * Tests for getting/setting maximum APIC ID capability
11 #include "../lib/kvm_util_internal.h"
15 int main(int argc, char *argv[])
18 struct kvm_enable_cap cap = { 0 };
21 vm = vm_create(VM_MODE_DEFAULT, 0, O_RDWR);
23 /* Get KVM_CAP_MAX_VCPU_ID cap supported in KVM */
24 ret = vm_check_cap(vm, KVM_CAP_MAX_VCPU_ID);
26 /* Try to set KVM_CAP_MAX_VCPU_ID beyond KVM cap */
27 cap.cap = KVM_CAP_MAX_VCPU_ID;
28 cap.args[0] = ret + 1;
29 ret = ioctl(vm->fd, KVM_ENABLE_CAP, &cap);
31 "Unexpected success to enable KVM_CAP_MAX_VCPU_ID"
34 /* Set KVM_CAP_MAX_VCPU_ID */
35 cap.cap = KVM_CAP_MAX_VCPU_ID;
36 cap.args[0] = MAX_VCPU_ID;
37 ret = ioctl(vm->fd, KVM_ENABLE_CAP, &cap);
39 "Unexpected failure to enable KVM_CAP_MAX_VCPU_ID!\n");
41 /* Try to set KVM_CAP_MAX_VCPU_ID again */
42 cap.args[0] = MAX_VCPU_ID + 1;
43 ret = ioctl(vm->fd, KVM_ENABLE_CAP, &cap);
45 "Unexpected success to enable KVM_CAP_MAX_VCPU_ID again\n");
47 /* Create vCPU with id beyond KVM_CAP_MAX_VCPU_ID cap*/
48 ret = ioctl(vm->fd, KVM_CREATE_VCPU, MAX_VCPU_ID);
50 "Unexpected success in creating a vCPU with VCPU ID out of range\n");