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