1use kvm_bindings::*;
9
10#[derive(Clone, Copy, Debug)]
19#[repr(u32)]
20#[allow(missing_docs)]
23#[derive(PartialEq, Eq)]
24pub enum Cap {
25 Irqchip = KVM_CAP_IRQCHIP,
26 Hlt = KVM_CAP_HLT,
27 MmuShadowCacheControl = KVM_CAP_MMU_SHADOW_CACHE_CONTROL,
28 UserMemory = KVM_CAP_USER_MEMORY,
29 SetTssAddr = KVM_CAP_SET_TSS_ADDR,
30 Vapic = KVM_CAP_VAPIC,
31 ExtCpuid = KVM_CAP_EXT_CPUID,
32 Clocksource = KVM_CAP_CLOCKSOURCE,
33 NrVcpus = KVM_CAP_NR_VCPUS,
34 NrMemslots = KVM_CAP_NR_MEMSLOTS,
35 Pit = KVM_CAP_PIT,
36 NopIoDelay = KVM_CAP_NOP_IO_DELAY,
37 PvMmu = KVM_CAP_PV_MMU,
38 MpState = KVM_CAP_MP_STATE,
39 CoalescedMmio = KVM_CAP_COALESCED_MMIO,
40 SyncMmu = KVM_CAP_SYNC_MMU,
41 Iommu = KVM_CAP_IOMMU,
42 DestroyMemoryRegionWorks = KVM_CAP_DESTROY_MEMORY_REGION_WORKS,
43 UserNmi = KVM_CAP_USER_NMI,
44 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64", target_arch = "s390x"))]
45 SetGuestDebug = KVM_CAP_SET_GUEST_DEBUG,
46 #[cfg(target_arch = "x86_64")]
47 ReinjectControl = KVM_CAP_REINJECT_CONTROL,
48 IrqRouting = KVM_CAP_IRQ_ROUTING,
49 IrqInjectStatus = KVM_CAP_IRQ_INJECT_STATUS,
50 AssignDevIrq = KVM_CAP_ASSIGN_DEV_IRQ,
51 JoinMemoryRegionsWorks = KVM_CAP_JOIN_MEMORY_REGIONS_WORKS,
52 #[cfg(target_arch = "x86_64")]
53 Mce = KVM_CAP_MCE,
54 Irqfd = KVM_CAP_IRQFD,
55 #[cfg(target_arch = "x86_64")]
56 Pit2 = KVM_CAP_PIT2,
57 SetBootCpuId = KVM_CAP_SET_BOOT_CPU_ID,
58 #[cfg(target_arch = "x86_64")]
59 PitState2 = KVM_CAP_PIT_STATE2,
60 Ioeventfd = KVM_CAP_IOEVENTFD,
61 SetIdentityMapAddr = KVM_CAP_SET_IDENTITY_MAP_ADDR,
62 #[cfg(target_arch = "x86_64")]
63 XenHvm = KVM_CAP_XEN_HVM,
64 AdjustClock = KVM_CAP_ADJUST_CLOCK,
65 InternalErrorData = KVM_CAP_INTERNAL_ERROR_DATA,
66 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
67 VcpuEvents = KVM_CAP_VCPU_EVENTS,
68 S390Psw = KVM_CAP_S390_PSW,
69 PpcSegstate = KVM_CAP_PPC_SEGSTATE,
70 Hyperv = KVM_CAP_HYPERV,
71 HypervVapic = KVM_CAP_HYPERV_VAPIC,
72 HypervSpin = KVM_CAP_HYPERV_SPIN,
73 PciSegment = KVM_CAP_PCI_SEGMENT,
74 PpcPairedSingles = KVM_CAP_PPC_PAIRED_SINGLES,
75 IntrShadow = KVM_CAP_INTR_SHADOW,
76 #[cfg(target_arch = "x86_64")]
77 Debugregs = KVM_CAP_DEBUGREGS,
78 X86RobustSinglestep = KVM_CAP_X86_ROBUST_SINGLESTEP,
79 PpcOsi = KVM_CAP_PPC_OSI,
80 PpcUnsetIrq = KVM_CAP_PPC_UNSET_IRQ,
81 EnableCap = KVM_CAP_ENABLE_CAP,
82 #[cfg(target_arch = "x86_64")]
83 Xsave = KVM_CAP_XSAVE,
84 #[cfg(target_arch = "x86_64")]
85 Xsave2 = KVM_CAP_XSAVE2,
86 #[cfg(target_arch = "x86_64")]
87 Xcrs = KVM_CAP_XCRS,
88 PpcGetPvinfo = KVM_CAP_PPC_GET_PVINFO,
89 PpcIrqLevel = KVM_CAP_PPC_IRQ_LEVEL,
90 AsyncPf = KVM_CAP_ASYNC_PF,
91 TscControl = KVM_CAP_TSC_CONTROL,
92 GetTscKhz = KVM_CAP_GET_TSC_KHZ,
93 PpcBookeSregs = KVM_CAP_PPC_BOOKE_SREGS,
94 SpaprTce = KVM_CAP_SPAPR_TCE,
95 PpcSmt = KVM_CAP_PPC_SMT,
96 PpcRma = KVM_CAP_PPC_RMA,
97 MaxVcpus = KVM_CAP_MAX_VCPUS,
98 MaxVcpuId = KVM_CAP_MAX_VCPU_ID,
99 PpcHior = KVM_CAP_PPC_HIOR,
100 PpcPapr = KVM_CAP_PPC_PAPR,
101 SwTlb = KVM_CAP_SW_TLB,
102 OneReg = KVM_CAP_ONE_REG,
103 S390Gmap = KVM_CAP_S390_GMAP,
104 TscDeadlineTimer = KVM_CAP_TSC_DEADLINE_TIMER,
105 S390Ucontrol = KVM_CAP_S390_UCONTROL,
106 SyncRegs = KVM_CAP_SYNC_REGS,
107 Pci23 = KVM_CAP_PCI_2_3,
108 KvmclockCtrl = KVM_CAP_KVMCLOCK_CTRL,
109 SignalMsi = KVM_CAP_SIGNAL_MSI,
110 PpcGetSmmuInfo = KVM_CAP_PPC_GET_SMMU_INFO,
111 S390Cow = KVM_CAP_S390_COW,
112 PpcAllocHtab = KVM_CAP_PPC_ALLOC_HTAB,
113 ReadonlyMem = KVM_CAP_READONLY_MEM,
114 IrqfdResample = KVM_CAP_IRQFD_RESAMPLE,
115 PpcBookeWatchdog = KVM_CAP_PPC_BOOKE_WATCHDOG,
116 PpcHtabFd = KVM_CAP_PPC_HTAB_FD,
117 S390CssSupport = KVM_CAP_S390_CSS_SUPPORT,
118 PpcEpr = KVM_CAP_PPC_EPR,
119 ArmPsci = KVM_CAP_ARM_PSCI,
120 ArmSetDeviceAddr = KVM_CAP_ARM_SET_DEVICE_ADDR,
121 DeviceCtrl = KVM_CAP_DEVICE_CTRL,
122 IrqMpic = KVM_CAP_IRQ_MPIC,
123 PpcRtas = KVM_CAP_PPC_RTAS,
124 IrqXics = KVM_CAP_IRQ_XICS,
125 ArmEl132bit = KVM_CAP_ARM_EL1_32BIT,
126 SpaprMultitce = KVM_CAP_SPAPR_MULTITCE,
127 ExtEmulCpuid = KVM_CAP_EXT_EMUL_CPUID,
128 HypervTime = KVM_CAP_HYPERV_TIME,
129 IoapicPolarityIgnored = KVM_CAP_IOAPIC_POLARITY_IGNORED,
130 EnableCapVm = KVM_CAP_ENABLE_CAP_VM,
131 S390Irqchip = KVM_CAP_S390_IRQCHIP,
132 IoeventfdNoLength = KVM_CAP_IOEVENTFD_NO_LENGTH,
133 VmAttributes = KVM_CAP_VM_ATTRIBUTES,
134 ArmPsci02 = KVM_CAP_ARM_PSCI_0_2,
135 PpcFixupHcall = KVM_CAP_PPC_FIXUP_HCALL,
136 PpcEnableHcall = KVM_CAP_PPC_ENABLE_HCALL,
137 CheckExtensionVm = KVM_CAP_CHECK_EXTENSION_VM,
138 S390UserSigp = KVM_CAP_S390_USER_SIGP,
139 #[cfg(target_arch = "x86_64")]
140 X86Smm = KVM_CAP_X86_SMM,
141 #[cfg(target_arch = "x86_64")]
142 SplitIrqchip = KVM_CAP_SPLIT_IRQCHIP,
143 ArmPmuV3 = KVM_CAP_ARM_PMU_V3,
144 ImmediateExit = KVM_CAP_IMMEDIATE_EXIT,
145 ArmVmIPASize = KVM_CAP_ARM_VM_IPA_SIZE,
146 MsiDevid = KVM_CAP_MSI_DEVID,
147 HypervSynic = KVM_CAP_HYPERV_SYNIC,
148 HypervSynic2 = KVM_CAP_HYPERV_SYNIC2,
149 DebugHwBps = KVM_CAP_GUEST_DEBUG_HW_BPS,
150 DebugHwWps = KVM_CAP_GUEST_DEBUG_HW_WPS,
151 GetMsrFeatures = KVM_CAP_GET_MSR_FEATURES,
152 CoalescedPio = KVM_CAP_COALESCED_PIO,
153 #[cfg(target_arch = "aarch64")]
154 ArmSve = KVM_CAP_ARM_SVE,
155 #[cfg(target_arch = "aarch64")]
156 ArmPtrAuthAddress = KVM_CAP_ARM_PTRAUTH_ADDRESS,
157 #[cfg(target_arch = "aarch64")]
158 ArmPtrAuthGeneric = KVM_CAP_ARM_PTRAUTH_GENERIC,
159 #[cfg(target_arch = "x86_64")]
160 X86UserSpaceMsr = KVM_CAP_X86_USER_SPACE_MSR,
161 #[cfg(target_arch = "x86_64")]
162 X86MsrFilter = KVM_CAP_X86_MSR_FILTER,
163 #[cfg(target_arch = "x86_64")]
164 ExitHypercall = KVM_CAP_EXIT_HYPERCALL,
165 #[cfg(target_arch = "x86_64")]
166 MemoryFaultInfo = KVM_CAP_MEMORY_FAULT_INFO,
167 CounterOffset = KVM_CAP_COUNTER_OFFSET,
168 UserMemory2 = KVM_CAP_USER_MEMORY2,
169 GuestMemfd = KVM_CAP_GUEST_MEMFD,
170 MemoryAttributes = KVM_CAP_MEMORY_ATTRIBUTES,
171 #[cfg(target_arch = "x86_64")]
172 NestedState = KVM_CAP_NESTED_STATE,
173 #[cfg(target_arch = "x86_64")]
174 X2ApicApi = KVM_CAP_X2APIC_API,
175 DirtyLogRing = KVM_CAP_DIRTY_LOG_RING,
176}