From fd7be1bfadc0ccd0fbfc3af5d8e3fd705f0b18ca Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 18 Jan 2017 10:20:33 +0100 Subject: sys: add KVM_ENABLE_CAP for vm --- sys/kvm.txt | 18 +++++++++++++----- sys/kvm_amd64.const | 3 +++ sys/kvm_arm64.const | 3 +++ sys/kvm_ppc64le.const | 3 +++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/sys/kvm.txt b/sys/kvm.txt index 07059f7b3..9898ca046 100644 --- a/sys/kvm.txt +++ b/sys/kvm.txt @@ -33,7 +33,7 @@ ioctl$KVM_GET_CLOCK(fd fd_kvmvm, cmd const[KVM_GET_CLOCK], arg ptr[out, kvm_cloc ioctl$KVM_SET_CLOCK(fd fd_kvmvm, cmd const[KVM_SET_CLOCK], arg ptr[in, kvm_clock_data]) ioctl$KVM_SET_USER_MEMORY_REGION(fd fd_kvmvm, cmd const[KVM_SET_USER_MEMORY_REGION], arg ptr[in, kvm_userspace_memory_region]) ioctl$KVM_SET_TSS_ADDR(fd fd_kvmvm, cmd const[KVM_SET_TSS_ADDR], arg flags[kvm_x86_tss_addr]) -ioctl$KVM_ENABLE_CAP(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap]) +ioctl$KVM_ENABLE_CAP(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap_vm]) ioctl$KVM_SET_IDENTITY_MAP_ADDR(fd fd_kvmvm, cmd const[KVM_SET_IDENTITY_MAP_ADDR], arg ptr[in, flags[kvm_guest_addrs, int64]]) ioctl$KVM_SET_BOOT_CPU_ID(fd fd_kvmvm, cmd const[KVM_SET_BOOT_CPU_ID], arg ptr[in, intptr[0:2]]) ioctl$KVM_PPC_GET_PVINFO(fd fd_kvmvm, cmd const[KVM_PPC_GET_PVINFO], arg buffer[out]) @@ -86,7 +86,7 @@ ioctl$KVM_GET_VCPU_EVENTS(fd fd_kvmcpu, cmd const[KVM_GET_VCPU_EVENTS], arg ptr[ ioctl$KVM_SET_VCPU_EVENTS(fd fd_kvmcpu, cmd const[KVM_SET_VCPU_EVENTS], arg ptr[in, kvm_vcpu_events]) ioctl$KVM_GET_DEBUGREGS(fd fd_kvmcpu, cmd const[KVM_GET_DEBUGREGS], arg ptr[out, kvm_debugregs]) ioctl$KVM_SET_DEBUGREGS(fd fd_kvmcpu, cmd const[KVM_SET_DEBUGREGS], arg ptr[in, kvm_debugregs]) -ioctl$KVM_ENABLE_CAP_CPU(fd fd_kvmcpu, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap]) +ioctl$KVM_ENABLE_CAP_CPU(fd fd_kvmcpu, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap_cpu]) ioctl$KVM_GET_MP_STATE(fd fd_kvmcpu, cmd const[KVM_GET_MP_STATE], arg ptr[out, int32]) ioctl$KVM_SET_MP_STATE(fd fd_kvmcpu, cmd const[KVM_SET_MP_STATE], arg ptr[in, flags[kvm_mp_state, int32]]) ioctl$KVM_GET_XSAVE(fd fd_kvmcpu, cmd const[KVM_GET_XSAVE], arg ptr[out, kvm_xsave]) @@ -131,7 +131,8 @@ kvm_guest_selector = 0, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16 kvm_mce_flags = 1, 2, 4 kvm_mcg_status = MCG_STATUS_RIPV, MCG_STATUS_EIPV, MCG_STATUS_MCIP, MCG_STATUS_LMCES kvm_mce_status = MCI_STATUS_VAL, MCI_STATUS_OVER, MCI_STATUS_UC, MCI_STATUS_EN, MCI_STATUS_MISCV, MCI_STATUS_ADDRV, MCI_STATUS_PCC, MCI_STATUS_S, MCI_STATUS_AR -kvm_caps = KVM_CAP_HYPERV_SYNIC +kvm_cpu_caps = KVM_CAP_HYPERV_SYNIC +kvm_vm_caps = KVM_CAP_DISABLE_QUIRKS, KVM_CAP_SPLIT_IRQCHIP, KVM_CAP_X2APIC_API kvm_cpuid_flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX, KVM_CPUID_FLAG_STATEFUL_FUNC, KVM_CPUID_FLAG_STATE_READ_NEXT kvm_dev_flags = KVM_DEV_ASSIGN_ENABLE_IOMMU, KVM_DEV_ASSIGN_PCI_2_3, KVM_DEV_ASSIGN_MASK_INTX kvm_vcpu_target = KVM_ARM_TARGET_CORTEX_A53, KVM_ARM_TARGET_AEM_V8, KVM_ARM_TARGET_FOUNDATION_V8, KVM_ARM_TARGET_CORTEX_A57, KVM_ARM_TARGET_XGENE_POTENZA, KVM_ARM_TARGET_GENERIC_V8 @@ -431,8 +432,15 @@ kvm_xsave { region array[int8, 1024] } -kvm_enable_cap { - cap flags[kvm_caps, int32] +kvm_enable_cap_cpu { + cap flags[kvm_cpu_caps, int32] + flags const[0, int32] + args array[int64, 4] + pad array[const[0, int8], 64] +} + +kvm_enable_cap_vm { + cap flags[kvm_vm_caps, int32] flags const[0, int32] args array[int64, 4] pad array[const[0, int8], 64] diff --git a/sys/kvm_amd64.const b/sys/kvm_amd64.const index c6110d10b..5eb472999 100644 --- a/sys/kvm_amd64.const +++ b/sys/kvm_amd64.const @@ -6,7 +6,10 @@ KVM_ASSIGN_PCI_DEVICE = 2151722601 KVM_ASSIGN_SET_INTX_MASK = 1077980836 KVM_ASSIGN_SET_MSIX_ENTRY = 1074835060 KVM_ASSIGN_SET_MSIX_NR = 1074310771 +KVM_CAP_DISABLE_QUIRKS = 116 KVM_CAP_HYPERV_SYNIC = 123 +KVM_CAP_SPLIT_IRQCHIP = 121 +KVM_CAP_X2APIC_API = 129 KVM_CHECK_EXTENSION = 44547 KVM_CPUID_FEATURES = 1073741825 KVM_CPUID_FLAG_SIGNIFCANT_INDEX = 1 diff --git a/sys/kvm_arm64.const b/sys/kvm_arm64.const index f681ccaeb..c08413d2a 100644 --- a/sys/kvm_arm64.const +++ b/sys/kvm_arm64.const @@ -17,7 +17,10 @@ KVM_ASSIGN_PCI_DEVICE = 2151722601 KVM_ASSIGN_SET_INTX_MASK = 1077980836 KVM_ASSIGN_SET_MSIX_ENTRY = 1074835060 KVM_ASSIGN_SET_MSIX_NR = 1074310771 +KVM_CAP_DISABLE_QUIRKS = 116 KVM_CAP_HYPERV_SYNIC = 123 +KVM_CAP_SPLIT_IRQCHIP = 121 +KVM_CAP_X2APIC_API = 129 KVM_CHECK_EXTENSION = 44547 KVM_CREATE_DEVICE = 3222056672 KVM_CREATE_DEVICE_TEST = 1 diff --git a/sys/kvm_ppc64le.const b/sys/kvm_ppc64le.const index ac399405e..4b79eeacc 100644 --- a/sys/kvm_ppc64le.const +++ b/sys/kvm_ppc64le.const @@ -6,7 +6,10 @@ KVM_ASSIGN_PCI_DEVICE = 1077980777 KVM_ASSIGN_SET_INTX_MASK = 2151722660 KVM_ASSIGN_SET_MSIX_ENTRY = 2148576884 KVM_ASSIGN_SET_MSIX_NR = 2148052595 +KVM_CAP_DISABLE_QUIRKS = 116 KVM_CAP_HYPERV_SYNIC = 123 +KVM_CAP_SPLIT_IRQCHIP = 121 +KVM_CAP_X2APIC_API = 129 KVM_CHECK_EXTENSION = 536915459 KVM_CREATE_DEVICE = 3222056672 KVM_CREATE_DEVICE_TEST = 1 -- cgit mrf-deployment