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