xref: /aosp_15_r20/external/crosvm/hypervisor/src/kvm/cap.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2017 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker use kvm_sys::*;
6*bb4ee6a4SAndroid Build Coastguard Worker 
7*bb4ee6a4SAndroid Build Coastguard Worker /// A capability the kernel's KVM interface can possibly expose.
8*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9*bb4ee6a4SAndroid Build Coastguard Worker #[repr(u32)]
10*bb4ee6a4SAndroid Build Coastguard Worker pub enum KvmCap {
11*bb4ee6a4SAndroid Build Coastguard Worker     Irqchip = KVM_CAP_IRQCHIP,
12*bb4ee6a4SAndroid Build Coastguard Worker     Hlt = KVM_CAP_HLT,
13*bb4ee6a4SAndroid Build Coastguard Worker     MmuShadowCacheControl = KVM_CAP_MMU_SHADOW_CACHE_CONTROL,
14*bb4ee6a4SAndroid Build Coastguard Worker     UserMemory = KVM_CAP_USER_MEMORY,
15*bb4ee6a4SAndroid Build Coastguard Worker     SetTssAddr = KVM_CAP_SET_TSS_ADDR,
16*bb4ee6a4SAndroid Build Coastguard Worker     Vapic = KVM_CAP_VAPIC,
17*bb4ee6a4SAndroid Build Coastguard Worker     ExtCpuid = KVM_CAP_EXT_CPUID,
18*bb4ee6a4SAndroid Build Coastguard Worker     Clocksource = KVM_CAP_CLOCKSOURCE,
19*bb4ee6a4SAndroid Build Coastguard Worker     NrVcpus = KVM_CAP_NR_VCPUS,
20*bb4ee6a4SAndroid Build Coastguard Worker     NrMemslots = KVM_CAP_NR_MEMSLOTS,
21*bb4ee6a4SAndroid Build Coastguard Worker     Pit = KVM_CAP_PIT,
22*bb4ee6a4SAndroid Build Coastguard Worker     NopIoDelay = KVM_CAP_NOP_IO_DELAY,
23*bb4ee6a4SAndroid Build Coastguard Worker     PvMmu = KVM_CAP_PV_MMU,
24*bb4ee6a4SAndroid Build Coastguard Worker     MpState = KVM_CAP_MP_STATE,
25*bb4ee6a4SAndroid Build Coastguard Worker     CoalescedMmio = KVM_CAP_COALESCED_MMIO,
26*bb4ee6a4SAndroid Build Coastguard Worker     SyncMmu = KVM_CAP_SYNC_MMU,
27*bb4ee6a4SAndroid Build Coastguard Worker     Iommu = KVM_CAP_IOMMU,
28*bb4ee6a4SAndroid Build Coastguard Worker     DestroyMemoryRegionWorks = KVM_CAP_DESTROY_MEMORY_REGION_WORKS,
29*bb4ee6a4SAndroid Build Coastguard Worker     UserNmi = KVM_CAP_USER_NMI,
30*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(any(target_arch = "x86_64", target_arch = "arm", target_arch = "aarch64"))]
31*bb4ee6a4SAndroid Build Coastguard Worker     SetGuestDebug = KVM_CAP_SET_GUEST_DEBUG,
32*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
33*bb4ee6a4SAndroid Build Coastguard Worker     ReinjectControl = KVM_CAP_REINJECT_CONTROL,
34*bb4ee6a4SAndroid Build Coastguard Worker     IrqRouting = KVM_CAP_IRQ_ROUTING,
35*bb4ee6a4SAndroid Build Coastguard Worker     IrqInjectStatus = KVM_CAP_IRQ_INJECT_STATUS,
36*bb4ee6a4SAndroid Build Coastguard Worker     AssignDevIrq = KVM_CAP_ASSIGN_DEV_IRQ,
37*bb4ee6a4SAndroid Build Coastguard Worker     JoinMemoryRegionsWorks = KVM_CAP_JOIN_MEMORY_REGIONS_WORKS,
38*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
39*bb4ee6a4SAndroid Build Coastguard Worker     Mce = KVM_CAP_MCE,
40*bb4ee6a4SAndroid Build Coastguard Worker     Irqfd = KVM_CAP_IRQFD,
41*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
42*bb4ee6a4SAndroid Build Coastguard Worker     Pit2 = KVM_CAP_PIT2,
43*bb4ee6a4SAndroid Build Coastguard Worker     SetBootCpuId = KVM_CAP_SET_BOOT_CPU_ID,
44*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
45*bb4ee6a4SAndroid Build Coastguard Worker     PitState2 = KVM_CAP_PIT_STATE2,
46*bb4ee6a4SAndroid Build Coastguard Worker     Ioeventfd = KVM_CAP_IOEVENTFD,
47*bb4ee6a4SAndroid Build Coastguard Worker     SetIdentityMapAddr = KVM_CAP_SET_IDENTITY_MAP_ADDR,
48*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
49*bb4ee6a4SAndroid Build Coastguard Worker     XenHvm = KVM_CAP_XEN_HVM,
50*bb4ee6a4SAndroid Build Coastguard Worker     AdjustClock = KVM_CAP_ADJUST_CLOCK,
51*bb4ee6a4SAndroid Build Coastguard Worker     InternalErrorData = KVM_CAP_INTERNAL_ERROR_DATA,
52*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
53*bb4ee6a4SAndroid Build Coastguard Worker     VcpuEvents = KVM_CAP_VCPU_EVENTS,
54*bb4ee6a4SAndroid Build Coastguard Worker     S390Psw = KVM_CAP_S390_PSW,
55*bb4ee6a4SAndroid Build Coastguard Worker     PpcSegstate = KVM_CAP_PPC_SEGSTATE,
56*bb4ee6a4SAndroid Build Coastguard Worker     Hyperv = KVM_CAP_HYPERV,
57*bb4ee6a4SAndroid Build Coastguard Worker     HypervVapic = KVM_CAP_HYPERV_VAPIC,
58*bb4ee6a4SAndroid Build Coastguard Worker     HypervSpin = KVM_CAP_HYPERV_SPIN,
59*bb4ee6a4SAndroid Build Coastguard Worker     PciSegment = KVM_CAP_PCI_SEGMENT,
60*bb4ee6a4SAndroid Build Coastguard Worker     PpcPairedSingles = KVM_CAP_PPC_PAIRED_SINGLES,
61*bb4ee6a4SAndroid Build Coastguard Worker     IntrShadow = KVM_CAP_INTR_SHADOW,
62*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
63*bb4ee6a4SAndroid Build Coastguard Worker     Debugregs = KVM_CAP_DEBUGREGS,
64*bb4ee6a4SAndroid Build Coastguard Worker     X86RobustSinglestep = KVM_CAP_X86_ROBUST_SINGLESTEP,
65*bb4ee6a4SAndroid Build Coastguard Worker     PpcOsi = KVM_CAP_PPC_OSI,
66*bb4ee6a4SAndroid Build Coastguard Worker     PpcUnsetIrq = KVM_CAP_PPC_UNSET_IRQ,
67*bb4ee6a4SAndroid Build Coastguard Worker     EnableCap = KVM_CAP_ENABLE_CAP,
68*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
69*bb4ee6a4SAndroid Build Coastguard Worker     Xsave = KVM_CAP_XSAVE,
70*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
71*bb4ee6a4SAndroid Build Coastguard Worker     Xcrs = KVM_CAP_XCRS,
72*bb4ee6a4SAndroid Build Coastguard Worker     PpcGetPvinfo = KVM_CAP_PPC_GET_PVINFO,
73*bb4ee6a4SAndroid Build Coastguard Worker     PpcIrqLevel = KVM_CAP_PPC_IRQ_LEVEL,
74*bb4ee6a4SAndroid Build Coastguard Worker     AsyncPf = KVM_CAP_ASYNC_PF,
75*bb4ee6a4SAndroid Build Coastguard Worker     TscControl = KVM_CAP_TSC_CONTROL,
76*bb4ee6a4SAndroid Build Coastguard Worker     GetTscKhz = KVM_CAP_GET_TSC_KHZ,
77*bb4ee6a4SAndroid Build Coastguard Worker     PpcBookeSregs = KVM_CAP_PPC_BOOKE_SREGS,
78*bb4ee6a4SAndroid Build Coastguard Worker     SpaprTce = KVM_CAP_SPAPR_TCE,
79*bb4ee6a4SAndroid Build Coastguard Worker     PpcSmt = KVM_CAP_PPC_SMT,
80*bb4ee6a4SAndroid Build Coastguard Worker     PpcRma = KVM_CAP_PPC_RMA,
81*bb4ee6a4SAndroid Build Coastguard Worker     MaxVcpus = KVM_CAP_MAX_VCPUS,
82*bb4ee6a4SAndroid Build Coastguard Worker     PpcHior = KVM_CAP_PPC_HIOR,
83*bb4ee6a4SAndroid Build Coastguard Worker     PpcPapr = KVM_CAP_PPC_PAPR,
84*bb4ee6a4SAndroid Build Coastguard Worker     SwTlb = KVM_CAP_SW_TLB,
85*bb4ee6a4SAndroid Build Coastguard Worker     OneReg = KVM_CAP_ONE_REG,
86*bb4ee6a4SAndroid Build Coastguard Worker     S390Gmap = KVM_CAP_S390_GMAP,
87*bb4ee6a4SAndroid Build Coastguard Worker     TscDeadlineTimer = KVM_CAP_TSC_DEADLINE_TIMER,
88*bb4ee6a4SAndroid Build Coastguard Worker     S390Ucontrol = KVM_CAP_S390_UCONTROL,
89*bb4ee6a4SAndroid Build Coastguard Worker     SyncRegs = KVM_CAP_SYNC_REGS,
90*bb4ee6a4SAndroid Build Coastguard Worker     Pci23 = KVM_CAP_PCI_2_3,
91*bb4ee6a4SAndroid Build Coastguard Worker     KvmclockCtrl = KVM_CAP_KVMCLOCK_CTRL,
92*bb4ee6a4SAndroid Build Coastguard Worker     SignalMsi = KVM_CAP_SIGNAL_MSI,
93*bb4ee6a4SAndroid Build Coastguard Worker     PpcGetSmmuInfo = KVM_CAP_PPC_GET_SMMU_INFO,
94*bb4ee6a4SAndroid Build Coastguard Worker     S390Cow = KVM_CAP_S390_COW,
95*bb4ee6a4SAndroid Build Coastguard Worker     PpcAllocHtab = KVM_CAP_PPC_ALLOC_HTAB,
96*bb4ee6a4SAndroid Build Coastguard Worker     ReadonlyMem = KVM_CAP_READONLY_MEM,
97*bb4ee6a4SAndroid Build Coastguard Worker     IrqfdResample = KVM_CAP_IRQFD_RESAMPLE,
98*bb4ee6a4SAndroid Build Coastguard Worker     PpcBookeWatchdog = KVM_CAP_PPC_BOOKE_WATCHDOG,
99*bb4ee6a4SAndroid Build Coastguard Worker     PpcHtabFd = KVM_CAP_PPC_HTAB_FD,
100*bb4ee6a4SAndroid Build Coastguard Worker     S390CssSupport = KVM_CAP_S390_CSS_SUPPORT,
101*bb4ee6a4SAndroid Build Coastguard Worker     PpcEpr = KVM_CAP_PPC_EPR,
102*bb4ee6a4SAndroid Build Coastguard Worker     ArmPsci = KVM_CAP_ARM_PSCI,
103*bb4ee6a4SAndroid Build Coastguard Worker     ArmSetDeviceAddr = KVM_CAP_ARM_SET_DEVICE_ADDR,
104*bb4ee6a4SAndroid Build Coastguard Worker     DeviceCtrl = KVM_CAP_DEVICE_CTRL,
105*bb4ee6a4SAndroid Build Coastguard Worker     IrqMpic = KVM_CAP_IRQ_MPIC,
106*bb4ee6a4SAndroid Build Coastguard Worker     PpcRtas = KVM_CAP_PPC_RTAS,
107*bb4ee6a4SAndroid Build Coastguard Worker     IrqXics = KVM_CAP_IRQ_XICS,
108*bb4ee6a4SAndroid Build Coastguard Worker     ArmEl132bit = KVM_CAP_ARM_EL1_32BIT,
109*bb4ee6a4SAndroid Build Coastguard Worker     SpaprMultitce = KVM_CAP_SPAPR_MULTITCE,
110*bb4ee6a4SAndroid Build Coastguard Worker     ExtEmulCpuid = KVM_CAP_EXT_EMUL_CPUID,
111*bb4ee6a4SAndroid Build Coastguard Worker     HypervTime = KVM_CAP_HYPERV_TIME,
112*bb4ee6a4SAndroid Build Coastguard Worker     IoapicPolarityIgnored = KVM_CAP_IOAPIC_POLARITY_IGNORED,
113*bb4ee6a4SAndroid Build Coastguard Worker     EnableCapVm = KVM_CAP_ENABLE_CAP_VM,
114*bb4ee6a4SAndroid Build Coastguard Worker     S390Irqchip = KVM_CAP_S390_IRQCHIP,
115*bb4ee6a4SAndroid Build Coastguard Worker     IoeventfdNoLength = KVM_CAP_IOEVENTFD_NO_LENGTH,
116*bb4ee6a4SAndroid Build Coastguard Worker     VmAttributes = KVM_CAP_VM_ATTRIBUTES,
117*bb4ee6a4SAndroid Build Coastguard Worker     ArmPsci02 = KVM_CAP_ARM_PSCI_0_2,
118*bb4ee6a4SAndroid Build Coastguard Worker     PpcFixupHcall = KVM_CAP_PPC_FIXUP_HCALL,
119*bb4ee6a4SAndroid Build Coastguard Worker     PpcEnableHcall = KVM_CAP_PPC_ENABLE_HCALL,
120*bb4ee6a4SAndroid Build Coastguard Worker     CheckExtensionVm = KVM_CAP_CHECK_EXTENSION_VM,
121*bb4ee6a4SAndroid Build Coastguard Worker     S390UserSigp = KVM_CAP_S390_USER_SIGP,
122*bb4ee6a4SAndroid Build Coastguard Worker     ImmediateExit = KVM_CAP_IMMEDIATE_EXIT,
123*bb4ee6a4SAndroid Build Coastguard Worker     ArmPmuV3 = KVM_CAP_ARM_PMU_V3,
124*bb4ee6a4SAndroid Build Coastguard Worker     ArmProtectedVm = KVM_CAP_ARM_PROTECTED_VM,
125*bb4ee6a4SAndroid Build Coastguard Worker     ArmMte = KVM_CAP_ARM_MTE,
126*bb4ee6a4SAndroid Build Coastguard Worker     #[cfg(target_arch = "x86_64")]
127*bb4ee6a4SAndroid Build Coastguard Worker     BusLockDetect = KVM_CAP_X86_BUS_LOCK_EXIT,
128*bb4ee6a4SAndroid Build Coastguard Worker     MemNoncoherentDma = KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA,
129*bb4ee6a4SAndroid Build Coastguard Worker }
130