• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* automatically generated by tools/bindgen-all-the-things */
2 
3 #![allow(clippy::missing_safety_doc)]
4 #![allow(clippy::undocumented_unsafe_blocks)]
5 #![allow(clippy::upper_case_acronyms)]
6 #![allow(non_upper_case_globals)]
7 #![allow(non_camel_case_types)]
8 #![allow(non_snake_case)]
9 #![allow(dead_code)]
10 
11 // Added by kvm_sys/bindgen.sh
12 use zerocopy::FromBytes;
13 use zerocopy::Immutable;
14 use zerocopy::IntoBytes;
15 use zerocopy::KnownLayout;
16 
17 // TODO(b/388092267): Replace this with an upstream equivalent when available.
18 // The original index (236) used in the ChromeOS v6.6 kernel was reused upstream for another
19 // capability, so this may return incorrect information on some kernels.
20 pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA_CROS: u32 = 236;
21 
22 // TODO(qwandor): Update this once the pKVM patches are merged upstream with a stable capability ID.
23 pub const KVM_CAP_ARM_PROTECTED_VM: u32 = 0xffbadab1;
24 pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA: u32 = 0;
25 pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO: u32 = 1;
26 pub const KVM_VM_TYPE_ARM_PROTECTED: u32 = 0x80000000;
27 pub const KVM_X86_PKVM_PROTECTED_VM: u32 = 28;
28 pub const KVM_CAP_X86_PROTECTED_VM: u32 = 0xffbadab2;
29 pub const KVM_CAP_X86_PROTECTED_VM_FLAGS_SET_FW_GPA: u32 = 0;
30 pub const KVM_CAP_X86_PROTECTED_VM_FLAGS_INFO: u32 = 1;
31 pub const KVM_DEV_VFIO_PVIOMMU: u32 = 2;
32 pub const KVM_DEV_VFIO_PVIOMMU_ATTACH: u32 = 1;
33 #[repr(C)]
34 #[derive(Debug, Default, Copy, Clone)]
35 pub struct kvm_vfio_iommu_info {
36     pub device_fd: i32,
37     pub nr_sids: u32,
38 }
39 pub const KVM_DEV_VFIO_PVIOMMU_GET_INFO: u32 = 2;
40 #[repr(C)]
41 #[derive(Debug, Default, Copy, Clone)]
42 pub struct kvm_vfio_iommu_config {
43     pub device_fd: i32,
44     pub sid_idx: u32,
45     pub vsid: u32,
46 }
47 
48 #[repr(C)]
49 #[derive(Default)]
50 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
51 impl<T> __IncompleteArrayField<T> {
52     #[inline]
new() -> Self53     pub const fn new() -> Self {
54         __IncompleteArrayField(::std::marker::PhantomData, [])
55     }
56     #[inline]
as_ptr(&self) -> *const T57     pub fn as_ptr(&self) -> *const T {
58         self as *const _ as *const T
59     }
60     #[inline]
as_mut_ptr(&mut self) -> *mut T61     pub fn as_mut_ptr(&mut self) -> *mut T {
62         self as *mut _ as *mut T
63     }
64     #[inline]
as_slice(&self, len: usize) -> &[T]65     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
66         ::std::slice::from_raw_parts(self.as_ptr(), len)
67     }
68     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]69     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
70         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
71     }
72 }
73 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result74     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
75         fmt.write_str("__IncompleteArrayField")
76     }
77 }
78 pub const KVM_SPSR_EL1: u32 = 0;
79 pub const KVM_SPSR_SVC: u32 = 0;
80 pub const KVM_SPSR_ABT: u32 = 1;
81 pub const KVM_SPSR_UND: u32 = 2;
82 pub const KVM_SPSR_IRQ: u32 = 3;
83 pub const KVM_SPSR_FIQ: u32 = 4;
84 pub const KVM_NR_SPSR: u32 = 5;
85 pub const PSCI_0_2_FN_BASE: u32 = 2214592512;
86 pub const PSCI_0_2_64BIT: u32 = 1073741824;
87 pub const PSCI_0_2_FN64_BASE: u32 = 3288334336;
88 pub const PSCI_0_2_POWER_STATE_ID_MASK: u32 = 65535;
89 pub const PSCI_0_2_POWER_STATE_ID_SHIFT: u32 = 0;
90 pub const PSCI_0_2_POWER_STATE_TYPE_SHIFT: u32 = 16;
91 pub const PSCI_0_2_POWER_STATE_TYPE_MASK: u32 = 65536;
92 pub const PSCI_0_2_POWER_STATE_AFFL_SHIFT: u32 = 24;
93 pub const PSCI_0_2_POWER_STATE_AFFL_MASK: u32 = 50331648;
94 pub const PSCI_1_0_EXT_POWER_STATE_ID_MASK: u32 = 268435455;
95 pub const PSCI_1_0_EXT_POWER_STATE_ID_SHIFT: u32 = 0;
96 pub const PSCI_1_0_EXT_POWER_STATE_TYPE_SHIFT: u32 = 30;
97 pub const PSCI_1_0_EXT_POWER_STATE_TYPE_MASK: u32 = 1073741824;
98 pub const PSCI_0_2_AFFINITY_LEVEL_ON: u32 = 0;
99 pub const PSCI_0_2_AFFINITY_LEVEL_OFF: u32 = 1;
100 pub const PSCI_0_2_AFFINITY_LEVEL_ON_PENDING: u32 = 2;
101 pub const PSCI_0_2_TOS_UP_MIGRATE: u32 = 0;
102 pub const PSCI_0_2_TOS_UP_NO_MIGRATE: u32 = 1;
103 pub const PSCI_0_2_TOS_MP: u32 = 2;
104 pub const PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET: u32 = 0;
105 pub const PSCI_1_1_RESET_TYPE_VENDOR_START: u32 = 2147483648;
106 pub const PSCI_VERSION_MAJOR_SHIFT: u32 = 16;
107 pub const PSCI_VERSION_MINOR_MASK: u32 = 65535;
108 pub const PSCI_VERSION_MAJOR_MASK: i32 = -65536;
109 pub const PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT: u32 = 1;
110 pub const PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK: u32 = 2;
111 pub const PSCI_1_0_SUSPEND_MODE_PC: u32 = 0;
112 pub const PSCI_1_0_SUSPEND_MODE_OSI: u32 = 1;
113 pub const PSCI_RET_SUCCESS: u32 = 0;
114 pub const PSCI_RET_NOT_SUPPORTED: i32 = -1;
115 pub const PSCI_RET_INVALID_PARAMS: i32 = -2;
116 pub const PSCI_RET_DENIED: i32 = -3;
117 pub const PSCI_RET_ALREADY_ON: i32 = -4;
118 pub const PSCI_RET_ON_PENDING: i32 = -5;
119 pub const PSCI_RET_INTERNAL_FAILURE: i32 = -6;
120 pub const PSCI_RET_NOT_PRESENT: i32 = -7;
121 pub const PSCI_RET_DISABLED: i32 = -8;
122 pub const PSCI_RET_INVALID_ADDRESS: i32 = -9;
123 pub const HWCAP_FP: u32 = 1;
124 pub const HWCAP_ASIMD: u32 = 2;
125 pub const HWCAP_EVTSTRM: u32 = 4;
126 pub const HWCAP_AES: u32 = 8;
127 pub const HWCAP_PMULL: u32 = 16;
128 pub const HWCAP_SHA1: u32 = 32;
129 pub const HWCAP_SHA2: u32 = 64;
130 pub const HWCAP_CRC32: u32 = 128;
131 pub const HWCAP_ATOMICS: u32 = 256;
132 pub const HWCAP_FPHP: u32 = 512;
133 pub const HWCAP_ASIMDHP: u32 = 1024;
134 pub const HWCAP_CPUID: u32 = 2048;
135 pub const HWCAP_ASIMDRDM: u32 = 4096;
136 pub const HWCAP_JSCVT: u32 = 8192;
137 pub const HWCAP_FCMA: u32 = 16384;
138 pub const HWCAP_LRCPC: u32 = 32768;
139 pub const HWCAP_DCPOP: u32 = 65536;
140 pub const HWCAP_SHA3: u32 = 131072;
141 pub const HWCAP_SM3: u32 = 262144;
142 pub const HWCAP_SM4: u32 = 524288;
143 pub const HWCAP_ASIMDDP: u32 = 1048576;
144 pub const HWCAP_SHA512: u32 = 2097152;
145 pub const HWCAP_SVE: u32 = 4194304;
146 pub const HWCAP_ASIMDFHM: u32 = 8388608;
147 pub const HWCAP_DIT: u32 = 16777216;
148 pub const HWCAP_USCAT: u32 = 33554432;
149 pub const HWCAP_ILRCPC: u32 = 67108864;
150 pub const HWCAP_FLAGM: u32 = 134217728;
151 pub const HWCAP_SSBS: u32 = 268435456;
152 pub const HWCAP_SB: u32 = 536870912;
153 pub const HWCAP_PACA: u32 = 1073741824;
154 pub const HWCAP_PACG: u32 = 2147483648;
155 pub const HWCAP2_DCPODP: u32 = 1;
156 pub const HWCAP2_SVE2: u32 = 2;
157 pub const HWCAP2_SVEAES: u32 = 4;
158 pub const HWCAP2_SVEPMULL: u32 = 8;
159 pub const HWCAP2_SVEBITPERM: u32 = 16;
160 pub const HWCAP2_SVESHA3: u32 = 32;
161 pub const HWCAP2_SVESM4: u32 = 64;
162 pub const HWCAP2_FLAGM2: u32 = 128;
163 pub const HWCAP2_FRINT: u32 = 256;
164 pub const HWCAP2_SVEI8MM: u32 = 512;
165 pub const HWCAP2_SVEF32MM: u32 = 1024;
166 pub const HWCAP2_SVEF64MM: u32 = 2048;
167 pub const HWCAP2_SVEBF16: u32 = 4096;
168 pub const HWCAP2_I8MM: u32 = 8192;
169 pub const HWCAP2_BF16: u32 = 16384;
170 pub const HWCAP2_DGH: u32 = 32768;
171 pub const HWCAP2_RNG: u32 = 65536;
172 pub const HWCAP2_BTI: u32 = 131072;
173 pub const HWCAP2_MTE: u32 = 262144;
174 pub const HWCAP2_ECV: u32 = 524288;
175 pub const HWCAP2_AFP: u32 = 1048576;
176 pub const HWCAP2_RPRES: u32 = 2097152;
177 pub const HWCAP2_MTE3: u32 = 4194304;
178 pub const HWCAP2_SME: u32 = 8388608;
179 pub const HWCAP2_SME_I16I64: u32 = 16777216;
180 pub const HWCAP2_SME_F64F64: u32 = 33554432;
181 pub const HWCAP2_SME_I8I32: u32 = 67108864;
182 pub const HWCAP2_SME_F16F32: u32 = 134217728;
183 pub const HWCAP2_SME_B16F32: u32 = 268435456;
184 pub const HWCAP2_SME_F32F32: u32 = 536870912;
185 pub const HWCAP2_SME_FA64: u32 = 1073741824;
186 pub const HWCAP2_WFXT: u32 = 2147483648;
187 pub const HWCAP2_EBF16: u64 = 4294967296;
188 pub const HWCAP2_SVE_EBF16: u64 = 8589934592;
189 pub const HWCAP2_CSSC: u64 = 17179869184;
190 pub const HWCAP2_RPRFM: u64 = 34359738368;
191 pub const HWCAP2_SVE2P1: u64 = 68719476736;
192 pub const HWCAP2_SME2: u64 = 137438953472;
193 pub const HWCAP2_SME2P1: u64 = 274877906944;
194 pub const HWCAP2_SME_I16I32: u64 = 549755813888;
195 pub const HWCAP2_SME_BI32I32: u64 = 1099511627776;
196 pub const HWCAP2_SME_B16B16: u64 = 2199023255552;
197 pub const HWCAP2_SME_F16F16: u64 = 4398046511104;
198 pub const HWCAP2_MOPS: u64 = 8796093022208;
199 pub const HWCAP2_HBC: u64 = 17592186044416;
200 pub const HWCAP2_SVE_B16B16: u64 = 35184372088832;
201 pub const HWCAP2_LRCPC3: u64 = 70368744177664;
202 pub const HWCAP2_LSE128: u64 = 140737488355328;
203 pub const HWCAP2_FPMR: u64 = 281474976710656;
204 pub const HWCAP2_LUT: u64 = 562949953421312;
205 pub const HWCAP2_FAMINMAX: u64 = 1125899906842624;
206 pub const HWCAP2_F8CVT: u64 = 2251799813685248;
207 pub const HWCAP2_F8FMA: u64 = 4503599627370496;
208 pub const HWCAP2_F8DP4: u64 = 9007199254740992;
209 pub const HWCAP2_F8DP2: u64 = 18014398509481984;
210 pub const HWCAP2_F8E4M3: u64 = 36028797018963968;
211 pub const HWCAP2_F8E5M2: u64 = 72057594037927936;
212 pub const HWCAP2_SME_LUTV2: u64 = 144115188075855872;
213 pub const HWCAP2_SME_F8F16: u64 = 288230376151711744;
214 pub const HWCAP2_SME_F8F32: u64 = 576460752303423488;
215 pub const HWCAP2_SME_SF8FMA: u64 = 1152921504606846976;
216 pub const HWCAP2_SME_SF8DP4: u64 = 2305843009213693952;
217 pub const HWCAP2_SME_SF8DP2: u64 = 4611686018427387904;
218 pub const HWCAP2_POE: i64 = -9223372036854775808;
219 pub const __SVE_VQ_BYTES: u32 = 16;
220 pub const __SVE_VQ_MIN: u32 = 1;
221 pub const __SVE_VQ_MAX: u32 = 512;
222 pub const __SVE_VL_MIN: u32 = 16;
223 pub const __SVE_VL_MAX: u32 = 8192;
224 pub const __SVE_NUM_ZREGS: u32 = 32;
225 pub const __SVE_NUM_PREGS: u32 = 16;
226 pub const __SVE_ZREGS_OFFSET: u32 = 0;
227 pub const PSR_MODE_EL0t: u32 = 0;
228 pub const PSR_MODE_EL1t: u32 = 4;
229 pub const PSR_MODE_EL1h: u32 = 5;
230 pub const PSR_MODE_EL2t: u32 = 8;
231 pub const PSR_MODE_EL2h: u32 = 9;
232 pub const PSR_MODE_EL3t: u32 = 12;
233 pub const PSR_MODE_EL3h: u32 = 13;
234 pub const PSR_MODE_MASK: u32 = 15;
235 pub const PSR_MODE32_BIT: u32 = 16;
236 pub const PSR_F_BIT: u32 = 64;
237 pub const PSR_I_BIT: u32 = 128;
238 pub const PSR_A_BIT: u32 = 256;
239 pub const PSR_D_BIT: u32 = 512;
240 pub const PSR_BTYPE_MASK: u32 = 3072;
241 pub const PSR_SSBS_BIT: u32 = 4096;
242 pub const PSR_PAN_BIT: u32 = 4194304;
243 pub const PSR_UAO_BIT: u32 = 8388608;
244 pub const PSR_DIT_BIT: u32 = 16777216;
245 pub const PSR_TCO_BIT: u32 = 33554432;
246 pub const PSR_V_BIT: u32 = 268435456;
247 pub const PSR_C_BIT: u32 = 536870912;
248 pub const PSR_Z_BIT: u32 = 1073741824;
249 pub const PSR_N_BIT: u32 = 2147483648;
250 pub const PSR_BTYPE_SHIFT: u32 = 10;
251 pub const PSR_f: u32 = 4278190080;
252 pub const PSR_s: u32 = 16711680;
253 pub const PSR_x: u32 = 65280;
254 pub const PSR_c: u32 = 255;
255 pub const PSR_BTYPE_NONE: u32 = 0;
256 pub const PSR_BTYPE_JC: u32 = 1024;
257 pub const PSR_BTYPE_C: u32 = 2048;
258 pub const PSR_BTYPE_J: u32 = 3072;
259 pub const PTRACE_SYSEMU: u32 = 31;
260 pub const PTRACE_SYSEMU_SINGLESTEP: u32 = 32;
261 pub const PTRACE_PEEKMTETAGS: u32 = 33;
262 pub const PTRACE_POKEMTETAGS: u32 = 34;
263 pub const SVE_PT_REGS_MASK: u32 = 1;
264 pub const SVE_PT_REGS_FPSIMD: u32 = 0;
265 pub const SVE_PT_REGS_SVE: u32 = 1;
266 pub const SVE_PT_VL_INHERIT: u32 = 2;
267 pub const SVE_PT_VL_ONEXEC: u32 = 4;
268 pub const ZA_PT_VL_INHERIT: u32 = 2;
269 pub const ZA_PT_VL_ONEXEC: u32 = 4;
270 pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 1;
271 pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 64;
272 pub const KVM_ARM_TARGET_AEM_V8: u32 = 0;
273 pub const KVM_ARM_TARGET_FOUNDATION_V8: u32 = 1;
274 pub const KVM_ARM_TARGET_CORTEX_A57: u32 = 2;
275 pub const KVM_ARM_TARGET_XGENE_POTENZA: u32 = 3;
276 pub const KVM_ARM_TARGET_CORTEX_A53: u32 = 4;
277 pub const KVM_ARM_TARGET_GENERIC_V8: u32 = 5;
278 pub const KVM_ARM_NUM_TARGETS: u32 = 6;
279 pub const KVM_ARM_DEVICE_TYPE_SHIFT: u32 = 0;
280 pub const KVM_ARM_DEVICE_ID_SHIFT: u32 = 16;
281 pub const KVM_ARM_DEVICE_VGIC_V2: u32 = 0;
282 pub const KVM_VGIC_V2_ADDR_TYPE_DIST: u32 = 0;
283 pub const KVM_VGIC_V2_ADDR_TYPE_CPU: u32 = 1;
284 pub const KVM_VGIC_V2_DIST_SIZE: u32 = 4096;
285 pub const KVM_VGIC_V2_CPU_SIZE: u32 = 8192;
286 pub const KVM_VGIC_V3_ADDR_TYPE_DIST: u32 = 2;
287 pub const KVM_VGIC_V3_ADDR_TYPE_REDIST: u32 = 3;
288 pub const KVM_VGIC_ITS_ADDR_TYPE: u32 = 4;
289 pub const KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION: u32 = 5;
290 pub const KVM_ARM_VCPU_POWER_OFF: u32 = 0;
291 pub const KVM_ARM_VCPU_EL1_32BIT: u32 = 1;
292 pub const KVM_ARM_VCPU_PSCI_0_2: u32 = 2;
293 pub const KVM_ARM_VCPU_PMU_V3: u32 = 3;
294 pub const KVM_ARM_VCPU_SVE: u32 = 4;
295 pub const KVM_ARM_VCPU_PTRAUTH_ADDRESS: u32 = 5;
296 pub const KVM_ARM_VCPU_PTRAUTH_GENERIC: u32 = 6;
297 pub const KVM_ARM_VCPU_HAS_EL2: u32 = 7;
298 pub const KVM_ARM_MAX_DBG_REGS: u32 = 16;
299 pub const KVM_DEBUG_ARCH_HSR_HIGH_VALID: u32 = 1;
300 pub const KVM_GUESTDBG_USE_SW_BP: u32 = 65536;
301 pub const KVM_GUESTDBG_USE_HW: u32 = 131072;
302 pub const KVM_ARM_DEV_EL1_VTIMER: u32 = 1;
303 pub const KVM_ARM_DEV_EL1_PTIMER: u32 = 2;
304 pub const KVM_ARM_DEV_PMU: u32 = 4;
305 pub const KVM_PMU_EVENT_ALLOW: u32 = 0;
306 pub const KVM_PMU_EVENT_DENY: u32 = 1;
307 pub const KVM_ARM_TAGS_TO_GUEST: u32 = 0;
308 pub const KVM_ARM_TAGS_FROM_GUEST: u32 = 1;
309 pub const KVM_REG_ARM_COPROC_MASK: u32 = 268369920;
310 pub const KVM_REG_ARM_COPROC_SHIFT: u32 = 16;
311 pub const KVM_REG_ARM_CORE: u32 = 1048576;
312 pub const KVM_REG_ARM_DEMUX: u32 = 1114112;
313 pub const KVM_REG_ARM_DEMUX_ID_MASK: u32 = 65280;
314 pub const KVM_REG_ARM_DEMUX_ID_SHIFT: u32 = 8;
315 pub const KVM_REG_ARM_DEMUX_ID_CCSIDR: u32 = 0;
316 pub const KVM_REG_ARM_DEMUX_VAL_MASK: u32 = 255;
317 pub const KVM_REG_ARM_DEMUX_VAL_SHIFT: u32 = 0;
318 pub const KVM_REG_ARM64_SYSREG: u32 = 1245184;
319 pub const KVM_REG_ARM64_SYSREG_OP0_MASK: u32 = 49152;
320 pub const KVM_REG_ARM64_SYSREG_OP0_SHIFT: u32 = 14;
321 pub const KVM_REG_ARM64_SYSREG_OP1_MASK: u32 = 14336;
322 pub const KVM_REG_ARM64_SYSREG_OP1_SHIFT: u32 = 11;
323 pub const KVM_REG_ARM64_SYSREG_CRN_MASK: u32 = 1920;
324 pub const KVM_REG_ARM64_SYSREG_CRN_SHIFT: u32 = 7;
325 pub const KVM_REG_ARM64_SYSREG_CRM_MASK: u32 = 120;
326 pub const KVM_REG_ARM64_SYSREG_CRM_SHIFT: u32 = 3;
327 pub const KVM_REG_ARM64_SYSREG_OP2_MASK: u32 = 7;
328 pub const KVM_REG_ARM64_SYSREG_OP2_SHIFT: u32 = 0;
329 pub const KVM_REG_ARM_FW: u32 = 1310720;
330 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL: u32 = 0;
331 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL: u32 = 1;
332 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED: u32 = 2;
333 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL: u32 = 0;
334 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN: u32 = 1;
335 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL: u32 = 2;
336 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED: u32 = 3;
337 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED: u32 = 16;
338 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3_NOT_AVAIL: u32 = 0;
339 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3_AVAIL: u32 = 1;
340 pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3_NOT_REQUIRED: u32 = 2;
341 pub const KVM_REG_ARM64_SVE: u32 = 1376256;
342 pub const KVM_REG_ARM64_SVE_ZREG_BASE: u32 = 0;
343 pub const KVM_REG_ARM64_SVE_PREG_BASE: u32 = 1024;
344 pub const KVM_REG_ARM64_SVE_FFR_BASE: u32 = 1536;
345 pub const KVM_ARM64_SVE_NUM_ZREGS: u32 = 32;
346 pub const KVM_ARM64_SVE_NUM_PREGS: u32 = 16;
347 pub const KVM_ARM64_SVE_MAX_SLICES: u32 = 32;
348 pub const KVM_ARM64_SVE_VQ_MIN: u32 = 1;
349 pub const KVM_ARM64_SVE_VQ_MAX: u32 = 512;
350 pub const KVM_ARM64_SVE_VLS_WORDS: u32 = 8;
351 pub const KVM_REG_ARM_FW_FEAT_BMAP: u32 = 1441792;
352 pub const KVM_ARM_VM_SMCCC_CTRL: u32 = 0;
353 pub const KVM_ARM_VM_SMCCC_FILTER: u32 = 0;
354 pub const KVM_DEV_ARM_VGIC_GRP_ADDR: u32 = 0;
355 pub const KVM_DEV_ARM_VGIC_GRP_DIST_REGS: u32 = 1;
356 pub const KVM_DEV_ARM_VGIC_GRP_CPU_REGS: u32 = 2;
357 pub const KVM_DEV_ARM_VGIC_CPUID_SHIFT: u32 = 32;
358 pub const KVM_DEV_ARM_VGIC_CPUID_MASK: u64 = 1095216660480;
359 pub const KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT: u32 = 32;
360 pub const KVM_DEV_ARM_VGIC_V3_MPIDR_MASK: i64 = -4294967296;
361 pub const KVM_DEV_ARM_VGIC_OFFSET_SHIFT: u32 = 0;
362 pub const KVM_DEV_ARM_VGIC_OFFSET_MASK: u32 = 4294967295;
363 pub const KVM_DEV_ARM_VGIC_SYSREG_INSTR_MASK: u32 = 65535;
364 pub const KVM_DEV_ARM_VGIC_GRP_NR_IRQS: u32 = 3;
365 pub const KVM_DEV_ARM_VGIC_GRP_CTRL: u32 = 4;
366 pub const KVM_DEV_ARM_VGIC_GRP_REDIST_REGS: u32 = 5;
367 pub const KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS: u32 = 6;
368 pub const KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO: u32 = 7;
369 pub const KVM_DEV_ARM_VGIC_GRP_ITS_REGS: u32 = 8;
370 pub const KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT: u32 = 10;
371 pub const KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK: u32 = 4294966272;
372 pub const KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK: u32 = 1023;
373 pub const VGIC_LEVEL_INFO_LINE_LEVEL: u32 = 0;
374 pub const KVM_DEV_ARM_VGIC_CTRL_INIT: u32 = 0;
375 pub const KVM_DEV_ARM_ITS_SAVE_TABLES: u32 = 1;
376 pub const KVM_DEV_ARM_ITS_RESTORE_TABLES: u32 = 2;
377 pub const KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES: u32 = 3;
378 pub const KVM_DEV_ARM_ITS_CTRL_RESET: u32 = 4;
379 pub const KVM_ARM_VCPU_PMU_V3_CTRL: u32 = 0;
380 pub const KVM_ARM_VCPU_PMU_V3_IRQ: u32 = 0;
381 pub const KVM_ARM_VCPU_PMU_V3_INIT: u32 = 1;
382 pub const KVM_ARM_VCPU_PMU_V3_FILTER: u32 = 2;
383 pub const KVM_ARM_VCPU_PMU_V3_SET_PMU: u32 = 3;
384 pub const KVM_ARM_VCPU_TIMER_CTRL: u32 = 1;
385 pub const KVM_ARM_VCPU_TIMER_IRQ_VTIMER: u32 = 0;
386 pub const KVM_ARM_VCPU_TIMER_IRQ_PTIMER: u32 = 1;
387 pub const KVM_ARM_VCPU_TIMER_IRQ_HVTIMER: u32 = 2;
388 pub const KVM_ARM_VCPU_TIMER_IRQ_HPTIMER: u32 = 3;
389 pub const KVM_ARM_VCPU_PVTIME_CTRL: u32 = 2;
390 pub const KVM_ARM_VCPU_PVTIME_IPA: u32 = 0;
391 pub const KVM_ARM_IRQ_VCPU2_SHIFT: u32 = 28;
392 pub const KVM_ARM_IRQ_VCPU2_MASK: u32 = 15;
393 pub const KVM_ARM_IRQ_TYPE_SHIFT: u32 = 24;
394 pub const KVM_ARM_IRQ_TYPE_MASK: u32 = 15;
395 pub const KVM_ARM_IRQ_VCPU_SHIFT: u32 = 16;
396 pub const KVM_ARM_IRQ_VCPU_MASK: u32 = 255;
397 pub const KVM_ARM_IRQ_NUM_SHIFT: u32 = 0;
398 pub const KVM_ARM_IRQ_NUM_MASK: u32 = 65535;
399 pub const KVM_ARM_IRQ_TYPE_CPU: u32 = 0;
400 pub const KVM_ARM_IRQ_TYPE_SPI: u32 = 1;
401 pub const KVM_ARM_IRQ_TYPE_PPI: u32 = 2;
402 pub const KVM_ARM_IRQ_CPU_IRQ: u32 = 0;
403 pub const KVM_ARM_IRQ_CPU_FIQ: u32 = 1;
404 pub const KVM_ARM_IRQ_GIC_MAX: u32 = 127;
405 pub const KVM_NR_IRQCHIPS: u32 = 1;
406 pub const KVM_PSCI_FN_BASE: u32 = 2512501342;
407 pub const KVM_PSCI_RET_SUCCESS: u32 = 0;
408 pub const KVM_PSCI_RET_NI: i32 = -1;
409 pub const KVM_PSCI_RET_INVAL: i32 = -2;
410 pub const KVM_PSCI_RET_DENIED: i32 = -3;
411 pub const KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2: u32 = 1;
412 pub const KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED: u32 = 1;
413 pub const KVM_HYPERCALL_EXIT_SMC: u32 = 1;
414 pub const KVM_HYPERCALL_EXIT_16BIT: u32 = 2;
415 pub const KVM_ARM_FEATURE_ID_RANGE: u32 = 0;
416 pub const KVM_ARM_FEATURE_ID_RANGE_SIZE: u32 = 192;
417 pub const KVM_API_VERSION: u32 = 12;
418 pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1;
419 pub const KVM_MEM_READONLY: u32 = 2;
420 pub const KVM_MEM_GUEST_MEMFD: u32 = 4;
421 pub const KVM_MEM_NON_COHERENT_DMA: u32 = 8;
422 pub const KVM_PIT_SPEAKER_DUMMY: u32 = 1;
423 pub const KVM_EXIT_HYPERV_SYNIC: u32 = 1;
424 pub const KVM_EXIT_HYPERV_HCALL: u32 = 2;
425 pub const KVM_EXIT_HYPERV_SYNDBG: u32 = 3;
426 pub const KVM_EXIT_XEN_HCALL: u32 = 1;
427 pub const KVM_S390_GET_SKEYS_NONE: u32 = 1;
428 pub const KVM_S390_SKEYS_MAX: u32 = 1048576;
429 pub const KVM_EXIT_UNKNOWN: u32 = 0;
430 pub const KVM_EXIT_EXCEPTION: u32 = 1;
431 pub const KVM_EXIT_IO: u32 = 2;
432 pub const KVM_EXIT_HYPERCALL: u32 = 3;
433 pub const KVM_EXIT_DEBUG: u32 = 4;
434 pub const KVM_EXIT_HLT: u32 = 5;
435 pub const KVM_EXIT_MMIO: u32 = 6;
436 pub const KVM_EXIT_IRQ_WINDOW_OPEN: u32 = 7;
437 pub const KVM_EXIT_SHUTDOWN: u32 = 8;
438 pub const KVM_EXIT_FAIL_ENTRY: u32 = 9;
439 pub const KVM_EXIT_INTR: u32 = 10;
440 pub const KVM_EXIT_SET_TPR: u32 = 11;
441 pub const KVM_EXIT_TPR_ACCESS: u32 = 12;
442 pub const KVM_EXIT_S390_SIEIC: u32 = 13;
443 pub const KVM_EXIT_S390_RESET: u32 = 14;
444 pub const KVM_EXIT_DCR: u32 = 15;
445 pub const KVM_EXIT_NMI: u32 = 16;
446 pub const KVM_EXIT_INTERNAL_ERROR: u32 = 17;
447 pub const KVM_EXIT_OSI: u32 = 18;
448 pub const KVM_EXIT_PAPR_HCALL: u32 = 19;
449 pub const KVM_EXIT_S390_UCONTROL: u32 = 20;
450 pub const KVM_EXIT_WATCHDOG: u32 = 21;
451 pub const KVM_EXIT_S390_TSCH: u32 = 22;
452 pub const KVM_EXIT_EPR: u32 = 23;
453 pub const KVM_EXIT_SYSTEM_EVENT: u32 = 24;
454 pub const KVM_EXIT_S390_STSI: u32 = 25;
455 pub const KVM_EXIT_IOAPIC_EOI: u32 = 26;
456 pub const KVM_EXIT_HYPERV: u32 = 27;
457 pub const KVM_EXIT_ARM_NISV: u32 = 28;
458 pub const KVM_EXIT_X86_RDMSR: u32 = 29;
459 pub const KVM_EXIT_X86_WRMSR: u32 = 30;
460 pub const KVM_EXIT_DIRTY_RING_FULL: u32 = 31;
461 pub const KVM_EXIT_AP_RESET_HOLD: u32 = 32;
462 pub const KVM_EXIT_X86_BUS_LOCK: u32 = 33;
463 pub const KVM_EXIT_XEN: u32 = 34;
464 pub const KVM_EXIT_RISCV_SBI: u32 = 35;
465 pub const KVM_EXIT_RISCV_CSR: u32 = 36;
466 pub const KVM_EXIT_NOTIFY: u32 = 37;
467 pub const KVM_EXIT_LOONGARCH_IOCSR: u32 = 38;
468 pub const KVM_EXIT_MEMORY_FAULT: u32 = 39;
469 pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1;
470 pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2;
471 pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3;
472 pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4;
473 pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1;
474 pub const KVM_EXIT_IO_IN: u32 = 0;
475 pub const KVM_EXIT_IO_OUT: u32 = 1;
476 pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1;
477 pub const KVM_SYSTEM_EVENT_RESET: u32 = 2;
478 pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3;
479 pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4;
480 pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5;
481 pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6;
482 pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1;
483 pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2;
484 pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4;
485 pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7;
486 pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1;
487 pub const KVM_MEMORY_EXIT_FLAG_PRIVATE: u32 = 8;
488 pub const SYNC_REGS_SIZE_BYTES: u32 = 2048;
489 pub const KVM_MP_STATE_RUNNABLE: u32 = 0;
490 pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1;
491 pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2;
492 pub const KVM_MP_STATE_HALTED: u32 = 3;
493 pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4;
494 pub const KVM_MP_STATE_STOPPED: u32 = 5;
495 pub const KVM_MP_STATE_CHECK_STOP: u32 = 6;
496 pub const KVM_MP_STATE_OPERATING: u32 = 7;
497 pub const KVM_MP_STATE_LOAD: u32 = 8;
498 pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9;
499 pub const KVM_MP_STATE_SUSPENDED: u32 = 10;
500 pub const KVM_GUESTDBG_ENABLE: u32 = 1;
501 pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2;
502 pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1;
503 pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2;
504 pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4;
505 pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8;
506 pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15;
507 pub const KVMIO: u32 = 174;
508 pub const KVM_VM_S390_UCONTROL: u32 = 1;
509 pub const KVM_VM_PPC_HV: u32 = 1;
510 pub const KVM_VM_PPC_PR: u32 = 2;
511 pub const KVM_VM_MIPS_AUTO: u32 = 0;
512 pub const KVM_VM_MIPS_VZ: u32 = 1;
513 pub const KVM_VM_MIPS_TE: u32 = 2;
514 pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1;
515 pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255;
516 pub const KVM_CAP_IRQCHIP: u32 = 0;
517 pub const KVM_CAP_HLT: u32 = 1;
518 pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2;
519 pub const KVM_CAP_USER_MEMORY: u32 = 3;
520 pub const KVM_CAP_SET_TSS_ADDR: u32 = 4;
521 pub const KVM_CAP_VAPIC: u32 = 6;
522 pub const KVM_CAP_EXT_CPUID: u32 = 7;
523 pub const KVM_CAP_CLOCKSOURCE: u32 = 8;
524 pub const KVM_CAP_NR_VCPUS: u32 = 9;
525 pub const KVM_CAP_NR_MEMSLOTS: u32 = 10;
526 pub const KVM_CAP_PIT: u32 = 11;
527 pub const KVM_CAP_NOP_IO_DELAY: u32 = 12;
528 pub const KVM_CAP_PV_MMU: u32 = 13;
529 pub const KVM_CAP_MP_STATE: u32 = 14;
530 pub const KVM_CAP_COALESCED_MMIO: u32 = 15;
531 pub const KVM_CAP_SYNC_MMU: u32 = 16;
532 pub const KVM_CAP_IOMMU: u32 = 18;
533 pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21;
534 pub const KVM_CAP_USER_NMI: u32 = 22;
535 pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23;
536 pub const KVM_CAP_IRQ_ROUTING: u32 = 25;
537 pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26;
538 pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29;
539 pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30;
540 pub const KVM_CAP_IRQFD: u32 = 32;
541 pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34;
542 pub const KVM_CAP_IOEVENTFD: u32 = 36;
543 pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37;
544 pub const KVM_CAP_ADJUST_CLOCK: u32 = 39;
545 pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40;
546 pub const KVM_CAP_VCPU_EVENTS: u32 = 41;
547 pub const KVM_CAP_S390_PSW: u32 = 42;
548 pub const KVM_CAP_PPC_SEGSTATE: u32 = 43;
549 pub const KVM_CAP_HYPERV: u32 = 44;
550 pub const KVM_CAP_HYPERV_VAPIC: u32 = 45;
551 pub const KVM_CAP_HYPERV_SPIN: u32 = 46;
552 pub const KVM_CAP_PCI_SEGMENT: u32 = 47;
553 pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48;
554 pub const KVM_CAP_INTR_SHADOW: u32 = 49;
555 pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51;
556 pub const KVM_CAP_PPC_OSI: u32 = 52;
557 pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53;
558 pub const KVM_CAP_ENABLE_CAP: u32 = 54;
559 pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57;
560 pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58;
561 pub const KVM_CAP_ASYNC_PF: u32 = 59;
562 pub const KVM_CAP_TSC_CONTROL: u32 = 60;
563 pub const KVM_CAP_GET_TSC_KHZ: u32 = 61;
564 pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62;
565 pub const KVM_CAP_SPAPR_TCE: u32 = 63;
566 pub const KVM_CAP_PPC_SMT: u32 = 64;
567 pub const KVM_CAP_PPC_RMA: u32 = 65;
568 pub const KVM_CAP_MAX_VCPUS: u32 = 66;
569 pub const KVM_CAP_PPC_HIOR: u32 = 67;
570 pub const KVM_CAP_PPC_PAPR: u32 = 68;
571 pub const KVM_CAP_SW_TLB: u32 = 69;
572 pub const KVM_CAP_ONE_REG: u32 = 70;
573 pub const KVM_CAP_S390_GMAP: u32 = 71;
574 pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72;
575 pub const KVM_CAP_S390_UCONTROL: u32 = 73;
576 pub const KVM_CAP_SYNC_REGS: u32 = 74;
577 pub const KVM_CAP_PCI_2_3: u32 = 75;
578 pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76;
579 pub const KVM_CAP_SIGNAL_MSI: u32 = 77;
580 pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78;
581 pub const KVM_CAP_S390_COW: u32 = 79;
582 pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80;
583 pub const KVM_CAP_READONLY_MEM: u32 = 81;
584 pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82;
585 pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83;
586 pub const KVM_CAP_PPC_HTAB_FD: u32 = 84;
587 pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85;
588 pub const KVM_CAP_PPC_EPR: u32 = 86;
589 pub const KVM_CAP_ARM_PSCI: u32 = 87;
590 pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88;
591 pub const KVM_CAP_DEVICE_CTRL: u32 = 89;
592 pub const KVM_CAP_IRQ_MPIC: u32 = 90;
593 pub const KVM_CAP_PPC_RTAS: u32 = 91;
594 pub const KVM_CAP_IRQ_XICS: u32 = 92;
595 pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93;
596 pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94;
597 pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95;
598 pub const KVM_CAP_HYPERV_TIME: u32 = 96;
599 pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97;
600 pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98;
601 pub const KVM_CAP_S390_IRQCHIP: u32 = 99;
602 pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100;
603 pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101;
604 pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102;
605 pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103;
606 pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104;
607 pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105;
608 pub const KVM_CAP_S390_USER_SIGP: u32 = 106;
609 pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107;
610 pub const KVM_CAP_S390_MEM_OP: u32 = 108;
611 pub const KVM_CAP_S390_USER_STSI: u32 = 109;
612 pub const KVM_CAP_S390_SKEYS: u32 = 110;
613 pub const KVM_CAP_MIPS_FPU: u32 = 111;
614 pub const KVM_CAP_MIPS_MSA: u32 = 112;
615 pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113;
616 pub const KVM_CAP_S390_IRQ_STATE: u32 = 114;
617 pub const KVM_CAP_PPC_HWRNG: u32 = 115;
618 pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116;
619 pub const KVM_CAP_X86_SMM: u32 = 117;
620 pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118;
621 pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119;
622 pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120;
623 pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121;
624 pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122;
625 pub const KVM_CAP_HYPERV_SYNIC: u32 = 123;
626 pub const KVM_CAP_S390_RI: u32 = 124;
627 pub const KVM_CAP_SPAPR_TCE_64: u32 = 125;
628 pub const KVM_CAP_ARM_PMU_V3: u32 = 126;
629 pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127;
630 pub const KVM_CAP_MAX_VCPU_ID: u32 = 128;
631 pub const KVM_CAP_X2APIC_API: u32 = 129;
632 pub const KVM_CAP_S390_USER_INSTR0: u32 = 130;
633 pub const KVM_CAP_MSI_DEVID: u32 = 131;
634 pub const KVM_CAP_PPC_HTM: u32 = 132;
635 pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133;
636 pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134;
637 pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135;
638 pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136;
639 pub const KVM_CAP_MIPS_VZ: u32 = 137;
640 pub const KVM_CAP_MIPS_TE: u32 = 138;
641 pub const KVM_CAP_MIPS_64BIT: u32 = 139;
642 pub const KVM_CAP_S390_GS: u32 = 140;
643 pub const KVM_CAP_S390_AIS: u32 = 141;
644 pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142;
645 pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143;
646 pub const KVM_CAP_ARM_USER_IRQ: u32 = 144;
647 pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145;
648 pub const KVM_CAP_PPC_FWNMI: u32 = 146;
649 pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147;
650 pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148;
651 pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149;
652 pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150;
653 pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151;
654 pub const KVM_CAP_S390_BPB: u32 = 152;
655 pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153;
656 pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154;
657 pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155;
658 pub const KVM_CAP_S390_HPAGE_1M: u32 = 156;
659 pub const KVM_CAP_NESTED_STATE: u32 = 157;
660 pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158;
661 pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159;
662 pub const KVM_CAP_PPC_NESTED_HV: u32 = 160;
663 pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161;
664 pub const KVM_CAP_COALESCED_PIO: u32 = 162;
665 pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163;
666 pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164;
667 pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165;
668 pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166;
669 pub const KVM_CAP_HYPERV_CPUID: u32 = 167;
670 pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168;
671 pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169;
672 pub const KVM_CAP_ARM_SVE: u32 = 170;
673 pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171;
674 pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172;
675 pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173;
676 pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174;
677 pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175;
678 pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176;
679 pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177;
680 pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178;
681 pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179;
682 pub const KVM_CAP_S390_PROTECTED: u32 = 180;
683 pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181;
684 pub const KVM_CAP_HALT_POLL: u32 = 182;
685 pub const KVM_CAP_ASYNC_PF_INT: u32 = 183;
686 pub const KVM_CAP_LAST_CPU: u32 = 184;
687 pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185;
688 pub const KVM_CAP_S390_DIAG318: u32 = 186;
689 pub const KVM_CAP_STEAL_TIME: u32 = 187;
690 pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188;
691 pub const KVM_CAP_X86_MSR_FILTER: u32 = 189;
692 pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190;
693 pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191;
694 pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192;
695 pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193;
696 pub const KVM_CAP_PPC_DAWR1: u32 = 194;
697 pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195;
698 pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196;
699 pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197;
700 pub const KVM_CAP_PTP_KVM: u32 = 198;
701 pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199;
702 pub const KVM_CAP_SREGS2: u32 = 200;
703 pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201;
704 pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202;
705 pub const KVM_CAP_BINARY_STATS_FD: u32 = 203;
706 pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204;
707 pub const KVM_CAP_ARM_MTE: u32 = 205;
708 pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206;
709 pub const KVM_CAP_VM_GPA_BITS: u32 = 207;
710 pub const KVM_CAP_XSAVE2: u32 = 208;
711 pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209;
712 pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210;
713 pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211;
714 pub const KVM_CAP_PMU_CAPABILITY: u32 = 212;
715 pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213;
716 pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214;
717 pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215;
718 pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216;
719 pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217;
720 pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218;
721 pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219;
722 pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220;
723 pub const KVM_CAP_S390_ZPCI_OP: u32 = 221;
724 pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222;
725 pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223;
726 pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224;
727 pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225;
728 pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226;
729 pub const KVM_CAP_COUNTER_OFFSET: u32 = 227;
730 pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228;
731 pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229;
732 pub const KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES: u32 = 230;
733 pub const KVM_CAP_USER_MEMORY2: u32 = 231;
734 pub const KVM_CAP_MEMORY_FAULT_INFO: u32 = 232;
735 pub const KVM_CAP_MEMORY_ATTRIBUTES: u32 = 233;
736 pub const KVM_CAP_GUEST_MEMFD: u32 = 234;
737 pub const KVM_CAP_VM_TYPES: u32 = 235;
738 pub const KVM_CAP_PRE_FAULT_MEMORY: u32 = 236;
739 pub const KVM_CAP_X86_APIC_BUS_CYCLES_NS: u32 = 237;
740 pub const KVM_CAP_X86_GUEST_MODE: u32 = 238;
741 pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA: u32 = 239;
742 pub const KVM_CAP_GET_CUR_CPUFREQ: u32 = 512;
743 pub const KVM_CAP_UTIL_HINT: u32 = 513;
744 pub const KVM_CAP_GET_CPUFREQ_TBL: u32 = 514;
745 pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1;
746 pub const KVM_IRQ_ROUTING_MSI: u32 = 2;
747 pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3;
748 pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4;
749 pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5;
750 pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1;
751 pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2;
752 pub const KVM_CLOCK_TSC_STABLE: u32 = 2;
753 pub const KVM_CLOCK_REALTIME: u32 = 4;
754 pub const KVM_CLOCK_HOST_TSC: u32 = 8;
755 pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0;
756 pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1;
757 pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936;
758 pub const KVM_REG_GENERIC: u32 = 0;
759 pub const KVM_REG_PPC: u64 = 1152921504606846976;
760 pub const KVM_REG_X86: u64 = 2305843009213693952;
761 pub const KVM_REG_IA64: u64 = 3458764513820540928;
762 pub const KVM_REG_ARM: u64 = 4611686018427387904;
763 pub const KVM_REG_S390: u64 = 5764607523034234880;
764 pub const KVM_REG_ARM64: u64 = 6917529027641081856;
765 pub const KVM_REG_MIPS: u64 = 8070450532247928832;
766 pub const KVM_REG_RISCV: i64 = -9223372036854775808;
767 pub const KVM_REG_LOONGARCH: i64 = -8070450532247928832;
768 pub const KVM_REG_SIZE_SHIFT: u32 = 52;
769 pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440;
770 pub const KVM_REG_SIZE_U8: u32 = 0;
771 pub const KVM_REG_SIZE_U16: u64 = 4503599627370496;
772 pub const KVM_REG_SIZE_U32: u64 = 9007199254740992;
773 pub const KVM_REG_SIZE_U64: u64 = 13510798882111488;
774 pub const KVM_REG_SIZE_U128: u64 = 18014398509481984;
775 pub const KVM_REG_SIZE_U256: u64 = 22517998136852480;
776 pub const KVM_REG_SIZE_U512: u64 = 27021597764222976;
777 pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472;
778 pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968;
779 pub const KVM_MSI_VALID_DEVID: u32 = 1;
780 pub const KVM_CREATE_DEVICE_TEST: u32 = 1;
781 pub const KVM_DEV_VFIO_FILE: u32 = 1;
782 pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1;
783 pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2;
784 pub const KVM_DEV_VFIO_GROUP: u32 = 1;
785 pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1;
786 pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2;
787 pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3;
788 pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1;
789 pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2;
790 pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1;
791 pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2;
792 pub const KVM_DIRTY_GFN_F_MASK: u32 = 3;
793 pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1;
794 pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2;
795 pub const KVM_PMU_CAP_DISABLE: u32 = 1;
796 pub const KVM_STATS_TYPE_SHIFT: u32 = 0;
797 pub const KVM_STATS_TYPE_MASK: u32 = 15;
798 pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0;
799 pub const KVM_STATS_TYPE_INSTANT: u32 = 1;
800 pub const KVM_STATS_TYPE_PEAK: u32 = 2;
801 pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3;
802 pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4;
803 pub const KVM_STATS_TYPE_MAX: u32 = 4;
804 pub const KVM_STATS_UNIT_SHIFT: u32 = 4;
805 pub const KVM_STATS_UNIT_MASK: u32 = 240;
806 pub const KVM_STATS_UNIT_NONE: u32 = 0;
807 pub const KVM_STATS_UNIT_BYTES: u32 = 16;
808 pub const KVM_STATS_UNIT_SECONDS: u32 = 32;
809 pub const KVM_STATS_UNIT_CYCLES: u32 = 48;
810 pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64;
811 pub const KVM_STATS_UNIT_MAX: u32 = 64;
812 pub const KVM_STATS_BASE_SHIFT: u32 = 8;
813 pub const KVM_STATS_BASE_MASK: u32 = 3840;
814 pub const KVM_STATS_BASE_POW10: u32 = 0;
815 pub const KVM_STATS_BASE_POW2: u32 = 256;
816 pub const KVM_STATS_BASE_MAX: u32 = 256;
817 pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1;
818 pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2;
819 pub const KVM_MEMORY_ATTRIBUTE_PRIVATE: u32 = 8;
820 pub type __s128 = i128;
821 pub type __u128 = u128;
822 pub type __le16 = u16;
823 pub type __be16 = u16;
824 pub type __le32 = u32;
825 pub type __be32 = u32;
826 pub type __le64 = u64;
827 pub type __be64 = u64;
828 pub type __sum16 = u16;
829 pub type __wsum = u32;
830 pub type __poll_t = ::std::os::raw::c_uint;
831 #[repr(C)]
832 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
833 pub struct user_pt_regs {
834     pub regs: [u64; 31usize],
835     pub sp: u64,
836     pub pc: u64,
837     pub pstate: u64,
838 }
839 #[repr(C)]
840 #[repr(align(16))]
841 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
842 pub struct user_fpsimd_state {
843     pub vregs: [__uint128_t; 32usize],
844     pub fpsr: u32,
845     pub fpcr: u32,
846     pub __reserved: [u32; 2usize],
847 }
848 #[repr(C)]
849 #[derive(Debug, Default, Copy, Clone)]
850 pub struct user_hwdebug_state {
851     pub dbg_info: u32,
852     pub pad: u32,
853     pub dbg_regs: [user_hwdebug_state__bindgen_ty_1; 16usize],
854 }
855 #[repr(C)]
856 #[derive(Debug, Default, Copy, Clone)]
857 pub struct user_hwdebug_state__bindgen_ty_1 {
858     pub addr: u64,
859     pub ctrl: u32,
860     pub pad: u32,
861 }
862 #[repr(C)]
863 #[derive(Debug, Default, Copy, Clone)]
864 pub struct user_sve_header {
865     pub size: u32,
866     pub max_size: u32,
867     pub vl: u16,
868     pub max_vl: u16,
869     pub flags: u16,
870     pub __reserved: u16,
871 }
872 #[repr(C)]
873 #[derive(Debug, Default, Copy, Clone)]
874 pub struct user_pac_mask {
875     pub data_mask: u64,
876     pub insn_mask: u64,
877 }
878 #[repr(C)]
879 #[repr(align(16))]
880 #[derive(Debug, Default, Copy, Clone)]
881 pub struct user_pac_address_keys {
882     pub apiakey: __uint128_t,
883     pub apibkey: __uint128_t,
884     pub apdakey: __uint128_t,
885     pub apdbkey: __uint128_t,
886 }
887 #[repr(C)]
888 #[repr(align(16))]
889 #[derive(Debug, Default, Copy, Clone)]
890 pub struct user_pac_generic_keys {
891     pub apgakey: __uint128_t,
892 }
893 #[repr(C)]
894 #[derive(Debug, Default, Copy, Clone)]
895 pub struct user_za_header {
896     pub size: u32,
897     pub max_size: u32,
898     pub vl: u16,
899     pub max_vl: u16,
900     pub flags: u16,
901     pub __reserved: u16,
902 }
903 #[repr(C)]
904 #[repr(align(16))]
905 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
906 pub struct kvm_regs {
907     pub regs: user_pt_regs,
908     pub sp_el1: u64,
909     pub elr_el1: u64,
910     pub spsr: [u64; 5usize],
911     pub __bindgen_padding_0: u64,
912     pub fp_regs: user_fpsimd_state,
913 }
914 #[repr(C)]
915 #[derive(Debug, Default, Copy, Clone)]
916 pub struct kvm_vcpu_init {
917     pub target: u32,
918     pub features: [u32; 7usize],
919 }
920 #[repr(C)]
921 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
922 pub struct kvm_sregs {}
923 #[repr(C)]
924 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
925 pub struct kvm_fpu {}
926 #[repr(C)]
927 #[derive(Debug, Default, Copy, Clone)]
928 pub struct kvm_guest_debug_arch {
929     pub dbg_bcr: [u64; 16usize],
930     pub dbg_bvr: [u64; 16usize],
931     pub dbg_wcr: [u64; 16usize],
932     pub dbg_wvr: [u64; 16usize],
933 }
934 #[repr(C)]
935 #[derive(Debug, Default, Copy, Clone)]
936 pub struct kvm_debug_exit_arch {
937     pub hsr: u32,
938     pub hsr_high: u32,
939     pub far: u64,
940 }
941 #[repr(C)]
942 #[derive(Debug, Default, Copy, Clone)]
943 pub struct kvm_sync_regs {
944     pub device_irq_level: u64,
945 }
946 #[repr(C)]
947 #[derive(Debug, Default, Copy, Clone)]
948 pub struct kvm_pmu_event_filter {
949     pub base_event: u16,
950     pub nevents: u16,
951     pub action: u8,
952     pub pad: [u8; 3usize],
953 }
954 #[repr(C)]
955 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
956 pub struct kvm_vcpu_events {
957     pub exception: kvm_vcpu_events__bindgen_ty_1,
958     pub reserved: [u32; 12usize],
959 }
960 #[repr(C)]
961 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
962 pub struct kvm_vcpu_events__bindgen_ty_1 {
963     pub serror_pending: u8,
964     pub serror_has_esr: u8,
965     pub ext_dabt_pending: u8,
966     pub pad: [u8; 5usize],
967     pub serror_esr: u64,
968 }
969 #[repr(C)]
970 #[derive(Debug, Copy, Clone)]
971 pub struct kvm_arm_copy_mte_tags {
972     pub guest_ipa: u64,
973     pub length: u64,
974     pub addr: *mut ::std::os::raw::c_void,
975     pub flags: u64,
976     pub reserved: [u64; 2usize],
977 }
978 impl Default for kvm_arm_copy_mte_tags {
default() -> Self979     fn default() -> Self {
980         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
981         unsafe {
982             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
983             s.assume_init()
984         }
985     }
986 }
987 #[repr(C)]
988 #[derive(Debug, Default, Copy, Clone)]
989 pub struct kvm_arm_counter_offset {
990     pub counter_offset: u64,
991     pub reserved: u64,
992 }
993 pub const KVM_REG_ARM_STD_BIT_TRNG_V1_0: _bindgen_ty_1 = 0;
994 pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
995 pub const KVM_REG_ARM_STD_HYP_BIT_PV_TIME: _bindgen_ty_2 = 0;
996 pub type _bindgen_ty_2 = ::std::os::raw::c_uint;
997 pub const KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT: _bindgen_ty_3 = 0;
998 pub const KVM_REG_ARM_VENDOR_HYP_BIT_PTP: _bindgen_ty_3 = 1;
999 pub type _bindgen_ty_3 = ::std::os::raw::c_uint;
1000 pub const kvm_smccc_filter_action_KVM_SMCCC_FILTER_HANDLE: kvm_smccc_filter_action = 0;
1001 pub const kvm_smccc_filter_action_KVM_SMCCC_FILTER_DENY: kvm_smccc_filter_action = 1;
1002 pub const kvm_smccc_filter_action_KVM_SMCCC_FILTER_FWD_TO_USER: kvm_smccc_filter_action = 2;
1003 pub type kvm_smccc_filter_action = ::std::os::raw::c_uint;
1004 #[repr(C)]
1005 #[derive(Debug, Default, Copy, Clone)]
1006 pub struct kvm_smccc_filter {
1007     pub base: u32,
1008     pub nr_functions: u32,
1009     pub action: u8,
1010     pub pad: [u8; 15usize],
1011 }
1012 #[repr(C)]
1013 #[derive(Debug, Default, Copy, Clone)]
1014 pub struct reg_mask_range {
1015     pub addr: u64,
1016     pub range: u32,
1017     pub reserved: [u32; 13usize],
1018 }
1019 #[repr(C)]
1020 #[derive(Debug, Default, Copy, Clone)]
1021 pub struct kvm_userspace_memory_region {
1022     pub slot: u32,
1023     pub flags: u32,
1024     pub guest_phys_addr: u64,
1025     pub memory_size: u64,
1026     pub userspace_addr: u64,
1027 }
1028 #[repr(C)]
1029 #[derive(Debug, Default, Copy, Clone)]
1030 pub struct kvm_userspace_memory_region2 {
1031     pub slot: u32,
1032     pub flags: u32,
1033     pub guest_phys_addr: u64,
1034     pub memory_size: u64,
1035     pub userspace_addr: u64,
1036     pub guest_memfd_offset: u64,
1037     pub guest_memfd: u32,
1038     pub pad1: u32,
1039     pub pad2: [u64; 14usize],
1040 }
1041 #[repr(C)]
1042 #[derive(Copy, Clone)]
1043 pub struct kvm_irq_level {
1044     pub __bindgen_anon_1: kvm_irq_level__bindgen_ty_1,
1045     pub level: u32,
1046 }
1047 #[repr(C)]
1048 #[derive(Copy, Clone)]
1049 pub union kvm_irq_level__bindgen_ty_1 {
1050     pub irq: u32,
1051     pub status: i32,
1052 }
1053 impl Default for kvm_irq_level__bindgen_ty_1 {
default() -> Self1054     fn default() -> Self {
1055         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1056         unsafe {
1057             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1058             s.assume_init()
1059         }
1060     }
1061 }
1062 impl Default for kvm_irq_level {
default() -> Self1063     fn default() -> Self {
1064         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1065         unsafe {
1066             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1067             s.assume_init()
1068         }
1069     }
1070 }
1071 #[repr(C)]
1072 #[derive(Copy, Clone)]
1073 pub struct kvm_irqchip {
1074     pub chip_id: u32,
1075     pub pad: u32,
1076     pub chip: kvm_irqchip__bindgen_ty_1,
1077 }
1078 #[repr(C)]
1079 #[derive(Copy, Clone)]
1080 pub union kvm_irqchip__bindgen_ty_1 {
1081     pub dummy: [::std::os::raw::c_char; 512usize],
1082 }
1083 impl Default for kvm_irqchip__bindgen_ty_1 {
default() -> Self1084     fn default() -> Self {
1085         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1086         unsafe {
1087             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1088             s.assume_init()
1089         }
1090     }
1091 }
1092 impl Default for kvm_irqchip {
default() -> Self1093     fn default() -> Self {
1094         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1095         unsafe {
1096             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1097             s.assume_init()
1098         }
1099     }
1100 }
1101 #[repr(C)]
1102 #[derive(Debug, Default, Copy, Clone)]
1103 pub struct kvm_pit_config {
1104     pub flags: u32,
1105     pub pad: [u32; 15usize],
1106 }
1107 #[repr(C)]
1108 #[derive(Copy, Clone)]
1109 pub struct kvm_hyperv_exit {
1110     pub type_: u32,
1111     pub pad1: u32,
1112     pub u: kvm_hyperv_exit__bindgen_ty_1,
1113 }
1114 #[repr(C)]
1115 #[derive(Copy, Clone)]
1116 pub union kvm_hyperv_exit__bindgen_ty_1 {
1117     pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1,
1118     pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2,
1119     pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3,
1120 }
1121 #[repr(C)]
1122 #[derive(Debug, Default, Copy, Clone)]
1123 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 {
1124     pub msr: u32,
1125     pub pad2: u32,
1126     pub control: u64,
1127     pub evt_page: u64,
1128     pub msg_page: u64,
1129 }
1130 #[repr(C)]
1131 #[derive(Debug, Default, Copy, Clone)]
1132 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 {
1133     pub input: u64,
1134     pub result: u64,
1135     pub params: [u64; 2usize],
1136 }
1137 #[repr(C)]
1138 #[derive(Debug, Default, Copy, Clone)]
1139 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 {
1140     pub msr: u32,
1141     pub pad2: u32,
1142     pub control: u64,
1143     pub status: u64,
1144     pub send_page: u64,
1145     pub recv_page: u64,
1146     pub pending_page: u64,
1147 }
1148 impl Default for kvm_hyperv_exit__bindgen_ty_1 {
default() -> Self1149     fn default() -> Self {
1150         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1151         unsafe {
1152             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1153             s.assume_init()
1154         }
1155     }
1156 }
1157 impl Default for kvm_hyperv_exit {
default() -> Self1158     fn default() -> Self {
1159         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1160         unsafe {
1161             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1162             s.assume_init()
1163         }
1164     }
1165 }
1166 #[repr(C)]
1167 #[derive(Copy, Clone)]
1168 pub struct kvm_xen_exit {
1169     pub type_: u32,
1170     pub u: kvm_xen_exit__bindgen_ty_1,
1171 }
1172 #[repr(C)]
1173 #[derive(Copy, Clone)]
1174 pub union kvm_xen_exit__bindgen_ty_1 {
1175     pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1,
1176 }
1177 #[repr(C)]
1178 #[derive(Debug, Default, Copy, Clone)]
1179 pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 {
1180     pub longmode: u32,
1181     pub cpl: u32,
1182     pub input: u64,
1183     pub result: u64,
1184     pub params: [u64; 6usize],
1185 }
1186 impl Default for kvm_xen_exit__bindgen_ty_1 {
default() -> Self1187     fn default() -> Self {
1188         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1189         unsafe {
1190             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1191             s.assume_init()
1192         }
1193     }
1194 }
1195 impl Default for kvm_xen_exit {
default() -> Self1196     fn default() -> Self {
1197         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1198         unsafe {
1199             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1200             s.assume_init()
1201         }
1202     }
1203 }
1204 #[repr(C)]
1205 #[derive(Copy, Clone)]
1206 pub struct kvm_run {
1207     pub request_interrupt_window: u8,
1208     pub immediate_exit: u8,
1209     pub padding1: [u8; 6usize],
1210     pub exit_reason: u32,
1211     pub ready_for_interrupt_injection: u8,
1212     pub if_flag: u8,
1213     pub flags: u16,
1214     pub cr8: u64,
1215     pub apic_base: u64,
1216     pub __bindgen_anon_1: kvm_run__bindgen_ty_1,
1217     pub kvm_valid_regs: u64,
1218     pub kvm_dirty_regs: u64,
1219     pub s: kvm_run__bindgen_ty_2,
1220 }
1221 #[repr(C)]
1222 #[derive(Copy, Clone)]
1223 pub union kvm_run__bindgen_ty_1 {
1224     pub hw: kvm_run__bindgen_ty_1__bindgen_ty_1,
1225     pub fail_entry: kvm_run__bindgen_ty_1__bindgen_ty_2,
1226     pub ex: kvm_run__bindgen_ty_1__bindgen_ty_3,
1227     pub io: kvm_run__bindgen_ty_1__bindgen_ty_4,
1228     pub debug: kvm_run__bindgen_ty_1__bindgen_ty_5,
1229     pub mmio: kvm_run__bindgen_ty_1__bindgen_ty_6,
1230     pub iocsr_io: kvm_run__bindgen_ty_1__bindgen_ty_7,
1231     pub hypercall: kvm_run__bindgen_ty_1__bindgen_ty_8,
1232     pub tpr_access: kvm_run__bindgen_ty_1__bindgen_ty_9,
1233     pub s390_sieic: kvm_run__bindgen_ty_1__bindgen_ty_10,
1234     pub s390_reset_flags: u64,
1235     pub s390_ucontrol: kvm_run__bindgen_ty_1__bindgen_ty_11,
1236     pub dcr: kvm_run__bindgen_ty_1__bindgen_ty_12,
1237     pub internal: kvm_run__bindgen_ty_1__bindgen_ty_13,
1238     pub emulation_failure: kvm_run__bindgen_ty_1__bindgen_ty_14,
1239     pub osi: kvm_run__bindgen_ty_1__bindgen_ty_15,
1240     pub papr_hcall: kvm_run__bindgen_ty_1__bindgen_ty_16,
1241     pub s390_tsch: kvm_run__bindgen_ty_1__bindgen_ty_17,
1242     pub epr: kvm_run__bindgen_ty_1__bindgen_ty_18,
1243     pub system_event: kvm_run__bindgen_ty_1__bindgen_ty_19,
1244     pub s390_stsi: kvm_run__bindgen_ty_1__bindgen_ty_20,
1245     pub eoi: kvm_run__bindgen_ty_1__bindgen_ty_21,
1246     pub hyperv: kvm_hyperv_exit,
1247     pub arm_nisv: kvm_run__bindgen_ty_1__bindgen_ty_22,
1248     pub msr: kvm_run__bindgen_ty_1__bindgen_ty_23,
1249     pub xen: kvm_xen_exit,
1250     pub riscv_sbi: kvm_run__bindgen_ty_1__bindgen_ty_24,
1251     pub riscv_csr: kvm_run__bindgen_ty_1__bindgen_ty_25,
1252     pub notify: kvm_run__bindgen_ty_1__bindgen_ty_26,
1253     pub memory_fault: kvm_run__bindgen_ty_1__bindgen_ty_27,
1254     pub padding: [::std::os::raw::c_char; 256usize],
1255 }
1256 #[repr(C)]
1257 #[derive(Debug, Default, Copy, Clone)]
1258 pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 {
1259     pub hardware_exit_reason: u64,
1260 }
1261 #[repr(C)]
1262 #[derive(Debug, Default, Copy, Clone)]
1263 pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 {
1264     pub hardware_entry_failure_reason: u64,
1265     pub cpu: u32,
1266 }
1267 #[repr(C)]
1268 #[derive(Debug, Default, Copy, Clone)]
1269 pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 {
1270     pub exception: u32,
1271     pub error_code: u32,
1272 }
1273 #[repr(C)]
1274 #[derive(Debug, Default, Copy, Clone)]
1275 pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 {
1276     pub direction: u8,
1277     pub size: u8,
1278     pub port: u16,
1279     pub count: u32,
1280     pub data_offset: u64,
1281 }
1282 #[repr(C)]
1283 #[derive(Debug, Default, Copy, Clone)]
1284 pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 {
1285     pub arch: kvm_debug_exit_arch,
1286 }
1287 #[repr(C)]
1288 #[derive(Debug, Default, Copy, Clone)]
1289 pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 {
1290     pub phys_addr: u64,
1291     pub data: [u8; 8usize],
1292     pub len: u32,
1293     pub is_write: u8,
1294 }
1295 #[repr(C)]
1296 #[derive(Debug, Default, Copy, Clone)]
1297 pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 {
1298     pub phys_addr: u64,
1299     pub data: [u8; 8usize],
1300     pub len: u32,
1301     pub is_write: u8,
1302 }
1303 #[repr(C)]
1304 #[derive(Copy, Clone)]
1305 pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 {
1306     pub nr: u64,
1307     pub args: [u64; 6usize],
1308     pub ret: u64,
1309     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1,
1310 }
1311 #[repr(C)]
1312 #[derive(Copy, Clone)]
1313 pub union kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {
1314     pub longmode: u32,
1315     pub flags: u64,
1316 }
1317 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {
default() -> Self1318     fn default() -> Self {
1319         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1320         unsafe {
1321             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1322             s.assume_init()
1323         }
1324     }
1325 }
1326 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 {
default() -> Self1327     fn default() -> Self {
1328         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1329         unsafe {
1330             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1331             s.assume_init()
1332         }
1333     }
1334 }
1335 #[repr(C)]
1336 #[derive(Debug, Default, Copy, Clone)]
1337 pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 {
1338     pub rip: u64,
1339     pub is_write: u32,
1340     pub pad: u32,
1341 }
1342 #[repr(C)]
1343 #[derive(Debug, Default, Copy, Clone)]
1344 pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 {
1345     pub icptcode: u8,
1346     pub ipa: u16,
1347     pub ipb: u32,
1348 }
1349 #[repr(C)]
1350 #[derive(Debug, Default, Copy, Clone)]
1351 pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 {
1352     pub trans_exc_code: u64,
1353     pub pgm_code: u32,
1354 }
1355 #[repr(C)]
1356 #[derive(Debug, Default, Copy, Clone)]
1357 pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 {
1358     pub dcrn: u32,
1359     pub data: u32,
1360     pub is_write: u8,
1361 }
1362 #[repr(C)]
1363 #[derive(Debug, Default, Copy, Clone)]
1364 pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 {
1365     pub suberror: u32,
1366     pub ndata: u32,
1367     pub data: [u64; 16usize],
1368 }
1369 #[repr(C)]
1370 #[derive(Copy, Clone)]
1371 pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 {
1372     pub suberror: u32,
1373     pub ndata: u32,
1374     pub flags: u64,
1375     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1,
1376 }
1377 #[repr(C)]
1378 #[derive(Copy, Clone)]
1379 pub union kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {
1380     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1,
1381 }
1382 #[repr(C)]
1383 #[derive(Debug, Default, Copy, Clone)]
1384 pub struct kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 {
1385     pub insn_size: u8,
1386     pub insn_bytes: [u8; 15usize],
1387 }
1388 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {
default() -> Self1389     fn default() -> Self {
1390         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1391         unsafe {
1392             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1393             s.assume_init()
1394         }
1395     }
1396 }
1397 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 {
default() -> Self1398     fn default() -> Self {
1399         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1400         unsafe {
1401             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1402             s.assume_init()
1403         }
1404     }
1405 }
1406 #[repr(C)]
1407 #[derive(Debug, Default, Copy, Clone)]
1408 pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 {
1409     pub gprs: [u64; 32usize],
1410 }
1411 #[repr(C)]
1412 #[derive(Debug, Default, Copy, Clone)]
1413 pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 {
1414     pub nr: u64,
1415     pub ret: u64,
1416     pub args: [u64; 9usize],
1417 }
1418 #[repr(C)]
1419 #[derive(Debug, Default, Copy, Clone)]
1420 pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 {
1421     pub subchannel_id: u16,
1422     pub subchannel_nr: u16,
1423     pub io_int_parm: u32,
1424     pub io_int_word: u32,
1425     pub ipb: u32,
1426     pub dequeued: u8,
1427 }
1428 #[repr(C)]
1429 #[derive(Debug, Default, Copy, Clone)]
1430 pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 {
1431     pub epr: u32,
1432 }
1433 #[repr(C)]
1434 #[derive(Copy, Clone)]
1435 pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 {
1436     pub type_: u32,
1437     pub ndata: u32,
1438     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1,
1439 }
1440 #[repr(C)]
1441 #[derive(Copy, Clone)]
1442 pub union kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {
1443     pub flags: u64,
1444     pub data: [u64; 16usize],
1445 }
1446 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {
default() -> Self1447     fn default() -> Self {
1448         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1449         unsafe {
1450             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1451             s.assume_init()
1452         }
1453     }
1454 }
1455 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 {
default() -> Self1456     fn default() -> Self {
1457         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1458         unsafe {
1459             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1460             s.assume_init()
1461         }
1462     }
1463 }
1464 #[repr(C)]
1465 #[derive(Debug, Default, Copy, Clone)]
1466 pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 {
1467     pub addr: u64,
1468     pub ar: u8,
1469     pub reserved: u8,
1470     pub fc: u8,
1471     pub sel1: u8,
1472     pub sel2: u16,
1473 }
1474 #[repr(C)]
1475 #[derive(Debug, Default, Copy, Clone)]
1476 pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 {
1477     pub vector: u8,
1478 }
1479 #[repr(C)]
1480 #[derive(Debug, Default, Copy, Clone)]
1481 pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 {
1482     pub esr_iss: u64,
1483     pub fault_ipa: u64,
1484 }
1485 #[repr(C)]
1486 #[derive(Debug, Default, Copy, Clone)]
1487 pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 {
1488     pub error: u8,
1489     pub pad: [u8; 7usize],
1490     pub reason: u32,
1491     pub index: u32,
1492     pub data: u64,
1493 }
1494 #[repr(C)]
1495 #[derive(Debug, Default, Copy, Clone)]
1496 pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 {
1497     pub extension_id: ::std::os::raw::c_ulong,
1498     pub function_id: ::std::os::raw::c_ulong,
1499     pub args: [::std::os::raw::c_ulong; 6usize],
1500     pub ret: [::std::os::raw::c_ulong; 2usize],
1501 }
1502 #[repr(C)]
1503 #[derive(Debug, Default, Copy, Clone)]
1504 pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 {
1505     pub csr_num: ::std::os::raw::c_ulong,
1506     pub new_value: ::std::os::raw::c_ulong,
1507     pub write_mask: ::std::os::raw::c_ulong,
1508     pub ret_value: ::std::os::raw::c_ulong,
1509 }
1510 #[repr(C)]
1511 #[derive(Debug, Default, Copy, Clone)]
1512 pub struct kvm_run__bindgen_ty_1__bindgen_ty_26 {
1513     pub flags: u32,
1514 }
1515 #[repr(C)]
1516 #[derive(Debug, Default, Copy, Clone)]
1517 pub struct kvm_run__bindgen_ty_1__bindgen_ty_27 {
1518     pub flags: u64,
1519     pub gpa: u64,
1520     pub size: u64,
1521 }
1522 impl Default for kvm_run__bindgen_ty_1 {
default() -> Self1523     fn default() -> Self {
1524         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1525         unsafe {
1526             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1527             s.assume_init()
1528         }
1529     }
1530 }
1531 #[repr(C)]
1532 #[derive(Copy, Clone)]
1533 pub union kvm_run__bindgen_ty_2 {
1534     pub regs: kvm_sync_regs,
1535     pub padding: [::std::os::raw::c_char; 2048usize],
1536 }
1537 impl Default for kvm_run__bindgen_ty_2 {
default() -> Self1538     fn default() -> Self {
1539         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1540         unsafe {
1541             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1542             s.assume_init()
1543         }
1544     }
1545 }
1546 impl Default for kvm_run {
default() -> Self1547     fn default() -> Self {
1548         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1549         unsafe {
1550             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1551             s.assume_init()
1552         }
1553     }
1554 }
1555 #[repr(C)]
1556 #[derive(Copy, Clone)]
1557 pub struct kvm_coalesced_mmio_zone {
1558     pub addr: u64,
1559     pub size: u32,
1560     pub __bindgen_anon_1: kvm_coalesced_mmio_zone__bindgen_ty_1,
1561 }
1562 #[repr(C)]
1563 #[derive(Copy, Clone)]
1564 pub union kvm_coalesced_mmio_zone__bindgen_ty_1 {
1565     pub pad: u32,
1566     pub pio: u32,
1567 }
1568 impl Default for kvm_coalesced_mmio_zone__bindgen_ty_1 {
default() -> Self1569     fn default() -> Self {
1570         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1571         unsafe {
1572             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1573             s.assume_init()
1574         }
1575     }
1576 }
1577 impl Default for kvm_coalesced_mmio_zone {
default() -> Self1578     fn default() -> Self {
1579         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1580         unsafe {
1581             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1582             s.assume_init()
1583         }
1584     }
1585 }
1586 #[repr(C)]
1587 #[derive(Copy, Clone)]
1588 pub struct kvm_coalesced_mmio {
1589     pub phys_addr: u64,
1590     pub len: u32,
1591     pub __bindgen_anon_1: kvm_coalesced_mmio__bindgen_ty_1,
1592     pub data: [u8; 8usize],
1593 }
1594 #[repr(C)]
1595 #[derive(Copy, Clone)]
1596 pub union kvm_coalesced_mmio__bindgen_ty_1 {
1597     pub pad: u32,
1598     pub pio: u32,
1599 }
1600 impl Default for kvm_coalesced_mmio__bindgen_ty_1 {
default() -> Self1601     fn default() -> Self {
1602         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1603         unsafe {
1604             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1605             s.assume_init()
1606         }
1607     }
1608 }
1609 impl Default for kvm_coalesced_mmio {
default() -> Self1610     fn default() -> Self {
1611         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1612         unsafe {
1613             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1614             s.assume_init()
1615         }
1616     }
1617 }
1618 #[repr(C)]
1619 pub struct kvm_coalesced_mmio_ring {
1620     pub first: u32,
1621     pub last: u32,
1622     pub coalesced_mmio: __IncompleteArrayField<kvm_coalesced_mmio>,
1623 }
1624 impl Default for kvm_coalesced_mmio_ring {
default() -> Self1625     fn default() -> Self {
1626         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1627         unsafe {
1628             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1629             s.assume_init()
1630         }
1631     }
1632 }
1633 #[repr(C)]
1634 #[derive(Debug, Default, Copy, Clone)]
1635 pub struct kvm_translation {
1636     pub linear_address: u64,
1637     pub physical_address: u64,
1638     pub valid: u8,
1639     pub writeable: u8,
1640     pub usermode: u8,
1641     pub pad: [u8; 5usize],
1642 }
1643 #[repr(C)]
1644 #[derive(Debug, Default, Copy, Clone)]
1645 pub struct kvm_interrupt {
1646     pub irq: u32,
1647 }
1648 #[repr(C)]
1649 #[derive(Copy, Clone)]
1650 pub struct kvm_dirty_log {
1651     pub slot: u32,
1652     pub padding1: u32,
1653     pub __bindgen_anon_1: kvm_dirty_log__bindgen_ty_1,
1654 }
1655 #[repr(C)]
1656 #[derive(Copy, Clone)]
1657 pub union kvm_dirty_log__bindgen_ty_1 {
1658     pub dirty_bitmap: *mut ::std::os::raw::c_void,
1659     pub padding2: u64,
1660 }
1661 impl Default for kvm_dirty_log__bindgen_ty_1 {
default() -> Self1662     fn default() -> Self {
1663         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1664         unsafe {
1665             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1666             s.assume_init()
1667         }
1668     }
1669 }
1670 impl Default for kvm_dirty_log {
default() -> Self1671     fn default() -> Self {
1672         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1673         unsafe {
1674             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1675             s.assume_init()
1676         }
1677     }
1678 }
1679 #[repr(C)]
1680 #[derive(Copy, Clone)]
1681 pub struct kvm_clear_dirty_log {
1682     pub slot: u32,
1683     pub num_pages: u32,
1684     pub first_page: u64,
1685     pub __bindgen_anon_1: kvm_clear_dirty_log__bindgen_ty_1,
1686 }
1687 #[repr(C)]
1688 #[derive(Copy, Clone)]
1689 pub union kvm_clear_dirty_log__bindgen_ty_1 {
1690     pub dirty_bitmap: *mut ::std::os::raw::c_void,
1691     pub padding2: u64,
1692 }
1693 impl Default for kvm_clear_dirty_log__bindgen_ty_1 {
default() -> Self1694     fn default() -> Self {
1695         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1696         unsafe {
1697             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1698             s.assume_init()
1699         }
1700     }
1701 }
1702 impl Default for kvm_clear_dirty_log {
default() -> Self1703     fn default() -> Self {
1704         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1705         unsafe {
1706             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1707             s.assume_init()
1708         }
1709     }
1710 }
1711 #[repr(C)]
1712 #[derive(Debug, Default)]
1713 pub struct kvm_signal_mask {
1714     pub len: u32,
1715     pub sigset: __IncompleteArrayField<u8>,
1716 }
1717 #[repr(C)]
1718 #[derive(Debug, Default, Copy, Clone)]
1719 pub struct kvm_tpr_access_ctl {
1720     pub enabled: u32,
1721     pub flags: u32,
1722     pub reserved: [u32; 8usize],
1723 }
1724 #[repr(C)]
1725 #[derive(Debug, Default, Copy, Clone)]
1726 pub struct kvm_vapic_addr {
1727     pub vapic_addr: u64,
1728 }
1729 #[repr(C)]
1730 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1731 pub struct kvm_mp_state {
1732     pub mp_state: u32,
1733 }
1734 #[repr(C)]
1735 #[derive(Debug, Default, Copy, Clone)]
1736 pub struct kvm_guest_debug {
1737     pub control: u32,
1738     pub pad: u32,
1739     pub arch: kvm_guest_debug_arch,
1740 }
1741 pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_4 = 0;
1742 pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_4 = 1;
1743 pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_4 = 2;
1744 pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_4 = 3;
1745 pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_4 = 4;
1746 pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_4 = 5;
1747 pub type _bindgen_ty_4 = ::std::os::raw::c_uint;
1748 #[repr(C)]
1749 #[derive(Debug, Copy, Clone)]
1750 pub struct kvm_ioeventfd {
1751     pub datamatch: u64,
1752     pub addr: u64,
1753     pub len: u32,
1754     pub fd: i32,
1755     pub flags: u32,
1756     pub pad: [u8; 36usize],
1757 }
1758 impl Default for kvm_ioeventfd {
default() -> Self1759     fn default() -> Self {
1760         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1761         unsafe {
1762             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1763             s.assume_init()
1764         }
1765     }
1766 }
1767 #[repr(C)]
1768 #[derive(Debug, Copy, Clone)]
1769 pub struct kvm_enable_cap {
1770     pub cap: u32,
1771     pub flags: u32,
1772     pub args: [u64; 4usize],
1773     pub pad: [u8; 64usize],
1774 }
1775 impl Default for kvm_enable_cap {
default() -> Self1776     fn default() -> Self {
1777         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1778         unsafe {
1779             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1780             s.assume_init()
1781         }
1782     }
1783 }
1784 #[repr(C)]
1785 #[derive(Debug, Default, Copy, Clone)]
1786 pub struct kvm_irq_routing_irqchip {
1787     pub irqchip: u32,
1788     pub pin: u32,
1789 }
1790 #[repr(C)]
1791 #[derive(Copy, Clone)]
1792 pub struct kvm_irq_routing_msi {
1793     pub address_lo: u32,
1794     pub address_hi: u32,
1795     pub data: u32,
1796     pub __bindgen_anon_1: kvm_irq_routing_msi__bindgen_ty_1,
1797 }
1798 #[repr(C)]
1799 #[derive(Copy, Clone)]
1800 pub union kvm_irq_routing_msi__bindgen_ty_1 {
1801     pub pad: u32,
1802     pub devid: u32,
1803 }
1804 impl Default for kvm_irq_routing_msi__bindgen_ty_1 {
default() -> Self1805     fn default() -> Self {
1806         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1807         unsafe {
1808             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1809             s.assume_init()
1810         }
1811     }
1812 }
1813 impl Default for kvm_irq_routing_msi {
default() -> Self1814     fn default() -> Self {
1815         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1816         unsafe {
1817             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1818             s.assume_init()
1819         }
1820     }
1821 }
1822 #[repr(C)]
1823 #[derive(Debug, Default, Copy, Clone)]
1824 pub struct kvm_irq_routing_s390_adapter {
1825     pub ind_addr: u64,
1826     pub summary_addr: u64,
1827     pub ind_offset: u64,
1828     pub summary_offset: u32,
1829     pub adapter_id: u32,
1830 }
1831 #[repr(C)]
1832 #[derive(Debug, Default, Copy, Clone)]
1833 pub struct kvm_irq_routing_hv_sint {
1834     pub vcpu: u32,
1835     pub sint: u32,
1836 }
1837 #[repr(C)]
1838 #[derive(Debug, Default, Copy, Clone)]
1839 pub struct kvm_irq_routing_xen_evtchn {
1840     pub port: u32,
1841     pub vcpu: u32,
1842     pub priority: u32,
1843 }
1844 #[repr(C)]
1845 #[derive(Copy, Clone)]
1846 pub struct kvm_irq_routing_entry {
1847     pub gsi: u32,
1848     pub type_: u32,
1849     pub flags: u32,
1850     pub pad: u32,
1851     pub u: kvm_irq_routing_entry__bindgen_ty_1,
1852 }
1853 #[repr(C)]
1854 #[derive(Copy, Clone)]
1855 pub union kvm_irq_routing_entry__bindgen_ty_1 {
1856     pub irqchip: kvm_irq_routing_irqchip,
1857     pub msi: kvm_irq_routing_msi,
1858     pub adapter: kvm_irq_routing_s390_adapter,
1859     pub hv_sint: kvm_irq_routing_hv_sint,
1860     pub xen_evtchn: kvm_irq_routing_xen_evtchn,
1861     pub pad: [u32; 8usize],
1862 }
1863 impl Default for kvm_irq_routing_entry__bindgen_ty_1 {
default() -> Self1864     fn default() -> Self {
1865         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1866         unsafe {
1867             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1868             s.assume_init()
1869         }
1870     }
1871 }
1872 impl Default for kvm_irq_routing_entry {
default() -> Self1873     fn default() -> Self {
1874         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1875         unsafe {
1876             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1877             s.assume_init()
1878         }
1879     }
1880 }
1881 #[repr(C)]
1882 pub struct kvm_irq_routing {
1883     pub nr: u32,
1884     pub flags: u32,
1885     pub entries: __IncompleteArrayField<kvm_irq_routing_entry>,
1886 }
1887 impl Default for kvm_irq_routing {
default() -> Self1888     fn default() -> Self {
1889         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1890         unsafe {
1891             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1892             s.assume_init()
1893         }
1894     }
1895 }
1896 #[repr(C)]
1897 #[derive(Debug, Default, Copy, Clone)]
1898 pub struct kvm_irqfd {
1899     pub fd: u32,
1900     pub gsi: u32,
1901     pub flags: u32,
1902     pub resamplefd: u32,
1903     pub pad: [u8; 16usize],
1904 }
1905 #[repr(C)]
1906 #[derive(Debug, Default, Copy, Clone)]
1907 pub struct kvm_clock_data {
1908     pub clock: u64,
1909     pub flags: u32,
1910     pub pad0: u32,
1911     pub realtime: u64,
1912     pub host_tsc: u64,
1913     pub pad: [u32; 4usize],
1914 }
1915 #[repr(C)]
1916 #[derive(Debug, Default, Copy, Clone)]
1917 pub struct kvm_config_tlb {
1918     pub params: u64,
1919     pub array: u64,
1920     pub mmu_type: u32,
1921     pub array_len: u32,
1922 }
1923 #[repr(C)]
1924 #[derive(Debug, Default, Copy, Clone)]
1925 pub struct kvm_dirty_tlb {
1926     pub bitmap: u64,
1927     pub num_dirty: u32,
1928 }
1929 #[repr(C)]
1930 #[derive(Debug, Default)]
1931 pub struct kvm_reg_list {
1932     pub n: u64,
1933     pub reg: __IncompleteArrayField<u64>,
1934 }
1935 #[repr(C)]
1936 #[derive(Debug, Default, Copy, Clone)]
1937 pub struct kvm_one_reg {
1938     pub id: u64,
1939     pub addr: u64,
1940 }
1941 #[repr(C)]
1942 #[derive(Debug, Default, Copy, Clone)]
1943 pub struct kvm_msi {
1944     pub address_lo: u32,
1945     pub address_hi: u32,
1946     pub data: u32,
1947     pub flags: u32,
1948     pub devid: u32,
1949     pub pad: [u8; 12usize],
1950 }
1951 #[repr(C)]
1952 #[derive(Debug, Default, Copy, Clone)]
1953 pub struct kvm_arm_device_addr {
1954     pub id: u64,
1955     pub addr: u64,
1956 }
1957 #[repr(C)]
1958 #[derive(Debug, Default, Copy, Clone)]
1959 pub struct kvm_create_device {
1960     pub type_: u32,
1961     pub fd: u32,
1962     pub flags: u32,
1963 }
1964 #[repr(C)]
1965 #[derive(Debug, Default, Copy, Clone)]
1966 pub struct kvm_device_attr {
1967     pub flags: u32,
1968     pub group: u32,
1969     pub attr: u64,
1970     pub addr: u64,
1971 }
1972 pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1;
1973 pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2;
1974 pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3;
1975 pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4;
1976 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5;
1977 pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6;
1978 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7;
1979 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8;
1980 pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9;
1981 pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10;
1982 pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11;
1983 pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12;
1984 pub type kvm_device_type = ::std::os::raw::c_uint;
1985 #[repr(C)]
1986 #[derive(Debug, Default, Copy, Clone)]
1987 pub struct kvm_vfio_spapr_tce {
1988     pub groupfd: i32,
1989     pub tablefd: i32,
1990 }
1991 #[repr(C)]
1992 #[derive(Debug, Default, Copy, Clone)]
1993 pub struct kvm_enc_region {
1994     pub addr: u64,
1995     pub size: u64,
1996 }
1997 #[repr(C)]
1998 #[derive(Debug, Default, Copy, Clone)]
1999 pub struct kvm_dirty_gfn {
2000     pub flags: u32,
2001     pub slot: u32,
2002     pub offset: u64,
2003 }
2004 #[repr(C)]
2005 #[derive(Debug, Default, Copy, Clone)]
2006 pub struct kvm_stats_header {
2007     pub flags: u32,
2008     pub name_size: u32,
2009     pub num_desc: u32,
2010     pub id_offset: u32,
2011     pub desc_offset: u32,
2012     pub data_offset: u32,
2013 }
2014 #[repr(C)]
2015 #[derive(Debug, Default)]
2016 pub struct kvm_stats_desc {
2017     pub flags: u32,
2018     pub exponent: i16,
2019     pub size: u16,
2020     pub offset: u32,
2021     pub bucket_size: u32,
2022     pub name: __IncompleteArrayField<::std::os::raw::c_char>,
2023 }
2024 #[repr(C)]
2025 #[derive(Debug, Default, Copy, Clone)]
2026 pub struct kvm_memory_attributes {
2027     pub address: u64,
2028     pub size: u64,
2029     pub attributes: u64,
2030     pub flags: u64,
2031 }
2032 #[repr(C)]
2033 #[derive(Debug, Default, Copy, Clone)]
2034 pub struct kvm_create_guest_memfd {
2035     pub size: u64,
2036     pub flags: u64,
2037     pub reserved: [u64; 6usize],
2038 }
2039 #[repr(C)]
2040 #[derive(Debug, Default, Copy, Clone)]
2041 pub struct kvm_pre_fault_memory {
2042     pub gpa: u64,
2043     pub size: u64,
2044     pub flags: u64,
2045     pub padding: [u64; 5usize],
2046 }
2047 pub type __uint128_t = u128;
2048