blob: b095f8275e295f3e33b58cf011c4998e269e6bdd [file] [log] [blame]
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use kvm_sys::*;
/// A capability the kernel's KVM interface can possibly expose.
#[derive(Clone, Copy, Debug, PartialEq)]
#[repr(u32)]
pub enum Cap {
Irqchip = KVM_CAP_IRQCHIP,
Hlt = KVM_CAP_HLT,
MmuShadowCacheControl = KVM_CAP_MMU_SHADOW_CACHE_CONTROL,
UserMemory = KVM_CAP_USER_MEMORY,
SetTssAddr = KVM_CAP_SET_TSS_ADDR,
Vapic = KVM_CAP_VAPIC,
ExtCpuid = KVM_CAP_EXT_CPUID,
Clocksource = KVM_CAP_CLOCKSOURCE,
NrVcpus = KVM_CAP_NR_VCPUS,
NrMemslots = KVM_CAP_NR_MEMSLOTS,
Pit = KVM_CAP_PIT,
NopIoDelay = KVM_CAP_NOP_IO_DELAY,
PvMmu = KVM_CAP_PV_MMU,
MpState = KVM_CAP_MP_STATE,
CoalescedMmio = KVM_CAP_COALESCED_MMIO,
SyncMmu = KVM_CAP_SYNC_MMU,
Iommu = KVM_CAP_IOMMU,
DestroyMemoryRegionWorks = KVM_CAP_DESTROY_MEMORY_REGION_WORKS,
UserNmi = KVM_CAP_USER_NMI,
SetGuestDebug = KVM_CAP_SET_GUEST_DEBUG,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
ReinjectControl = KVM_CAP_REINJECT_CONTROL,
IrqRouting = KVM_CAP_IRQ_ROUTING,
IrqInjectStatus = KVM_CAP_IRQ_INJECT_STATUS,
AssignDevIrq = KVM_CAP_ASSIGN_DEV_IRQ,
JoinMemoryRegionsWorks = KVM_CAP_JOIN_MEMORY_REGIONS_WORKS,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
Mce = KVM_CAP_MCE,
Irqfd = KVM_CAP_IRQFD,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
Pit2 = KVM_CAP_PIT2,
SetBootCpuId = KVM_CAP_SET_BOOT_CPU_ID,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
PitState2 = KVM_CAP_PIT_STATE2,
Ioeventfd = KVM_CAP_IOEVENTFD,
SetIdentityMapAddr = KVM_CAP_SET_IDENTITY_MAP_ADDR,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
XenHvm = KVM_CAP_XEN_HVM,
AdjustClock = KVM_CAP_ADJUST_CLOCK,
InternalErrorData = KVM_CAP_INTERNAL_ERROR_DATA,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
VcpuEvents = KVM_CAP_VCPU_EVENTS,
S390Psw = KVM_CAP_S390_PSW,
PpcSegstate = KVM_CAP_PPC_SEGSTATE,
Hyperv = KVM_CAP_HYPERV,
HypervVapic = KVM_CAP_HYPERV_VAPIC,
HypervSpin = KVM_CAP_HYPERV_SPIN,
PciSegment = KVM_CAP_PCI_SEGMENT,
PpcPairedSingles = KVM_CAP_PPC_PAIRED_SINGLES,
IntrShadow = KVM_CAP_INTR_SHADOW,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
Debugregs = KVM_CAP_DEBUGREGS,
X86RobustSinglestep = KVM_CAP_X86_ROBUST_SINGLESTEP,
PpcOsi = KVM_CAP_PPC_OSI,
PpcUnsetIrq = KVM_CAP_PPC_UNSET_IRQ,
EnableCap = KVM_CAP_ENABLE_CAP,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
Xsave = KVM_CAP_XSAVE,
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
Xcrs = KVM_CAP_XCRS,
PpcGetPvinfo = KVM_CAP_PPC_GET_PVINFO,
PpcIrqLevel = KVM_CAP_PPC_IRQ_LEVEL,
AsyncPf = KVM_CAP_ASYNC_PF,
TscControl = KVM_CAP_TSC_CONTROL,
GetTscKhz = KVM_CAP_GET_TSC_KHZ,
PpcBookeSregs = KVM_CAP_PPC_BOOKE_SREGS,
SpaprTce = KVM_CAP_SPAPR_TCE,
PpcSmt = KVM_CAP_PPC_SMT,
PpcRma = KVM_CAP_PPC_RMA,
MaxVcpus = KVM_CAP_MAX_VCPUS,
PpcHior = KVM_CAP_PPC_HIOR,
PpcPapr = KVM_CAP_PPC_PAPR,
SwTlb = KVM_CAP_SW_TLB,
OneReg = KVM_CAP_ONE_REG,
S390Gmap = KVM_CAP_S390_GMAP,
TscDeadlineTimer = KVM_CAP_TSC_DEADLINE_TIMER,
S390Ucontrol = KVM_CAP_S390_UCONTROL,
SyncRegs = KVM_CAP_SYNC_REGS,
Pci23 = KVM_CAP_PCI_2_3,
KvmclockCtrl = KVM_CAP_KVMCLOCK_CTRL,
SignalMsi = KVM_CAP_SIGNAL_MSI,
PpcGetSmmuInfo = KVM_CAP_PPC_GET_SMMU_INFO,
S390Cow = KVM_CAP_S390_COW,
PpcAllocHtab = KVM_CAP_PPC_ALLOC_HTAB,
ReadonlyMem = KVM_CAP_READONLY_MEM,
IrqfdResample = KVM_CAP_IRQFD_RESAMPLE,
PpcBookeWatchdog = KVM_CAP_PPC_BOOKE_WATCHDOG,
PpcHtabFd = KVM_CAP_PPC_HTAB_FD,
S390CssSupport = KVM_CAP_S390_CSS_SUPPORT,
PpcEpr = KVM_CAP_PPC_EPR,
ArmPsci = KVM_CAP_ARM_PSCI,
ArmSetDeviceAddr = KVM_CAP_ARM_SET_DEVICE_ADDR,
DeviceCtrl = KVM_CAP_DEVICE_CTRL,
IrqMpic = KVM_CAP_IRQ_MPIC,
PpcRtas = KVM_CAP_PPC_RTAS,
IrqXics = KVM_CAP_IRQ_XICS,
ArmEl132bit = KVM_CAP_ARM_EL1_32BIT,
SpaprMultitce = KVM_CAP_SPAPR_MULTITCE,
ExtEmulCpuid = KVM_CAP_EXT_EMUL_CPUID,
HypervTime = KVM_CAP_HYPERV_TIME,
IoapicPolarityIgnored = KVM_CAP_IOAPIC_POLARITY_IGNORED,
EnableCapVm = KVM_CAP_ENABLE_CAP_VM,
S390Irqchip = KVM_CAP_S390_IRQCHIP,
IoeventfdNoLength = KVM_CAP_IOEVENTFD_NO_LENGTH,
VmAttributes = KVM_CAP_VM_ATTRIBUTES,
ArmPsci02 = KVM_CAP_ARM_PSCI_0_2,
PpcFixupHcall = KVM_CAP_PPC_FIXUP_HCALL,
PpcEnableHcall = KVM_CAP_PPC_ENABLE_HCALL,
CheckExtensionVm = KVM_CAP_CHECK_EXTENSION_VM,
S390UserSigp = KVM_CAP_S390_USER_SIGP,
}