• 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::AsBytes;
13 use zerocopy::FromBytes;
14 use zerocopy::FromZeroes;
15 
16 // TODO(b/316337317): Update if new memslot flag is accepted in upstream
17 pub const KVM_MEM_NON_COHERENT_DMA: u32 = 8;
18 pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA: u32 = 236;
19 
20 // TODO(qwandor): Update this once the pKVM patches are merged upstream with a stable capability ID.
21 pub const KVM_CAP_ARM_PROTECTED_VM: u32 = 0xffbadab1;
22 pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA: u32 = 0;
23 pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO: u32 = 1;
24 pub const KVM_VM_TYPE_ARM_PROTECTED: u32 = 0x80000000;
25 pub const KVM_DEV_VFIO_PVIOMMU: u32 = 2;
26 pub const KVM_DEV_VFIO_PVIOMMU_ATTACH: u32 = 1;
27 #[repr(C)]
28 #[derive(Debug, Default, Copy, Clone)]
29 pub struct kvm_vfio_iommu_info {
30     pub device_fd: i32,
31     pub nr_sids: u32,
32 }
33 pub const KVM_DEV_VFIO_PVIOMMU_GET_INFO: u32 = 2;
34 #[repr(C)]
35 #[derive(Debug, Default, Copy, Clone)]
36 pub struct kvm_vfio_iommu_config {
37     pub device_fd: i32,
38     pub sid_idx: u32,
39     pub vsid: u32,
40 }
41 pub const KVM_PVIOMMU_SET_CONFIG: i32 = 1;
42 
43 // This is how zerocopy's author deal with bindings for __BindgenBitfieldUnit<Storage>, see:
44 // https://fuchsia-review.googlesource.com/c/859278/8/src/starnix/lib/linux_uapi/generate.py
45 unsafe impl<Storage> AsBytes for __BindgenBitfieldUnit<Storage>
46 where
47     Storage: AsBytes,
48 {
only_derive_is_allowed_to_implement_this_trait()49     fn only_derive_is_allowed_to_implement_this_trait() {}
50 }
51 
52 unsafe impl<Storage> FromBytes for __BindgenBitfieldUnit<Storage>
53 where
54     Storage: FromBytes,
55 {
only_derive_is_allowed_to_implement_this_trait()56     fn only_derive_is_allowed_to_implement_this_trait() {}
57 }
58 
59 unsafe impl<Storage> FromZeroes for __BindgenBitfieldUnit<Storage>
60 where
61     Storage: FromZeroes,
62 {
only_derive_is_allowed_to_implement_this_trait()63     fn only_derive_is_allowed_to_implement_this_trait() {}
64 }
65 
66 #[repr(C)]
67 #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
68 pub struct __BindgenBitfieldUnit<Storage> {
69     storage: Storage,
70 }
71 impl<Storage> __BindgenBitfieldUnit<Storage> {
72     #[inline]
new(storage: Storage) -> Self73     pub const fn new(storage: Storage) -> Self {
74         Self { storage }
75     }
76 }
77 impl<Storage> __BindgenBitfieldUnit<Storage>
78 where
79     Storage: AsRef<[u8]> + AsMut<[u8]>,
80 {
81     #[inline]
get_bit(&self, index: usize) -> bool82     pub fn get_bit(&self, index: usize) -> bool {
83         debug_assert!(index / 8 < self.storage.as_ref().len());
84         let byte_index = index / 8;
85         let byte = self.storage.as_ref()[byte_index];
86         let bit_index = if cfg!(target_endian = "big") {
87             7 - (index % 8)
88         } else {
89             index % 8
90         };
91         let mask = 1 << bit_index;
92         byte & mask == mask
93     }
94     #[inline]
set_bit(&mut self, index: usize, val: bool)95     pub fn set_bit(&mut self, index: usize, val: bool) {
96         debug_assert!(index / 8 < self.storage.as_ref().len());
97         let byte_index = index / 8;
98         let byte = &mut self.storage.as_mut()[byte_index];
99         let bit_index = if cfg!(target_endian = "big") {
100             7 - (index % 8)
101         } else {
102             index % 8
103         };
104         let mask = 1 << bit_index;
105         if val {
106             *byte |= mask;
107         } else {
108             *byte &= !mask;
109         }
110     }
111     #[inline]
get(&self, bit_offset: usize, bit_width: u8) -> u64112     pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
113         debug_assert!(bit_width <= 64);
114         debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
115         debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
116         let mut val = 0;
117         for i in 0..(bit_width as usize) {
118             if self.get_bit(i + bit_offset) {
119                 let index = if cfg!(target_endian = "big") {
120                     bit_width as usize - 1 - i
121                 } else {
122                     i
123                 };
124                 val |= 1 << index;
125             }
126         }
127         val
128     }
129     #[inline]
set(&mut self, bit_offset: usize, bit_width: u8, val: u64)130     pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
131         debug_assert!(bit_width <= 64);
132         debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
133         debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
134         for i in 0..(bit_width as usize) {
135             let mask = 1 << i;
136             let val_bit_is_set = val & mask == mask;
137             let index = if cfg!(target_endian = "big") {
138                 bit_width as usize - 1 - i
139             } else {
140                 i
141             };
142             self.set_bit(index + bit_offset, val_bit_is_set);
143         }
144     }
145 }
146 #[repr(C)]
147 #[derive(Default)]
148 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
149 impl<T> __IncompleteArrayField<T> {
150     #[inline]
new() -> Self151     pub const fn new() -> Self {
152         __IncompleteArrayField(::std::marker::PhantomData, [])
153     }
154     #[inline]
as_ptr(&self) -> *const T155     pub fn as_ptr(&self) -> *const T {
156         self as *const _ as *const T
157     }
158     #[inline]
as_mut_ptr(&mut self) -> *mut T159     pub fn as_mut_ptr(&mut self) -> *mut T {
160         self as *mut _ as *mut T
161     }
162     #[inline]
as_slice(&self, len: usize) -> &[T]163     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
164         ::std::slice::from_raw_parts(self.as_ptr(), len)
165     }
166     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]167     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
168         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
169     }
170 }
171 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result172     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
173         fmt.write_str("__IncompleteArrayField")
174     }
175 }
176 #[repr(C)]
177 pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
178 impl<T> __BindgenUnionField<T> {
179     #[inline]
new() -> Self180     pub const fn new() -> Self {
181         __BindgenUnionField(::std::marker::PhantomData)
182     }
183     #[inline]
as_ref(&self) -> &T184     pub unsafe fn as_ref(&self) -> &T {
185         ::std::mem::transmute(self)
186     }
187     #[inline]
as_mut(&mut self) -> &mut T188     pub unsafe fn as_mut(&mut self) -> &mut T {
189         ::std::mem::transmute(self)
190     }
191 }
192 impl<T> ::std::default::Default for __BindgenUnionField<T> {
193     #[inline]
default() -> Self194     fn default() -> Self {
195         Self::new()
196     }
197 }
198 impl<T> ::std::clone::Clone for __BindgenUnionField<T> {
199     #[inline]
clone(&self) -> Self200     fn clone(&self) -> Self {
201         *self
202     }
203 }
204 impl<T> ::std::marker::Copy for __BindgenUnionField<T> {}
205 impl<T> ::std::fmt::Debug for __BindgenUnionField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result206     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
207         fmt.write_str("__BindgenUnionField")
208     }
209 }
210 impl<T> ::std::hash::Hash for __BindgenUnionField<T> {
hash<H: ::std::hash::Hasher>(&self, _state: &mut H)211     fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {}
212 }
213 impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
eq(&self, _other: &__BindgenUnionField<T>) -> bool214     fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
215         true
216     }
217 }
218 impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
219 pub const KVM_PIO_PAGE_OFFSET: u32 = 1;
220 pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 2;
221 pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 64;
222 pub const DE_VECTOR: u32 = 0;
223 pub const DB_VECTOR: u32 = 1;
224 pub const BP_VECTOR: u32 = 3;
225 pub const OF_VECTOR: u32 = 4;
226 pub const BR_VECTOR: u32 = 5;
227 pub const UD_VECTOR: u32 = 6;
228 pub const NM_VECTOR: u32 = 7;
229 pub const DF_VECTOR: u32 = 8;
230 pub const TS_VECTOR: u32 = 10;
231 pub const NP_VECTOR: u32 = 11;
232 pub const SS_VECTOR: u32 = 12;
233 pub const GP_VECTOR: u32 = 13;
234 pub const PF_VECTOR: u32 = 14;
235 pub const MF_VECTOR: u32 = 16;
236 pub const AC_VECTOR: u32 = 17;
237 pub const MC_VECTOR: u32 = 18;
238 pub const XM_VECTOR: u32 = 19;
239 pub const VE_VECTOR: u32 = 20;
240 pub const KVM_NR_INTERRUPTS: u32 = 256;
241 pub const KVM_IOAPIC_NUM_PINS: u32 = 24;
242 pub const KVM_IRQCHIP_PIC_MASTER: u32 = 0;
243 pub const KVM_IRQCHIP_PIC_SLAVE: u32 = 1;
244 pub const KVM_IRQCHIP_IOAPIC: u32 = 2;
245 pub const KVM_NR_IRQCHIPS: u32 = 3;
246 pub const KVM_RUN_X86_SMM: u32 = 1;
247 pub const KVM_RUN_X86_BUS_LOCK: u32 = 2;
248 pub const KVM_APIC_REG_SIZE: u32 = 1024;
249 pub const KVM_SREGS2_FLAGS_PDPTRS_VALID: u32 = 1;
250 pub const KVM_MSR_FILTER_MAX_BITMAP_SIZE: u32 = 1536;
251 pub const KVM_MSR_FILTER_READ: u32 = 1;
252 pub const KVM_MSR_FILTER_WRITE: u32 = 2;
253 pub const KVM_MSR_FILTER_RANGE_VALID_MASK: u32 = 3;
254 pub const KVM_MSR_FILTER_MAX_RANGES: u32 = 16;
255 pub const KVM_MSR_FILTER_DEFAULT_ALLOW: u32 = 0;
256 pub const KVM_MSR_FILTER_DEFAULT_DENY: u32 = 1;
257 pub const KVM_MSR_FILTER_VALID_MASK: u32 = 1;
258 pub const KVM_CPUID_FLAG_SIGNIFCANT_INDEX: u32 = 1;
259 pub const KVM_CPUID_FLAG_STATEFUL_FUNC: u32 = 2;
260 pub const KVM_CPUID_FLAG_STATE_READ_NEXT: u32 = 4;
261 pub const KVM_GUESTDBG_USE_SW_BP: u32 = 65536;
262 pub const KVM_GUESTDBG_USE_HW_BP: u32 = 131072;
263 pub const KVM_GUESTDBG_INJECT_DB: u32 = 262144;
264 pub const KVM_GUESTDBG_INJECT_BP: u32 = 524288;
265 pub const KVM_GUESTDBG_BLOCKIRQ: u32 = 1048576;
266 pub const KVM_PIT_FLAGS_HPET_LEGACY: u32 = 1;
267 pub const KVM_PIT_FLAGS_SPEAKER_DATA_ON: u32 = 2;
268 pub const KVM_VCPUEVENT_VALID_NMI_PENDING: u32 = 1;
269 pub const KVM_VCPUEVENT_VALID_SIPI_VECTOR: u32 = 2;
270 pub const KVM_VCPUEVENT_VALID_SHADOW: u32 = 4;
271 pub const KVM_VCPUEVENT_VALID_SMM: u32 = 8;
272 pub const KVM_VCPUEVENT_VALID_PAYLOAD: u32 = 16;
273 pub const KVM_VCPUEVENT_VALID_TRIPLE_FAULT: u32 = 32;
274 pub const KVM_X86_SHADOW_INT_MOV_SS: u32 = 1;
275 pub const KVM_X86_SHADOW_INT_STI: u32 = 2;
276 pub const KVM_MAX_XCRS: u32 = 16;
277 pub const KVM_SYNC_X86_REGS: u32 = 1;
278 pub const KVM_SYNC_X86_SREGS: u32 = 2;
279 pub const KVM_SYNC_X86_EVENTS: u32 = 4;
280 pub const KVM_SYNC_X86_VALID_FIELDS: u32 = 7;
281 pub const KVM_X86_QUIRK_LINT0_REENABLED: u32 = 1;
282 pub const KVM_X86_QUIRK_CD_NW_CLEARED: u32 = 2;
283 pub const KVM_X86_QUIRK_LAPIC_MMIO_HOLE: u32 = 4;
284 pub const KVM_X86_QUIRK_OUT_7E_INC_RIP: u32 = 8;
285 pub const KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT: u32 = 16;
286 pub const KVM_X86_QUIRK_FIX_HYPERCALL_INSN: u32 = 32;
287 pub const KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS: u32 = 64;
288 pub const KVM_STATE_NESTED_FORMAT_VMX: u32 = 0;
289 pub const KVM_STATE_NESTED_FORMAT_SVM: u32 = 1;
290 pub const KVM_STATE_NESTED_GUEST_MODE: u32 = 1;
291 pub const KVM_STATE_NESTED_RUN_PENDING: u32 = 2;
292 pub const KVM_STATE_NESTED_EVMCS: u32 = 4;
293 pub const KVM_STATE_NESTED_MTF_PENDING: u32 = 8;
294 pub const KVM_STATE_NESTED_GIF_SET: u32 = 256;
295 pub const KVM_STATE_NESTED_SMM_GUEST_MODE: u32 = 1;
296 pub const KVM_STATE_NESTED_SMM_VMXON: u32 = 2;
297 pub const KVM_STATE_NESTED_VMX_VMCS_SIZE: u32 = 4096;
298 pub const KVM_STATE_NESTED_SVM_VMCB_SIZE: u32 = 4096;
299 pub const KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE: u32 = 1;
300 pub const KVM_X86_XCOMP_GUEST_SUPP: u32 = 0;
301 pub const KVM_PMU_EVENT_ALLOW: u32 = 0;
302 pub const KVM_PMU_EVENT_DENY: u32 = 1;
303 pub const KVM_PMU_MASKED_ENTRY_UMASK_MASK_SHIFT: u32 = 56;
304 pub const KVM_VCPU_TSC_CTRL: u32 = 0;
305 pub const KVM_VCPU_TSC_OFFSET: u32 = 0;
306 pub const KVM_API_VERSION: u32 = 12;
307 pub const KVM_TRC_SHIFT: u32 = 16;
308 pub const KVM_TRC_ENTRYEXIT: u32 = 65536;
309 pub const KVM_TRC_HANDLER: u32 = 131072;
310 pub const KVM_TRC_VMENTRY: u32 = 65537;
311 pub const KVM_TRC_VMEXIT: u32 = 65538;
312 pub const KVM_TRC_PAGE_FAULT: u32 = 131073;
313 pub const KVM_TRC_HEAD_SIZE: u32 = 12;
314 pub const KVM_TRC_CYCLE_SIZE: u32 = 8;
315 pub const KVM_TRC_EXTRA_MAX: u32 = 7;
316 pub const KVM_TRC_INJ_VIRQ: u32 = 131074;
317 pub const KVM_TRC_REDELIVER_EVT: u32 = 131075;
318 pub const KVM_TRC_PEND_INTR: u32 = 131076;
319 pub const KVM_TRC_IO_READ: u32 = 131077;
320 pub const KVM_TRC_IO_WRITE: u32 = 131078;
321 pub const KVM_TRC_CR_READ: u32 = 131079;
322 pub const KVM_TRC_CR_WRITE: u32 = 131080;
323 pub const KVM_TRC_DR_READ: u32 = 131081;
324 pub const KVM_TRC_DR_WRITE: u32 = 131082;
325 pub const KVM_TRC_MSR_READ: u32 = 131083;
326 pub const KVM_TRC_MSR_WRITE: u32 = 131084;
327 pub const KVM_TRC_CPUID: u32 = 131085;
328 pub const KVM_TRC_INTR: u32 = 131086;
329 pub const KVM_TRC_NMI: u32 = 131087;
330 pub const KVM_TRC_VMMCALL: u32 = 131088;
331 pub const KVM_TRC_HLT: u32 = 131089;
332 pub const KVM_TRC_CLTS: u32 = 131090;
333 pub const KVM_TRC_LMSW: u32 = 131091;
334 pub const KVM_TRC_APIC_ACCESS: u32 = 131092;
335 pub const KVM_TRC_TDP_FAULT: u32 = 131093;
336 pub const KVM_TRC_GTLB_WRITE: u32 = 131094;
337 pub const KVM_TRC_STLB_WRITE: u32 = 131095;
338 pub const KVM_TRC_STLB_INVAL: u32 = 131096;
339 pub const KVM_TRC_PPC_INSTR: u32 = 131097;
340 pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1;
341 pub const KVM_MEM_READONLY: u32 = 2;
342 pub const KVM_PIT_SPEAKER_DUMMY: u32 = 1;
343 pub const KVM_S390_CMMA_PEEK: u32 = 1;
344 pub const KVM_EXIT_HYPERV_SYNIC: u32 = 1;
345 pub const KVM_EXIT_HYPERV_HCALL: u32 = 2;
346 pub const KVM_EXIT_HYPERV_SYNDBG: u32 = 3;
347 pub const KVM_EXIT_XEN_HCALL: u32 = 1;
348 pub const KVM_S390_GET_SKEYS_NONE: u32 = 1;
349 pub const KVM_S390_SKEYS_MAX: u32 = 1048576;
350 pub const KVM_EXIT_UNKNOWN: u32 = 0;
351 pub const KVM_EXIT_EXCEPTION: u32 = 1;
352 pub const KVM_EXIT_IO: u32 = 2;
353 pub const KVM_EXIT_HYPERCALL: u32 = 3;
354 pub const KVM_EXIT_DEBUG: u32 = 4;
355 pub const KVM_EXIT_HLT: u32 = 5;
356 pub const KVM_EXIT_MMIO: u32 = 6;
357 pub const KVM_EXIT_IRQ_WINDOW_OPEN: u32 = 7;
358 pub const KVM_EXIT_SHUTDOWN: u32 = 8;
359 pub const KVM_EXIT_FAIL_ENTRY: u32 = 9;
360 pub const KVM_EXIT_INTR: u32 = 10;
361 pub const KVM_EXIT_SET_TPR: u32 = 11;
362 pub const KVM_EXIT_TPR_ACCESS: u32 = 12;
363 pub const KVM_EXIT_S390_SIEIC: u32 = 13;
364 pub const KVM_EXIT_S390_RESET: u32 = 14;
365 pub const KVM_EXIT_DCR: u32 = 15;
366 pub const KVM_EXIT_NMI: u32 = 16;
367 pub const KVM_EXIT_INTERNAL_ERROR: u32 = 17;
368 pub const KVM_EXIT_OSI: u32 = 18;
369 pub const KVM_EXIT_PAPR_HCALL: u32 = 19;
370 pub const KVM_EXIT_S390_UCONTROL: u32 = 20;
371 pub const KVM_EXIT_WATCHDOG: u32 = 21;
372 pub const KVM_EXIT_S390_TSCH: u32 = 22;
373 pub const KVM_EXIT_EPR: u32 = 23;
374 pub const KVM_EXIT_SYSTEM_EVENT: u32 = 24;
375 pub const KVM_EXIT_S390_STSI: u32 = 25;
376 pub const KVM_EXIT_IOAPIC_EOI: u32 = 26;
377 pub const KVM_EXIT_HYPERV: u32 = 27;
378 pub const KVM_EXIT_ARM_NISV: u32 = 28;
379 pub const KVM_EXIT_X86_RDMSR: u32 = 29;
380 pub const KVM_EXIT_X86_WRMSR: u32 = 30;
381 pub const KVM_EXIT_DIRTY_RING_FULL: u32 = 31;
382 pub const KVM_EXIT_AP_RESET_HOLD: u32 = 32;
383 pub const KVM_EXIT_X86_BUS_LOCK: u32 = 33;
384 pub const KVM_EXIT_XEN: u32 = 34;
385 pub const KVM_EXIT_RISCV_SBI: u32 = 35;
386 pub const KVM_EXIT_RISCV_CSR: u32 = 36;
387 pub const KVM_EXIT_NOTIFY: u32 = 37;
388 pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1;
389 pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2;
390 pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3;
391 pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4;
392 pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1;
393 pub const KVM_EXIT_IO_IN: u32 = 0;
394 pub const KVM_EXIT_IO_OUT: u32 = 1;
395 pub const KVM_S390_RESET_POR: u32 = 1;
396 pub const KVM_S390_RESET_CLEAR: u32 = 2;
397 pub const KVM_S390_RESET_SUBSYSTEM: u32 = 4;
398 pub const KVM_S390_RESET_CPU_INIT: u32 = 8;
399 pub const KVM_S390_RESET_IPL: u32 = 16;
400 pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1;
401 pub const KVM_SYSTEM_EVENT_RESET: u32 = 2;
402 pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3;
403 pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4;
404 pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5;
405 pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6;
406 pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1;
407 pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2;
408 pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4;
409 pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7;
410 pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1;
411 pub const SYNC_REGS_SIZE_BYTES: u32 = 2048;
412 pub const KVM_S390_MEMOP_LOGICAL_READ: u32 = 0;
413 pub const KVM_S390_MEMOP_LOGICAL_WRITE: u32 = 1;
414 pub const KVM_S390_MEMOP_SIDA_READ: u32 = 2;
415 pub const KVM_S390_MEMOP_SIDA_WRITE: u32 = 3;
416 pub const KVM_S390_MEMOP_ABSOLUTE_READ: u32 = 4;
417 pub const KVM_S390_MEMOP_ABSOLUTE_WRITE: u32 = 5;
418 pub const KVM_S390_MEMOP_ABSOLUTE_CMPXCHG: u32 = 6;
419 pub const KVM_S390_MEMOP_F_CHECK_ONLY: u32 = 1;
420 pub const KVM_S390_MEMOP_F_INJECT_EXCEPTION: u32 = 2;
421 pub const KVM_S390_MEMOP_F_SKEY_PROTECTION: u32 = 4;
422 pub const KVM_S390_MEMOP_EXTENSION_CAP_BASE: u32 = 1;
423 pub const KVM_S390_MEMOP_EXTENSION_CAP_CMPXCHG: u32 = 2;
424 pub const KVM_MP_STATE_RUNNABLE: u32 = 0;
425 pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1;
426 pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2;
427 pub const KVM_MP_STATE_HALTED: u32 = 3;
428 pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4;
429 pub const KVM_MP_STATE_STOPPED: u32 = 5;
430 pub const KVM_MP_STATE_CHECK_STOP: u32 = 6;
431 pub const KVM_MP_STATE_OPERATING: u32 = 7;
432 pub const KVM_MP_STATE_LOAD: u32 = 8;
433 pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9;
434 pub const KVM_MP_STATE_SUSPENDED: u32 = 10;
435 pub const KVM_S390_SIGP_STOP: u32 = 4294836224;
436 pub const KVM_S390_PROGRAM_INT: u32 = 4294836225;
437 pub const KVM_S390_SIGP_SET_PREFIX: u32 = 4294836226;
438 pub const KVM_S390_RESTART: u32 = 4294836227;
439 pub const KVM_S390_INT_PFAULT_INIT: u32 = 4294836228;
440 pub const KVM_S390_INT_PFAULT_DONE: u32 = 4294836229;
441 pub const KVM_S390_MCHK: u32 = 4294840320;
442 pub const KVM_S390_INT_CLOCK_COMP: u32 = 4294905860;
443 pub const KVM_S390_INT_CPU_TIMER: u32 = 4294905861;
444 pub const KVM_S390_INT_VIRTIO: u32 = 4294911491;
445 pub const KVM_S390_INT_SERVICE: u32 = 4294910977;
446 pub const KVM_S390_INT_EMERGENCY: u32 = 4294906369;
447 pub const KVM_S390_INT_EXTERNAL_CALL: u32 = 4294906370;
448 pub const KVM_S390_INT_IO_MIN: u32 = 0;
449 pub const KVM_S390_INT_IO_MAX: u32 = 4294836223;
450 pub const KVM_S390_INT_IO_AI_MASK: u32 = 67108864;
451 pub const KVM_S390_PGM_FLAGS_ILC_VALID: u32 = 1;
452 pub const KVM_S390_PGM_FLAGS_ILC_0: u32 = 2;
453 pub const KVM_S390_PGM_FLAGS_ILC_1: u32 = 4;
454 pub const KVM_S390_PGM_FLAGS_ILC_MASK: u32 = 6;
455 pub const KVM_S390_PGM_FLAGS_NO_REWIND: u32 = 8;
456 pub const KVM_S390_STOP_FLAG_STORE_STATUS: u32 = 1;
457 pub const KVM_GUESTDBG_ENABLE: u32 = 1;
458 pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2;
459 pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1;
460 pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2;
461 pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4;
462 pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8;
463 pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15;
464 pub const KVM_PPC_PVINFO_FLAGS_EV_IDLE: u32 = 1;
465 pub const KVM_PPC_PAGE_SIZES_MAX_SZ: u32 = 8;
466 pub const KVM_PPC_PAGE_SIZES_REAL: u32 = 1;
467 pub const KVM_PPC_1T_SEGMENTS: u32 = 2;
468 pub const KVM_PPC_NO_HASH: u32 = 4;
469 pub const KVMIO: u32 = 174;
470 pub const KVM_VM_S390_UCONTROL: u32 = 1;
471 pub const KVM_VM_PPC_HV: u32 = 1;
472 pub const KVM_VM_PPC_PR: u32 = 2;
473 pub const KVM_VM_MIPS_AUTO: u32 = 0;
474 pub const KVM_VM_MIPS_VZ: u32 = 1;
475 pub const KVM_VM_MIPS_TE: u32 = 2;
476 pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1;
477 pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255;
478 pub const KVM_CAP_IRQCHIP: u32 = 0;
479 pub const KVM_CAP_HLT: u32 = 1;
480 pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2;
481 pub const KVM_CAP_USER_MEMORY: u32 = 3;
482 pub const KVM_CAP_SET_TSS_ADDR: u32 = 4;
483 pub const KVM_CAP_VAPIC: u32 = 6;
484 pub const KVM_CAP_EXT_CPUID: u32 = 7;
485 pub const KVM_CAP_CLOCKSOURCE: u32 = 8;
486 pub const KVM_CAP_NR_VCPUS: u32 = 9;
487 pub const KVM_CAP_NR_MEMSLOTS: u32 = 10;
488 pub const KVM_CAP_PIT: u32 = 11;
489 pub const KVM_CAP_NOP_IO_DELAY: u32 = 12;
490 pub const KVM_CAP_PV_MMU: u32 = 13;
491 pub const KVM_CAP_MP_STATE: u32 = 14;
492 pub const KVM_CAP_COALESCED_MMIO: u32 = 15;
493 pub const KVM_CAP_SYNC_MMU: u32 = 16;
494 pub const KVM_CAP_IOMMU: u32 = 18;
495 pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21;
496 pub const KVM_CAP_USER_NMI: u32 = 22;
497 pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23;
498 pub const KVM_CAP_REINJECT_CONTROL: u32 = 24;
499 pub const KVM_CAP_IRQ_ROUTING: u32 = 25;
500 pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26;
501 pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29;
502 pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30;
503 pub const KVM_CAP_MCE: u32 = 31;
504 pub const KVM_CAP_IRQFD: u32 = 32;
505 pub const KVM_CAP_PIT2: u32 = 33;
506 pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34;
507 pub const KVM_CAP_PIT_STATE2: u32 = 35;
508 pub const KVM_CAP_IOEVENTFD: u32 = 36;
509 pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37;
510 pub const KVM_CAP_XEN_HVM: u32 = 38;
511 pub const KVM_CAP_ADJUST_CLOCK: u32 = 39;
512 pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40;
513 pub const KVM_CAP_VCPU_EVENTS: u32 = 41;
514 pub const KVM_CAP_S390_PSW: u32 = 42;
515 pub const KVM_CAP_PPC_SEGSTATE: u32 = 43;
516 pub const KVM_CAP_HYPERV: u32 = 44;
517 pub const KVM_CAP_HYPERV_VAPIC: u32 = 45;
518 pub const KVM_CAP_HYPERV_SPIN: u32 = 46;
519 pub const KVM_CAP_PCI_SEGMENT: u32 = 47;
520 pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48;
521 pub const KVM_CAP_INTR_SHADOW: u32 = 49;
522 pub const KVM_CAP_DEBUGREGS: u32 = 50;
523 pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51;
524 pub const KVM_CAP_PPC_OSI: u32 = 52;
525 pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53;
526 pub const KVM_CAP_ENABLE_CAP: u32 = 54;
527 pub const KVM_CAP_XSAVE: u32 = 55;
528 pub const KVM_CAP_XCRS: u32 = 56;
529 pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57;
530 pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58;
531 pub const KVM_CAP_ASYNC_PF: u32 = 59;
532 pub const KVM_CAP_TSC_CONTROL: u32 = 60;
533 pub const KVM_CAP_GET_TSC_KHZ: u32 = 61;
534 pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62;
535 pub const KVM_CAP_SPAPR_TCE: u32 = 63;
536 pub const KVM_CAP_PPC_SMT: u32 = 64;
537 pub const KVM_CAP_PPC_RMA: u32 = 65;
538 pub const KVM_CAP_MAX_VCPUS: u32 = 66;
539 pub const KVM_CAP_PPC_HIOR: u32 = 67;
540 pub const KVM_CAP_PPC_PAPR: u32 = 68;
541 pub const KVM_CAP_SW_TLB: u32 = 69;
542 pub const KVM_CAP_ONE_REG: u32 = 70;
543 pub const KVM_CAP_S390_GMAP: u32 = 71;
544 pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72;
545 pub const KVM_CAP_S390_UCONTROL: u32 = 73;
546 pub const KVM_CAP_SYNC_REGS: u32 = 74;
547 pub const KVM_CAP_PCI_2_3: u32 = 75;
548 pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76;
549 pub const KVM_CAP_SIGNAL_MSI: u32 = 77;
550 pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78;
551 pub const KVM_CAP_S390_COW: u32 = 79;
552 pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80;
553 pub const KVM_CAP_READONLY_MEM: u32 = 81;
554 pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82;
555 pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83;
556 pub const KVM_CAP_PPC_HTAB_FD: u32 = 84;
557 pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85;
558 pub const KVM_CAP_PPC_EPR: u32 = 86;
559 pub const KVM_CAP_ARM_PSCI: u32 = 87;
560 pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88;
561 pub const KVM_CAP_DEVICE_CTRL: u32 = 89;
562 pub const KVM_CAP_IRQ_MPIC: u32 = 90;
563 pub const KVM_CAP_PPC_RTAS: u32 = 91;
564 pub const KVM_CAP_IRQ_XICS: u32 = 92;
565 pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93;
566 pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94;
567 pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95;
568 pub const KVM_CAP_HYPERV_TIME: u32 = 96;
569 pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97;
570 pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98;
571 pub const KVM_CAP_S390_IRQCHIP: u32 = 99;
572 pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100;
573 pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101;
574 pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102;
575 pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103;
576 pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104;
577 pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105;
578 pub const KVM_CAP_S390_USER_SIGP: u32 = 106;
579 pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107;
580 pub const KVM_CAP_S390_MEM_OP: u32 = 108;
581 pub const KVM_CAP_S390_USER_STSI: u32 = 109;
582 pub const KVM_CAP_S390_SKEYS: u32 = 110;
583 pub const KVM_CAP_MIPS_FPU: u32 = 111;
584 pub const KVM_CAP_MIPS_MSA: u32 = 112;
585 pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113;
586 pub const KVM_CAP_S390_IRQ_STATE: u32 = 114;
587 pub const KVM_CAP_PPC_HWRNG: u32 = 115;
588 pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116;
589 pub const KVM_CAP_X86_SMM: u32 = 117;
590 pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118;
591 pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119;
592 pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120;
593 pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121;
594 pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122;
595 pub const KVM_CAP_HYPERV_SYNIC: u32 = 123;
596 pub const KVM_CAP_S390_RI: u32 = 124;
597 pub const KVM_CAP_SPAPR_TCE_64: u32 = 125;
598 pub const KVM_CAP_ARM_PMU_V3: u32 = 126;
599 pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127;
600 pub const KVM_CAP_MAX_VCPU_ID: u32 = 128;
601 pub const KVM_CAP_X2APIC_API: u32 = 129;
602 pub const KVM_CAP_S390_USER_INSTR0: u32 = 130;
603 pub const KVM_CAP_MSI_DEVID: u32 = 131;
604 pub const KVM_CAP_PPC_HTM: u32 = 132;
605 pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133;
606 pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134;
607 pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135;
608 pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136;
609 pub const KVM_CAP_MIPS_VZ: u32 = 137;
610 pub const KVM_CAP_MIPS_TE: u32 = 138;
611 pub const KVM_CAP_MIPS_64BIT: u32 = 139;
612 pub const KVM_CAP_S390_GS: u32 = 140;
613 pub const KVM_CAP_S390_AIS: u32 = 141;
614 pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142;
615 pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143;
616 pub const KVM_CAP_ARM_USER_IRQ: u32 = 144;
617 pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145;
618 pub const KVM_CAP_PPC_FWNMI: u32 = 146;
619 pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147;
620 pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148;
621 pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149;
622 pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150;
623 pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151;
624 pub const KVM_CAP_S390_BPB: u32 = 152;
625 pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153;
626 pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154;
627 pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155;
628 pub const KVM_CAP_S390_HPAGE_1M: u32 = 156;
629 pub const KVM_CAP_NESTED_STATE: u32 = 157;
630 pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158;
631 pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159;
632 pub const KVM_CAP_PPC_NESTED_HV: u32 = 160;
633 pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161;
634 pub const KVM_CAP_COALESCED_PIO: u32 = 162;
635 pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163;
636 pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164;
637 pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165;
638 pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166;
639 pub const KVM_CAP_HYPERV_CPUID: u32 = 167;
640 pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168;
641 pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169;
642 pub const KVM_CAP_ARM_SVE: u32 = 170;
643 pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171;
644 pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172;
645 pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173;
646 pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174;
647 pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175;
648 pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176;
649 pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177;
650 pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178;
651 pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179;
652 pub const KVM_CAP_S390_PROTECTED: u32 = 180;
653 pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181;
654 pub const KVM_CAP_HALT_POLL: u32 = 182;
655 pub const KVM_CAP_ASYNC_PF_INT: u32 = 183;
656 pub const KVM_CAP_LAST_CPU: u32 = 184;
657 pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185;
658 pub const KVM_CAP_S390_DIAG318: u32 = 186;
659 pub const KVM_CAP_STEAL_TIME: u32 = 187;
660 pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188;
661 pub const KVM_CAP_X86_MSR_FILTER: u32 = 189;
662 pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190;
663 pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191;
664 pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192;
665 pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193;
666 pub const KVM_CAP_PPC_DAWR1: u32 = 194;
667 pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195;
668 pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196;
669 pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197;
670 pub const KVM_CAP_PTP_KVM: u32 = 198;
671 pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199;
672 pub const KVM_CAP_SREGS2: u32 = 200;
673 pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201;
674 pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202;
675 pub const KVM_CAP_BINARY_STATS_FD: u32 = 203;
676 pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204;
677 pub const KVM_CAP_ARM_MTE: u32 = 205;
678 pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206;
679 pub const KVM_CAP_VM_GPA_BITS: u32 = 207;
680 pub const KVM_CAP_XSAVE2: u32 = 208;
681 pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209;
682 pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210;
683 pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211;
684 pub const KVM_CAP_PMU_CAPABILITY: u32 = 212;
685 pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213;
686 pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214;
687 pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215;
688 pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216;
689 pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217;
690 pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218;
691 pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219;
692 pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220;
693 pub const KVM_CAP_S390_ZPCI_OP: u32 = 221;
694 pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222;
695 pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223;
696 pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224;
697 pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225;
698 pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226;
699 pub const KVM_CAP_COUNTER_OFFSET: u32 = 227;
700 pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228;
701 pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229;
702 pub const KVM_CAP_GET_CUR_CPUFREQ: u32 = 512;
703 pub const KVM_CAP_UTIL_HINT: u32 = 513;
704 pub const KVM_CAP_GET_CPUFREQ_TBL: u32 = 514;
705 pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1;
706 pub const KVM_IRQ_ROUTING_MSI: u32 = 2;
707 pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3;
708 pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4;
709 pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5;
710 pub const KVM_XEN_HVM_CONFIG_HYPERCALL_MSR: u32 = 1;
711 pub const KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL: u32 = 2;
712 pub const KVM_XEN_HVM_CONFIG_SHARED_INFO: u32 = 4;
713 pub const KVM_XEN_HVM_CONFIG_RUNSTATE: u32 = 8;
714 pub const KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL: u32 = 16;
715 pub const KVM_XEN_HVM_CONFIG_EVTCHN_SEND: u32 = 32;
716 pub const KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG: u32 = 64;
717 pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1;
718 pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2;
719 pub const KVM_CLOCK_TSC_STABLE: u32 = 2;
720 pub const KVM_CLOCK_REALTIME: u32 = 4;
721 pub const KVM_CLOCK_HOST_TSC: u32 = 8;
722 pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0;
723 pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1;
724 pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936;
725 pub const KVM_REG_GENERIC: u32 = 0;
726 pub const KVM_REG_PPC: u64 = 1152921504606846976;
727 pub const KVM_REG_X86: u64 = 2305843009213693952;
728 pub const KVM_REG_IA64: u64 = 3458764513820540928;
729 pub const KVM_REG_ARM: u64 = 4611686018427387904;
730 pub const KVM_REG_S390: u64 = 5764607523034234880;
731 pub const KVM_REG_ARM64: u64 = 6917529027641081856;
732 pub const KVM_REG_MIPS: u64 = 8070450532247928832;
733 pub const KVM_REG_RISCV: i64 = -9223372036854775808;
734 pub const KVM_REG_SIZE_SHIFT: u32 = 52;
735 pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440;
736 pub const KVM_REG_SIZE_U8: u32 = 0;
737 pub const KVM_REG_SIZE_U16: u64 = 4503599627370496;
738 pub const KVM_REG_SIZE_U32: u64 = 9007199254740992;
739 pub const KVM_REG_SIZE_U64: u64 = 13510798882111488;
740 pub const KVM_REG_SIZE_U128: u64 = 18014398509481984;
741 pub const KVM_REG_SIZE_U256: u64 = 22517998136852480;
742 pub const KVM_REG_SIZE_U512: u64 = 27021597764222976;
743 pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472;
744 pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968;
745 pub const KVM_MSI_VALID_DEVID: u32 = 1;
746 pub const KVM_CREATE_DEVICE_TEST: u32 = 1;
747 pub const KVM_DEV_VFIO_FILE: u32 = 1;
748 pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1;
749 pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2;
750 pub const KVM_DEV_VFIO_GROUP: u32 = 1;
751 pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1;
752 pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2;
753 pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3;
754 pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1;
755 pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2;
756 pub const KVM_XEN_EVTCHN_DEASSIGN: u32 = 1;
757 pub const KVM_XEN_EVTCHN_UPDATE: u32 = 2;
758 pub const KVM_XEN_EVTCHN_RESET: u32 = 4;
759 pub const KVM_XEN_ATTR_TYPE_LONG_MODE: u32 = 0;
760 pub const KVM_XEN_ATTR_TYPE_SHARED_INFO: u32 = 1;
761 pub const KVM_XEN_ATTR_TYPE_UPCALL_VECTOR: u32 = 2;
762 pub const KVM_XEN_ATTR_TYPE_EVTCHN: u32 = 3;
763 pub const KVM_XEN_ATTR_TYPE_XEN_VERSION: u32 = 4;
764 pub const KVM_XEN_ATTR_TYPE_RUNSTATE_UPDATE_FLAG: u32 = 5;
765 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO: u32 = 0;
766 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO: u32 = 1;
767 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR: u32 = 2;
768 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT: u32 = 3;
769 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA: u32 = 4;
770 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST: u32 = 5;
771 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID: u32 = 6;
772 pub const KVM_XEN_VCPU_ATTR_TYPE_TIMER: u32 = 7;
773 pub const KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR: u32 = 8;
774 pub const KVM_DEV_ASSIGN_ENABLE_IOMMU: u32 = 1;
775 pub const KVM_DEV_ASSIGN_PCI_2_3: u32 = 2;
776 pub const KVM_DEV_ASSIGN_MASK_INTX: u32 = 4;
777 pub const KVM_DEV_IRQ_HOST_INTX: u32 = 1;
778 pub const KVM_DEV_IRQ_HOST_MSI: u32 = 2;
779 pub const KVM_DEV_IRQ_HOST_MSIX: u32 = 4;
780 pub const KVM_DEV_IRQ_GUEST_INTX: u32 = 256;
781 pub const KVM_DEV_IRQ_GUEST_MSI: u32 = 512;
782 pub const KVM_DEV_IRQ_GUEST_MSIX: u32 = 1024;
783 pub const KVM_DEV_IRQ_HOST_MASK: u32 = 255;
784 pub const KVM_DEV_IRQ_GUEST_MASK: u32 = 65280;
785 pub const KVM_MAX_MSIX_PER_DEV: u32 = 256;
786 pub const KVM_X2APIC_API_USE_32BIT_IDS: u32 = 1;
787 pub const KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK: u32 = 2;
788 pub const KVM_ARM_DEV_EL1_VTIMER: u32 = 1;
789 pub const KVM_ARM_DEV_EL1_PTIMER: u32 = 2;
790 pub const KVM_ARM_DEV_PMU: u32 = 4;
791 pub const KVM_HYPERV_CONN_ID_MASK: u32 = 16777215;
792 pub const KVM_HYPERV_EVENTFD_DEASSIGN: u32 = 1;
793 pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1;
794 pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2;
795 pub const KVM_DIRTY_GFN_F_MASK: u32 = 3;
796 pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1;
797 pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2;
798 pub const KVM_PMU_CAP_DISABLE: u32 = 1;
799 pub const KVM_STATS_TYPE_SHIFT: u32 = 0;
800 pub const KVM_STATS_TYPE_MASK: u32 = 15;
801 pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0;
802 pub const KVM_STATS_TYPE_INSTANT: u32 = 1;
803 pub const KVM_STATS_TYPE_PEAK: u32 = 2;
804 pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3;
805 pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4;
806 pub const KVM_STATS_TYPE_MAX: u32 = 4;
807 pub const KVM_STATS_UNIT_SHIFT: u32 = 4;
808 pub const KVM_STATS_UNIT_MASK: u32 = 240;
809 pub const KVM_STATS_UNIT_NONE: u32 = 0;
810 pub const KVM_STATS_UNIT_BYTES: u32 = 16;
811 pub const KVM_STATS_UNIT_SECONDS: u32 = 32;
812 pub const KVM_STATS_UNIT_CYCLES: u32 = 48;
813 pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64;
814 pub const KVM_STATS_UNIT_MAX: u32 = 64;
815 pub const KVM_STATS_BASE_SHIFT: u32 = 8;
816 pub const KVM_STATS_BASE_MASK: u32 = 3840;
817 pub const KVM_STATS_BASE_POW10: u32 = 0;
818 pub const KVM_STATS_BASE_POW2: u32 = 256;
819 pub const KVM_STATS_BASE_MAX: u32 = 256;
820 pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1;
821 pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2;
822 pub const KVM_S390_ZPCIOP_REG_AEN: u32 = 0;
823 pub const KVM_S390_ZPCIOP_DEREG_AEN: u32 = 1;
824 pub const KVM_S390_ZPCIOP_REGAEN_HOST: u32 = 1;
825 pub type __s128 = i128;
826 pub type __u128 = u128;
827 pub type __le16 = u16;
828 pub type __be16 = u16;
829 pub type __le32 = u32;
830 pub type __be32 = u32;
831 pub type __le64 = u64;
832 pub type __be64 = u64;
833 pub type __sum16 = u16;
834 pub type __wsum = u32;
835 pub type __poll_t = ::std::os::raw::c_uint;
836 #[repr(C)]
837 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
838 pub struct kvm_pic_state {
839     pub last_irr: u8,
840     pub irr: u8,
841     pub imr: u8,
842     pub isr: u8,
843     pub priority_add: u8,
844     pub irq_base: u8,
845     pub read_reg_select: u8,
846     pub poll: u8,
847     pub special_mask: u8,
848     pub init_state: u8,
849     pub auto_eoi: u8,
850     pub rotate_on_auto_eoi: u8,
851     pub special_fully_nested_mode: u8,
852     pub init4: u8,
853     pub elcr: u8,
854     pub elcr_mask: u8,
855 }
856 #[repr(C)]
857 #[derive(Copy, Clone, FromZeroes, FromBytes, AsBytes)]
858 pub struct kvm_ioapic_state {
859     pub base_address: u64,
860     pub ioregsel: u32,
861     pub id: u32,
862     pub irr: u32,
863     pub pad: u32,
864     pub redirtbl: [kvm_ioapic_state__bindgen_ty_1; 24usize],
865 }
866 #[repr(C)]
867 #[derive(Copy, Clone, FromZeroes, FromBytes, AsBytes)]
868 pub union kvm_ioapic_state__bindgen_ty_1 {
869     pub bits: u64,
870     pub fields: kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1,
871 }
872 #[repr(C)]
873 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
874 pub struct kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 {
875     pub vector: u8,
876     pub _bitfield_align_1: [u8; 0],
877     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
878     pub reserved: [u8; 4usize],
879     pub dest_id: u8,
880 }
881 impl kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 {
882     #[inline]
delivery_mode(&self) -> u8883     pub fn delivery_mode(&self) -> u8 {
884         unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 3u8) as u8) }
885     }
886     #[inline]
set_delivery_mode(&mut self, val: u8)887     pub fn set_delivery_mode(&mut self, val: u8) {
888         unsafe {
889             let val: u8 = ::std::mem::transmute(val);
890             self._bitfield_1.set(0usize, 3u8, val as u64)
891         }
892     }
893     #[inline]
dest_mode(&self) -> u8894     pub fn dest_mode(&self) -> u8 {
895         unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
896     }
897     #[inline]
set_dest_mode(&mut self, val: u8)898     pub fn set_dest_mode(&mut self, val: u8) {
899         unsafe {
900             let val: u8 = ::std::mem::transmute(val);
901             self._bitfield_1.set(3usize, 1u8, val as u64)
902         }
903     }
904     #[inline]
delivery_status(&self) -> u8905     pub fn delivery_status(&self) -> u8 {
906         unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) }
907     }
908     #[inline]
set_delivery_status(&mut self, val: u8)909     pub fn set_delivery_status(&mut self, val: u8) {
910         unsafe {
911             let val: u8 = ::std::mem::transmute(val);
912             self._bitfield_1.set(4usize, 1u8, val as u64)
913         }
914     }
915     #[inline]
polarity(&self) -> u8916     pub fn polarity(&self) -> u8 {
917         unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) }
918     }
919     #[inline]
set_polarity(&mut self, val: u8)920     pub fn set_polarity(&mut self, val: u8) {
921         unsafe {
922             let val: u8 = ::std::mem::transmute(val);
923             self._bitfield_1.set(5usize, 1u8, val as u64)
924         }
925     }
926     #[inline]
remote_irr(&self) -> u8927     pub fn remote_irr(&self) -> u8 {
928         unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) }
929     }
930     #[inline]
set_remote_irr(&mut self, val: u8)931     pub fn set_remote_irr(&mut self, val: u8) {
932         unsafe {
933             let val: u8 = ::std::mem::transmute(val);
934             self._bitfield_1.set(6usize, 1u8, val as u64)
935         }
936     }
937     #[inline]
trig_mode(&self) -> u8938     pub fn trig_mode(&self) -> u8 {
939         unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) }
940     }
941     #[inline]
set_trig_mode(&mut self, val: u8)942     pub fn set_trig_mode(&mut self, val: u8) {
943         unsafe {
944             let val: u8 = ::std::mem::transmute(val);
945             self._bitfield_1.set(7usize, 1u8, val as u64)
946         }
947     }
948     #[inline]
mask(&self) -> u8949     pub fn mask(&self) -> u8 {
950         unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
951     }
952     #[inline]
set_mask(&mut self, val: u8)953     pub fn set_mask(&mut self, val: u8) {
954         unsafe {
955             let val: u8 = ::std::mem::transmute(val);
956             self._bitfield_1.set(8usize, 1u8, val as u64)
957         }
958     }
959     #[inline]
reserve(&self) -> u8960     pub fn reserve(&self) -> u8 {
961         unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 7u8) as u8) }
962     }
963     #[inline]
set_reserve(&mut self, val: u8)964     pub fn set_reserve(&mut self, val: u8) {
965         unsafe {
966             let val: u8 = ::std::mem::transmute(val);
967             self._bitfield_1.set(9usize, 7u8, val as u64)
968         }
969     }
970     #[inline]
new_bitfield_1( delivery_mode: u8, dest_mode: u8, delivery_status: u8, polarity: u8, remote_irr: u8, trig_mode: u8, mask: u8, reserve: u8, ) -> __BindgenBitfieldUnit<[u8; 2usize]>971     pub fn new_bitfield_1(
972         delivery_mode: u8,
973         dest_mode: u8,
974         delivery_status: u8,
975         polarity: u8,
976         remote_irr: u8,
977         trig_mode: u8,
978         mask: u8,
979         reserve: u8,
980     ) -> __BindgenBitfieldUnit<[u8; 2usize]> {
981         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
982         __bindgen_bitfield_unit.set(0usize, 3u8, {
983             let delivery_mode: u8 = unsafe { ::std::mem::transmute(delivery_mode) };
984             delivery_mode as u64
985         });
986         __bindgen_bitfield_unit.set(3usize, 1u8, {
987             let dest_mode: u8 = unsafe { ::std::mem::transmute(dest_mode) };
988             dest_mode as u64
989         });
990         __bindgen_bitfield_unit.set(4usize, 1u8, {
991             let delivery_status: u8 = unsafe { ::std::mem::transmute(delivery_status) };
992             delivery_status as u64
993         });
994         __bindgen_bitfield_unit.set(5usize, 1u8, {
995             let polarity: u8 = unsafe { ::std::mem::transmute(polarity) };
996             polarity as u64
997         });
998         __bindgen_bitfield_unit.set(6usize, 1u8, {
999             let remote_irr: u8 = unsafe { ::std::mem::transmute(remote_irr) };
1000             remote_irr as u64
1001         });
1002         __bindgen_bitfield_unit.set(7usize, 1u8, {
1003             let trig_mode: u8 = unsafe { ::std::mem::transmute(trig_mode) };
1004             trig_mode as u64
1005         });
1006         __bindgen_bitfield_unit.set(8usize, 1u8, {
1007             let mask: u8 = unsafe { ::std::mem::transmute(mask) };
1008             mask as u64
1009         });
1010         __bindgen_bitfield_unit.set(9usize, 7u8, {
1011             let reserve: u8 = unsafe { ::std::mem::transmute(reserve) };
1012             reserve as u64
1013         });
1014         __bindgen_bitfield_unit
1015     }
1016 }
1017 impl Default for kvm_ioapic_state__bindgen_ty_1 {
default() -> Self1018     fn default() -> Self {
1019         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1020         unsafe {
1021             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1022             s.assume_init()
1023         }
1024     }
1025 }
1026 impl Default for kvm_ioapic_state {
default() -> Self1027     fn default() -> Self {
1028         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1029         unsafe {
1030             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1031             s.assume_init()
1032         }
1033     }
1034 }
1035 #[repr(C)]
1036 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1037 pub struct kvm_regs {
1038     pub rax: u64,
1039     pub rbx: u64,
1040     pub rcx: u64,
1041     pub rdx: u64,
1042     pub rsi: u64,
1043     pub rdi: u64,
1044     pub rsp: u64,
1045     pub rbp: u64,
1046     pub r8: u64,
1047     pub r9: u64,
1048     pub r10: u64,
1049     pub r11: u64,
1050     pub r12: u64,
1051     pub r13: u64,
1052     pub r14: u64,
1053     pub r15: u64,
1054     pub rip: u64,
1055     pub rflags: u64,
1056 }
1057 #[repr(C)]
1058 #[derive(Debug, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1059 pub struct kvm_lapic_state {
1060     pub regs: [::std::os::raw::c_char; 1024usize],
1061 }
1062 impl Default for kvm_lapic_state {
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(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1073 pub struct kvm_segment {
1074     pub base: u64,
1075     pub limit: u32,
1076     pub selector: u16,
1077     pub type_: u8,
1078     pub present: u8,
1079     pub dpl: u8,
1080     pub db: u8,
1081     pub s: u8,
1082     pub l: u8,
1083     pub g: u8,
1084     pub avl: u8,
1085     pub unusable: u8,
1086     pub padding: u8,
1087 }
1088 #[repr(C)]
1089 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1090 pub struct kvm_dtable {
1091     pub base: u64,
1092     pub limit: u16,
1093     pub padding: [u16; 3usize],
1094 }
1095 #[repr(C)]
1096 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1097 pub struct kvm_sregs {
1098     pub cs: kvm_segment,
1099     pub ds: kvm_segment,
1100     pub es: kvm_segment,
1101     pub fs: kvm_segment,
1102     pub gs: kvm_segment,
1103     pub ss: kvm_segment,
1104     pub tr: kvm_segment,
1105     pub ldt: kvm_segment,
1106     pub gdt: kvm_dtable,
1107     pub idt: kvm_dtable,
1108     pub cr0: u64,
1109     pub cr2: u64,
1110     pub cr3: u64,
1111     pub cr4: u64,
1112     pub cr8: u64,
1113     pub efer: u64,
1114     pub apic_base: u64,
1115     pub interrupt_bitmap: [u64; 4usize],
1116 }
1117 #[repr(C)]
1118 #[derive(Debug, Default, Copy, Clone)]
1119 pub struct kvm_sregs2 {
1120     pub cs: kvm_segment,
1121     pub ds: kvm_segment,
1122     pub es: kvm_segment,
1123     pub fs: kvm_segment,
1124     pub gs: kvm_segment,
1125     pub ss: kvm_segment,
1126     pub tr: kvm_segment,
1127     pub ldt: kvm_segment,
1128     pub gdt: kvm_dtable,
1129     pub idt: kvm_dtable,
1130     pub cr0: u64,
1131     pub cr2: u64,
1132     pub cr3: u64,
1133     pub cr4: u64,
1134     pub cr8: u64,
1135     pub efer: u64,
1136     pub apic_base: u64,
1137     pub flags: u64,
1138     pub pdptrs: [u64; 4usize],
1139 }
1140 #[repr(C)]
1141 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1142 pub struct kvm_fpu {
1143     pub fpr: [[u8; 16usize]; 8usize],
1144     pub fcw: u16,
1145     pub fsw: u16,
1146     pub ftwx: u8,
1147     pub pad1: u8,
1148     pub last_opcode: u16,
1149     pub last_ip: u64,
1150     pub last_dp: u64,
1151     pub xmm: [[u8; 16usize]; 16usize],
1152     pub mxcsr: u32,
1153     pub pad2: u32,
1154 }
1155 #[repr(C)]
1156 #[derive(Debug, Default, Copy, Clone)]
1157 pub struct kvm_msr_entry {
1158     pub index: u32,
1159     pub reserved: u32,
1160     pub data: u64,
1161 }
1162 #[repr(C)]
1163 #[derive(Debug, Default)]
1164 pub struct kvm_msrs {
1165     pub nmsrs: u32,
1166     pub pad: u32,
1167     pub entries: __IncompleteArrayField<kvm_msr_entry>,
1168 }
1169 #[repr(C)]
1170 #[derive(Debug, Default)]
1171 pub struct kvm_msr_list {
1172     pub nmsrs: u32,
1173     pub indices: __IncompleteArrayField<u32>,
1174 }
1175 #[repr(C)]
1176 #[derive(Debug, Copy, Clone)]
1177 pub struct kvm_msr_filter_range {
1178     pub flags: u32,
1179     pub nmsrs: u32,
1180     pub base: u32,
1181     pub bitmap: *mut u8,
1182 }
1183 impl Default for kvm_msr_filter_range {
default() -> Self1184     fn default() -> Self {
1185         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1186         unsafe {
1187             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1188             s.assume_init()
1189         }
1190     }
1191 }
1192 #[repr(C)]
1193 #[derive(Debug, Copy, Clone)]
1194 pub struct kvm_msr_filter {
1195     pub flags: u32,
1196     pub ranges: [kvm_msr_filter_range; 16usize],
1197 }
1198 impl Default for kvm_msr_filter {
default() -> Self1199     fn default() -> Self {
1200         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1201         unsafe {
1202             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1203             s.assume_init()
1204         }
1205     }
1206 }
1207 #[repr(C)]
1208 #[derive(Debug, Default, Copy, Clone)]
1209 pub struct kvm_cpuid_entry {
1210     pub function: u32,
1211     pub eax: u32,
1212     pub ebx: u32,
1213     pub ecx: u32,
1214     pub edx: u32,
1215     pub padding: u32,
1216 }
1217 #[repr(C)]
1218 #[derive(Debug, Default)]
1219 pub struct kvm_cpuid {
1220     pub nent: u32,
1221     pub padding: u32,
1222     pub entries: __IncompleteArrayField<kvm_cpuid_entry>,
1223 }
1224 #[repr(C)]
1225 #[derive(Debug, Default, Copy, Clone)]
1226 pub struct kvm_cpuid_entry2 {
1227     pub function: u32,
1228     pub index: u32,
1229     pub flags: u32,
1230     pub eax: u32,
1231     pub ebx: u32,
1232     pub ecx: u32,
1233     pub edx: u32,
1234     pub padding: [u32; 3usize],
1235 }
1236 #[repr(C)]
1237 #[derive(Debug, Default)]
1238 pub struct kvm_cpuid2 {
1239     pub nent: u32,
1240     pub padding: u32,
1241     pub entries: __IncompleteArrayField<kvm_cpuid_entry2>,
1242 }
1243 #[repr(C)]
1244 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1245 pub struct kvm_pit_channel_state {
1246     pub count: u32,
1247     pub latched_count: u16,
1248     pub count_latched: u8,
1249     pub status_latched: u8,
1250     pub status: u8,
1251     pub read_state: u8,
1252     pub write_state: u8,
1253     pub write_latch: u8,
1254     pub rw_mode: u8,
1255     pub mode: u8,
1256     pub bcd: u8,
1257     pub gate: u8,
1258     pub count_load_time: i64,
1259 }
1260 #[repr(C)]
1261 #[derive(Debug, Default, Copy, Clone)]
1262 pub struct kvm_debug_exit_arch {
1263     pub exception: u32,
1264     pub pad: u32,
1265     pub pc: u64,
1266     pub dr6: u64,
1267     pub dr7: u64,
1268 }
1269 #[repr(C)]
1270 #[derive(Debug, Default, Copy, Clone)]
1271 pub struct kvm_guest_debug_arch {
1272     pub debugreg: [u64; 8usize],
1273 }
1274 #[repr(C)]
1275 #[derive(Debug, Default, Copy, Clone)]
1276 pub struct kvm_pit_state {
1277     pub channels: [kvm_pit_channel_state; 3usize],
1278 }
1279 #[repr(C)]
1280 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1281 pub struct kvm_pit_state2 {
1282     pub channels: [kvm_pit_channel_state; 3usize],
1283     pub flags: u32,
1284     pub reserved: [u32; 9usize],
1285 }
1286 #[repr(C)]
1287 #[derive(Debug, Default, Copy, Clone)]
1288 pub struct kvm_reinject_control {
1289     pub pit_reinject: u8,
1290     pub reserved: [u8; 31usize],
1291 }
1292 #[repr(C)]
1293 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1294 pub struct kvm_vcpu_events {
1295     pub exception: kvm_vcpu_events__bindgen_ty_1,
1296     pub interrupt: kvm_vcpu_events__bindgen_ty_2,
1297     pub nmi: kvm_vcpu_events__bindgen_ty_3,
1298     pub sipi_vector: u32,
1299     pub flags: u32,
1300     pub smi: kvm_vcpu_events__bindgen_ty_4,
1301     pub triple_fault: kvm_vcpu_events__bindgen_ty_5,
1302     pub reserved: [u8; 26usize],
1303     pub exception_has_payload: u8,
1304     pub exception_payload: u64,
1305 }
1306 #[repr(C)]
1307 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1308 pub struct kvm_vcpu_events__bindgen_ty_1 {
1309     pub injected: u8,
1310     pub nr: u8,
1311     pub has_error_code: u8,
1312     pub pending: u8,
1313     pub error_code: u32,
1314 }
1315 #[repr(C)]
1316 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1317 pub struct kvm_vcpu_events__bindgen_ty_2 {
1318     pub injected: u8,
1319     pub nr: u8,
1320     pub soft: u8,
1321     pub shadow: u8,
1322 }
1323 #[repr(C)]
1324 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1325 pub struct kvm_vcpu_events__bindgen_ty_3 {
1326     pub injected: u8,
1327     pub pending: u8,
1328     pub masked: u8,
1329     pub pad: u8,
1330 }
1331 #[repr(C)]
1332 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1333 pub struct kvm_vcpu_events__bindgen_ty_4 {
1334     pub smm: u8,
1335     pub pending: u8,
1336     pub smm_inside_nmi: u8,
1337     pub latched_init: u8,
1338 }
1339 #[repr(C)]
1340 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1341 pub struct kvm_vcpu_events__bindgen_ty_5 {
1342     pub pending: u8,
1343 }
1344 #[repr(C)]
1345 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1346 pub struct kvm_debugregs {
1347     pub db: [u64; 4usize],
1348     pub dr6: u64,
1349     pub dr7: u64,
1350     pub flags: u64,
1351     pub reserved: [u64; 9usize],
1352 }
1353 #[repr(C)]
1354 #[derive(Debug)]
1355 pub struct kvm_xsave {
1356     pub region: [u32; 1024usize],
1357     pub extra: __IncompleteArrayField<u32>,
1358 }
1359 impl Default for kvm_xsave {
default() -> Self1360     fn default() -> Self {
1361         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1362         unsafe {
1363             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1364             s.assume_init()
1365         }
1366     }
1367 }
1368 #[repr(C)]
1369 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1370 pub struct kvm_xcr {
1371     pub xcr: u32,
1372     pub reserved: u32,
1373     pub value: u64,
1374 }
1375 #[repr(C)]
1376 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
1377 pub struct kvm_xcrs {
1378     pub nr_xcrs: u32,
1379     pub flags: u32,
1380     pub xcrs: [kvm_xcr; 16usize],
1381     pub padding: [u64; 16usize],
1382 }
1383 #[repr(C)]
1384 #[derive(Debug, Default, Copy, Clone)]
1385 pub struct kvm_sync_regs {
1386     pub regs: kvm_regs,
1387     pub sregs: kvm_sregs,
1388     pub events: kvm_vcpu_events,
1389 }
1390 #[repr(C)]
1391 #[derive(Debug, Copy, Clone)]
1392 pub struct kvm_vmx_nested_state_data {
1393     pub vmcs12: [u8; 4096usize],
1394     pub shadow_vmcs12: [u8; 4096usize],
1395 }
1396 impl Default for kvm_vmx_nested_state_data {
default() -> Self1397     fn default() -> Self {
1398         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1399         unsafe {
1400             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1401             s.assume_init()
1402         }
1403     }
1404 }
1405 #[repr(C)]
1406 #[derive(Debug, Default, Copy, Clone)]
1407 pub struct kvm_vmx_nested_state_hdr {
1408     pub vmxon_pa: u64,
1409     pub vmcs12_pa: u64,
1410     pub smm: kvm_vmx_nested_state_hdr__bindgen_ty_1,
1411     pub pad: u16,
1412     pub flags: u32,
1413     pub preemption_timer_deadline: u64,
1414 }
1415 #[repr(C)]
1416 #[derive(Debug, Default, Copy, Clone)]
1417 pub struct kvm_vmx_nested_state_hdr__bindgen_ty_1 {
1418     pub flags: u16,
1419 }
1420 #[repr(C)]
1421 #[derive(Debug, Copy, Clone)]
1422 pub struct kvm_svm_nested_state_data {
1423     pub vmcb12: [u8; 4096usize],
1424 }
1425 impl Default for kvm_svm_nested_state_data {
default() -> Self1426     fn default() -> Self {
1427         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1428         unsafe {
1429             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1430             s.assume_init()
1431         }
1432     }
1433 }
1434 #[repr(C)]
1435 #[derive(Debug, Default, Copy, Clone)]
1436 pub struct kvm_svm_nested_state_hdr {
1437     pub vmcb_pa: u64,
1438 }
1439 #[repr(C)]
1440 pub struct kvm_nested_state {
1441     pub flags: u16,
1442     pub format: u16,
1443     pub size: u32,
1444     pub hdr: kvm_nested_state__bindgen_ty_1,
1445     pub data: kvm_nested_state__bindgen_ty_2,
1446 }
1447 #[repr(C)]
1448 #[derive(Copy, Clone)]
1449 pub union kvm_nested_state__bindgen_ty_1 {
1450     pub vmx: kvm_vmx_nested_state_hdr,
1451     pub svm: kvm_svm_nested_state_hdr,
1452     pub pad: [u8; 120usize],
1453 }
1454 impl Default for kvm_nested_state__bindgen_ty_1 {
default() -> Self1455     fn default() -> Self {
1456         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1457         unsafe {
1458             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1459             s.assume_init()
1460         }
1461     }
1462 }
1463 #[repr(C)]
1464 pub struct kvm_nested_state__bindgen_ty_2 {
1465     pub __bindgen_anon_1: __BindgenUnionField<kvm_nested_state__bindgen_ty_2__bindgen_ty_1>,
1466     pub __bindgen_anon_2: __BindgenUnionField<kvm_nested_state__bindgen_ty_2__bindgen_ty_2>,
1467     pub bindgen_union_field: [u8; 0usize],
1468 }
1469 #[repr(C)]
1470 #[derive(Debug)]
1471 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1 {
1472     pub __empty_vmx: kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1,
1473     pub vmx: __IncompleteArrayField<kvm_vmx_nested_state_data>,
1474 }
1475 #[repr(C)]
1476 #[derive(Debug, Default, Copy, Clone)]
1477 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 {}
1478 impl Default for kvm_nested_state__bindgen_ty_2__bindgen_ty_1 {
default() -> Self1479     fn default() -> Self {
1480         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1481         unsafe {
1482             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1483             s.assume_init()
1484         }
1485     }
1486 }
1487 #[repr(C)]
1488 #[derive(Debug)]
1489 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2 {
1490     pub __empty_svm: kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1,
1491     pub svm: __IncompleteArrayField<kvm_svm_nested_state_data>,
1492 }
1493 #[repr(C)]
1494 #[derive(Debug, Default, Copy, Clone)]
1495 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1 {}
1496 impl Default for kvm_nested_state__bindgen_ty_2__bindgen_ty_2 {
default() -> Self1497     fn default() -> Self {
1498         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1499         unsafe {
1500             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1501             s.assume_init()
1502         }
1503     }
1504 }
1505 impl Default for kvm_nested_state__bindgen_ty_2 {
default() -> Self1506     fn default() -> Self {
1507         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1508         unsafe {
1509             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1510             s.assume_init()
1511         }
1512     }
1513 }
1514 impl Default for kvm_nested_state {
default() -> Self1515     fn default() -> Self {
1516         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1517         unsafe {
1518             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1519             s.assume_init()
1520         }
1521     }
1522 }
1523 #[repr(C)]
1524 #[derive(Debug, Default)]
1525 pub struct kvm_pmu_event_filter {
1526     pub action: u32,
1527     pub nevents: u32,
1528     pub fixed_counter_bitmap: u32,
1529     pub flags: u32,
1530     pub pad: [u32; 4usize],
1531     pub events: __IncompleteArrayField<u64>,
1532 }
1533 #[repr(C)]
1534 #[derive(Debug, Default, Copy, Clone)]
1535 pub struct kvm_user_trace_setup {
1536     pub buf_size: u32,
1537     pub buf_nr: u32,
1538 }
1539 #[repr(C)]
1540 #[derive(Debug, Default, Copy, Clone)]
1541 pub struct kvm_breakpoint {
1542     pub enabled: u32,
1543     pub padding: u32,
1544     pub address: u64,
1545 }
1546 #[repr(C)]
1547 #[derive(Debug, Default, Copy, Clone)]
1548 pub struct kvm_debug_guest {
1549     pub enabled: u32,
1550     pub pad: u32,
1551     pub breakpoints: [kvm_breakpoint; 4usize],
1552     pub singlestep: u32,
1553 }
1554 #[repr(C)]
1555 #[derive(Debug, Default, Copy, Clone)]
1556 pub struct kvm_userspace_memory_region {
1557     pub slot: u32,
1558     pub flags: u32,
1559     pub guest_phys_addr: u64,
1560     pub memory_size: u64,
1561     pub userspace_addr: u64,
1562 }
1563 #[repr(C)]
1564 #[derive(Copy, Clone)]
1565 pub struct kvm_irq_level {
1566     pub __bindgen_anon_1: kvm_irq_level__bindgen_ty_1,
1567     pub level: u32,
1568 }
1569 #[repr(C)]
1570 #[derive(Copy, Clone)]
1571 pub union kvm_irq_level__bindgen_ty_1 {
1572     pub irq: u32,
1573     pub status: i32,
1574 }
1575 impl Default for kvm_irq_level__bindgen_ty_1 {
default() -> Self1576     fn default() -> Self {
1577         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1578         unsafe {
1579             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1580             s.assume_init()
1581         }
1582     }
1583 }
1584 impl Default for kvm_irq_level {
default() -> Self1585     fn default() -> Self {
1586         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1587         unsafe {
1588             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1589             s.assume_init()
1590         }
1591     }
1592 }
1593 #[repr(C)]
1594 #[derive(Copy, Clone)]
1595 pub struct kvm_irqchip {
1596     pub chip_id: u32,
1597     pub pad: u32,
1598     pub chip: kvm_irqchip__bindgen_ty_1,
1599 }
1600 #[repr(C)]
1601 #[derive(Copy, Clone)]
1602 pub union kvm_irqchip__bindgen_ty_1 {
1603     pub dummy: [::std::os::raw::c_char; 512usize],
1604     pub pic: kvm_pic_state,
1605     pub ioapic: kvm_ioapic_state,
1606 }
1607 impl Default for kvm_irqchip__bindgen_ty_1 {
default() -> Self1608     fn default() -> Self {
1609         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1610         unsafe {
1611             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1612             s.assume_init()
1613         }
1614     }
1615 }
1616 impl Default for kvm_irqchip {
default() -> Self1617     fn default() -> Self {
1618         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1619         unsafe {
1620             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1621             s.assume_init()
1622         }
1623     }
1624 }
1625 #[repr(C)]
1626 #[derive(Debug, Default, Copy, Clone)]
1627 pub struct kvm_pit_config {
1628     pub flags: u32,
1629     pub pad: [u32; 15usize],
1630 }
1631 #[repr(C)]
1632 #[derive(Debug, Default, Copy, Clone)]
1633 pub struct kvm_s390_skeys {
1634     pub start_gfn: u64,
1635     pub count: u64,
1636     pub skeydata_addr: u64,
1637     pub flags: u32,
1638     pub reserved: [u32; 9usize],
1639 }
1640 #[repr(C)]
1641 #[derive(Copy, Clone)]
1642 pub struct kvm_s390_cmma_log {
1643     pub start_gfn: u64,
1644     pub count: u32,
1645     pub flags: u32,
1646     pub __bindgen_anon_1: kvm_s390_cmma_log__bindgen_ty_1,
1647     pub values: u64,
1648 }
1649 #[repr(C)]
1650 #[derive(Copy, Clone)]
1651 pub union kvm_s390_cmma_log__bindgen_ty_1 {
1652     pub remaining: u64,
1653     pub mask: u64,
1654 }
1655 impl Default for kvm_s390_cmma_log__bindgen_ty_1 {
default() -> Self1656     fn default() -> Self {
1657         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1658         unsafe {
1659             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1660             s.assume_init()
1661         }
1662     }
1663 }
1664 impl Default for kvm_s390_cmma_log {
default() -> Self1665     fn default() -> Self {
1666         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1667         unsafe {
1668             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1669             s.assume_init()
1670         }
1671     }
1672 }
1673 #[repr(C)]
1674 #[derive(Copy, Clone)]
1675 pub struct kvm_hyperv_exit {
1676     pub type_: u32,
1677     pub pad1: u32,
1678     pub u: kvm_hyperv_exit__bindgen_ty_1,
1679 }
1680 #[repr(C)]
1681 #[derive(Copy, Clone)]
1682 pub union kvm_hyperv_exit__bindgen_ty_1 {
1683     pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1,
1684     pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2,
1685     pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3,
1686 }
1687 #[repr(C)]
1688 #[derive(Debug, Default, Copy, Clone)]
1689 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 {
1690     pub msr: u32,
1691     pub pad2: u32,
1692     pub control: u64,
1693     pub evt_page: u64,
1694     pub msg_page: u64,
1695 }
1696 #[repr(C)]
1697 #[derive(Debug, Default, Copy, Clone)]
1698 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 {
1699     pub input: u64,
1700     pub result: u64,
1701     pub params: [u64; 2usize],
1702 }
1703 #[repr(C)]
1704 #[derive(Debug, Default, Copy, Clone)]
1705 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 {
1706     pub msr: u32,
1707     pub pad2: u32,
1708     pub control: u64,
1709     pub status: u64,
1710     pub send_page: u64,
1711     pub recv_page: u64,
1712     pub pending_page: u64,
1713 }
1714 impl Default for kvm_hyperv_exit__bindgen_ty_1 {
default() -> Self1715     fn default() -> Self {
1716         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1717         unsafe {
1718             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1719             s.assume_init()
1720         }
1721     }
1722 }
1723 impl Default for kvm_hyperv_exit {
default() -> Self1724     fn default() -> Self {
1725         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1726         unsafe {
1727             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1728             s.assume_init()
1729         }
1730     }
1731 }
1732 #[repr(C)]
1733 #[derive(Copy, Clone)]
1734 pub struct kvm_xen_exit {
1735     pub type_: u32,
1736     pub u: kvm_xen_exit__bindgen_ty_1,
1737 }
1738 #[repr(C)]
1739 #[derive(Copy, Clone)]
1740 pub union kvm_xen_exit__bindgen_ty_1 {
1741     pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1,
1742 }
1743 #[repr(C)]
1744 #[derive(Debug, Default, Copy, Clone)]
1745 pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 {
1746     pub longmode: u32,
1747     pub cpl: u32,
1748     pub input: u64,
1749     pub result: u64,
1750     pub params: [u64; 6usize],
1751 }
1752 impl Default for kvm_xen_exit__bindgen_ty_1 {
default() -> Self1753     fn default() -> Self {
1754         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1755         unsafe {
1756             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1757             s.assume_init()
1758         }
1759     }
1760 }
1761 impl Default for kvm_xen_exit {
default() -> Self1762     fn default() -> Self {
1763         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1764         unsafe {
1765             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1766             s.assume_init()
1767         }
1768     }
1769 }
1770 #[repr(C)]
1771 #[derive(Copy, Clone)]
1772 pub struct kvm_run {
1773     pub request_interrupt_window: u8,
1774     pub immediate_exit: u8,
1775     pub padding1: [u8; 6usize],
1776     pub exit_reason: u32,
1777     pub ready_for_interrupt_injection: u8,
1778     pub if_flag: u8,
1779     pub flags: u16,
1780     pub cr8: u64,
1781     pub apic_base: u64,
1782     pub __bindgen_anon_1: kvm_run__bindgen_ty_1,
1783     pub kvm_valid_regs: u64,
1784     pub kvm_dirty_regs: u64,
1785     pub s: kvm_run__bindgen_ty_2,
1786 }
1787 #[repr(C)]
1788 #[derive(Copy, Clone)]
1789 pub union kvm_run__bindgen_ty_1 {
1790     pub hw: kvm_run__bindgen_ty_1__bindgen_ty_1,
1791     pub fail_entry: kvm_run__bindgen_ty_1__bindgen_ty_2,
1792     pub ex: kvm_run__bindgen_ty_1__bindgen_ty_3,
1793     pub io: kvm_run__bindgen_ty_1__bindgen_ty_4,
1794     pub debug: kvm_run__bindgen_ty_1__bindgen_ty_5,
1795     pub mmio: kvm_run__bindgen_ty_1__bindgen_ty_6,
1796     pub hypercall: kvm_run__bindgen_ty_1__bindgen_ty_7,
1797     pub tpr_access: kvm_run__bindgen_ty_1__bindgen_ty_8,
1798     pub s390_sieic: kvm_run__bindgen_ty_1__bindgen_ty_9,
1799     pub s390_reset_flags: u64,
1800     pub s390_ucontrol: kvm_run__bindgen_ty_1__bindgen_ty_10,
1801     pub dcr: kvm_run__bindgen_ty_1__bindgen_ty_11,
1802     pub internal: kvm_run__bindgen_ty_1__bindgen_ty_12,
1803     pub emulation_failure: kvm_run__bindgen_ty_1__bindgen_ty_13,
1804     pub osi: kvm_run__bindgen_ty_1__bindgen_ty_14,
1805     pub papr_hcall: kvm_run__bindgen_ty_1__bindgen_ty_15,
1806     pub s390_tsch: kvm_run__bindgen_ty_1__bindgen_ty_16,
1807     pub epr: kvm_run__bindgen_ty_1__bindgen_ty_17,
1808     pub system_event: kvm_run__bindgen_ty_1__bindgen_ty_18,
1809     pub s390_stsi: kvm_run__bindgen_ty_1__bindgen_ty_19,
1810     pub eoi: kvm_run__bindgen_ty_1__bindgen_ty_20,
1811     pub hyperv: kvm_hyperv_exit,
1812     pub arm_nisv: kvm_run__bindgen_ty_1__bindgen_ty_21,
1813     pub msr: kvm_run__bindgen_ty_1__bindgen_ty_22,
1814     pub xen: kvm_xen_exit,
1815     pub riscv_sbi: kvm_run__bindgen_ty_1__bindgen_ty_23,
1816     pub riscv_csr: kvm_run__bindgen_ty_1__bindgen_ty_24,
1817     pub notify: kvm_run__bindgen_ty_1__bindgen_ty_25,
1818     pub padding: [::std::os::raw::c_char; 256usize],
1819 }
1820 #[repr(C)]
1821 #[derive(Debug, Default, Copy, Clone)]
1822 pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 {
1823     pub hardware_exit_reason: u64,
1824 }
1825 #[repr(C)]
1826 #[derive(Debug, Default, Copy, Clone)]
1827 pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 {
1828     pub hardware_entry_failure_reason: u64,
1829     pub cpu: u32,
1830 }
1831 #[repr(C)]
1832 #[derive(Debug, Default, Copy, Clone)]
1833 pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 {
1834     pub exception: u32,
1835     pub error_code: u32,
1836 }
1837 #[repr(C)]
1838 #[derive(Debug, Default, Copy, Clone)]
1839 pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 {
1840     pub direction: u8,
1841     pub size: u8,
1842     pub port: u16,
1843     pub count: u32,
1844     pub data_offset: u64,
1845 }
1846 #[repr(C)]
1847 #[derive(Debug, Default, Copy, Clone)]
1848 pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 {
1849     pub arch: kvm_debug_exit_arch,
1850 }
1851 #[repr(C)]
1852 #[derive(Debug, Default, Copy, Clone)]
1853 pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 {
1854     pub phys_addr: u64,
1855     pub data: [u8; 8usize],
1856     pub len: u32,
1857     pub is_write: u8,
1858 }
1859 #[repr(C)]
1860 #[derive(Copy, Clone)]
1861 pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 {
1862     pub nr: u64,
1863     pub args: [u64; 6usize],
1864     pub ret: u64,
1865     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_7__bindgen_ty_1,
1866 }
1867 #[repr(C)]
1868 #[derive(Copy, Clone)]
1869 pub union kvm_run__bindgen_ty_1__bindgen_ty_7__bindgen_ty_1 {
1870     pub longmode: u32,
1871     pub flags: u64,
1872 }
1873 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_7__bindgen_ty_1 {
default() -> Self1874     fn default() -> Self {
1875         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1876         unsafe {
1877             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1878             s.assume_init()
1879         }
1880     }
1881 }
1882 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_7 {
default() -> Self1883     fn default() -> Self {
1884         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1885         unsafe {
1886             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1887             s.assume_init()
1888         }
1889     }
1890 }
1891 #[repr(C)]
1892 #[derive(Debug, Default, Copy, Clone)]
1893 pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 {
1894     pub rip: u64,
1895     pub is_write: u32,
1896     pub pad: u32,
1897 }
1898 #[repr(C)]
1899 #[derive(Debug, Default, Copy, Clone)]
1900 pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 {
1901     pub icptcode: u8,
1902     pub ipa: u16,
1903     pub ipb: u32,
1904 }
1905 #[repr(C)]
1906 #[derive(Debug, Default, Copy, Clone)]
1907 pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 {
1908     pub trans_exc_code: u64,
1909     pub pgm_code: u32,
1910 }
1911 #[repr(C)]
1912 #[derive(Debug, Default, Copy, Clone)]
1913 pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 {
1914     pub dcrn: u32,
1915     pub data: u32,
1916     pub is_write: u8,
1917 }
1918 #[repr(C)]
1919 #[derive(Debug, Default, Copy, Clone)]
1920 pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 {
1921     pub suberror: u32,
1922     pub ndata: u32,
1923     pub data: [u64; 16usize],
1924 }
1925 #[repr(C)]
1926 #[derive(Copy, Clone)]
1927 pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 {
1928     pub suberror: u32,
1929     pub ndata: u32,
1930     pub flags: u64,
1931     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1,
1932 }
1933 #[repr(C)]
1934 #[derive(Copy, Clone)]
1935 pub union kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1 {
1936     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1__bindgen_ty_1,
1937 }
1938 #[repr(C)]
1939 #[derive(Debug, Default, Copy, Clone)]
1940 pub struct kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1__bindgen_ty_1 {
1941     pub insn_size: u8,
1942     pub insn_bytes: [u8; 15usize],
1943 }
1944 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1 {
default() -> Self1945     fn default() -> Self {
1946         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1947         unsafe {
1948             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1949             s.assume_init()
1950         }
1951     }
1952 }
1953 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_13 {
default() -> Self1954     fn default() -> Self {
1955         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1956         unsafe {
1957             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1958             s.assume_init()
1959         }
1960     }
1961 }
1962 #[repr(C)]
1963 #[derive(Debug, Default, Copy, Clone)]
1964 pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 {
1965     pub gprs: [u64; 32usize],
1966 }
1967 #[repr(C)]
1968 #[derive(Debug, Default, Copy, Clone)]
1969 pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 {
1970     pub nr: u64,
1971     pub ret: u64,
1972     pub args: [u64; 9usize],
1973 }
1974 #[repr(C)]
1975 #[derive(Debug, Default, Copy, Clone)]
1976 pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 {
1977     pub subchannel_id: u16,
1978     pub subchannel_nr: u16,
1979     pub io_int_parm: u32,
1980     pub io_int_word: u32,
1981     pub ipb: u32,
1982     pub dequeued: u8,
1983 }
1984 #[repr(C)]
1985 #[derive(Debug, Default, Copy, Clone)]
1986 pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 {
1987     pub epr: u32,
1988 }
1989 #[repr(C)]
1990 #[derive(Copy, Clone)]
1991 pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 {
1992     pub type_: u32,
1993     pub ndata: u32,
1994     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_18__bindgen_ty_1,
1995 }
1996 #[repr(C)]
1997 #[derive(Copy, Clone)]
1998 pub union kvm_run__bindgen_ty_1__bindgen_ty_18__bindgen_ty_1 {
1999     pub flags: u64,
2000     pub data: [u64; 16usize],
2001 }
2002 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_18__bindgen_ty_1 {
default() -> Self2003     fn default() -> Self {
2004         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2005         unsafe {
2006             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2007             s.assume_init()
2008         }
2009     }
2010 }
2011 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_18 {
default() -> Self2012     fn default() -> Self {
2013         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2014         unsafe {
2015             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2016             s.assume_init()
2017         }
2018     }
2019 }
2020 #[repr(C)]
2021 #[derive(Debug, Default, Copy, Clone)]
2022 pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 {
2023     pub addr: u64,
2024     pub ar: u8,
2025     pub reserved: u8,
2026     pub fc: u8,
2027     pub sel1: u8,
2028     pub sel2: u16,
2029 }
2030 #[repr(C)]
2031 #[derive(Debug, Default, Copy, Clone)]
2032 pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 {
2033     pub vector: u8,
2034 }
2035 #[repr(C)]
2036 #[derive(Debug, Default, Copy, Clone)]
2037 pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 {
2038     pub esr_iss: u64,
2039     pub fault_ipa: u64,
2040 }
2041 #[repr(C)]
2042 #[derive(Debug, Default, Copy, Clone)]
2043 pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 {
2044     pub error: u8,
2045     pub pad: [u8; 7usize],
2046     pub reason: u32,
2047     pub index: u32,
2048     pub data: u64,
2049 }
2050 #[repr(C)]
2051 #[derive(Debug, Default, Copy, Clone)]
2052 pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 {
2053     pub extension_id: ::std::os::raw::c_ulong,
2054     pub function_id: ::std::os::raw::c_ulong,
2055     pub args: [::std::os::raw::c_ulong; 6usize],
2056     pub ret: [::std::os::raw::c_ulong; 2usize],
2057 }
2058 #[repr(C)]
2059 #[derive(Debug, Default, Copy, Clone)]
2060 pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 {
2061     pub csr_num: ::std::os::raw::c_ulong,
2062     pub new_value: ::std::os::raw::c_ulong,
2063     pub write_mask: ::std::os::raw::c_ulong,
2064     pub ret_value: ::std::os::raw::c_ulong,
2065 }
2066 #[repr(C)]
2067 #[derive(Debug, Default, Copy, Clone)]
2068 pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 {
2069     pub flags: u32,
2070 }
2071 impl Default for kvm_run__bindgen_ty_1 {
default() -> Self2072     fn default() -> Self {
2073         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2074         unsafe {
2075             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2076             s.assume_init()
2077         }
2078     }
2079 }
2080 #[repr(C)]
2081 #[derive(Copy, Clone)]
2082 pub union kvm_run__bindgen_ty_2 {
2083     pub regs: kvm_sync_regs,
2084     pub padding: [::std::os::raw::c_char; 2048usize],
2085 }
2086 impl Default for kvm_run__bindgen_ty_2 {
default() -> Self2087     fn default() -> Self {
2088         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2089         unsafe {
2090             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2091             s.assume_init()
2092         }
2093     }
2094 }
2095 impl Default for kvm_run {
default() -> Self2096     fn default() -> Self {
2097         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2098         unsafe {
2099             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2100             s.assume_init()
2101         }
2102     }
2103 }
2104 #[repr(C)]
2105 #[derive(Copy, Clone)]
2106 pub struct kvm_coalesced_mmio_zone {
2107     pub addr: u64,
2108     pub size: u32,
2109     pub __bindgen_anon_1: kvm_coalesced_mmio_zone__bindgen_ty_1,
2110 }
2111 #[repr(C)]
2112 #[derive(Copy, Clone)]
2113 pub union kvm_coalesced_mmio_zone__bindgen_ty_1 {
2114     pub pad: u32,
2115     pub pio: u32,
2116 }
2117 impl Default for kvm_coalesced_mmio_zone__bindgen_ty_1 {
default() -> Self2118     fn default() -> Self {
2119         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2120         unsafe {
2121             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2122             s.assume_init()
2123         }
2124     }
2125 }
2126 impl Default for kvm_coalesced_mmio_zone {
default() -> Self2127     fn default() -> Self {
2128         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2129         unsafe {
2130             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2131             s.assume_init()
2132         }
2133     }
2134 }
2135 #[repr(C)]
2136 #[derive(Copy, Clone)]
2137 pub struct kvm_coalesced_mmio {
2138     pub phys_addr: u64,
2139     pub len: u32,
2140     pub __bindgen_anon_1: kvm_coalesced_mmio__bindgen_ty_1,
2141     pub data: [u8; 8usize],
2142 }
2143 #[repr(C)]
2144 #[derive(Copy, Clone)]
2145 pub union kvm_coalesced_mmio__bindgen_ty_1 {
2146     pub pad: u32,
2147     pub pio: u32,
2148 }
2149 impl Default for kvm_coalesced_mmio__bindgen_ty_1 {
default() -> Self2150     fn default() -> Self {
2151         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2152         unsafe {
2153             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2154             s.assume_init()
2155         }
2156     }
2157 }
2158 impl Default for kvm_coalesced_mmio {
default() -> Self2159     fn default() -> Self {
2160         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2161         unsafe {
2162             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2163             s.assume_init()
2164         }
2165     }
2166 }
2167 #[repr(C)]
2168 pub struct kvm_coalesced_mmio_ring {
2169     pub first: u32,
2170     pub last: u32,
2171     pub coalesced_mmio: __IncompleteArrayField<kvm_coalesced_mmio>,
2172 }
2173 impl Default for kvm_coalesced_mmio_ring {
default() -> Self2174     fn default() -> Self {
2175         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2176         unsafe {
2177             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2178             s.assume_init()
2179         }
2180     }
2181 }
2182 #[repr(C)]
2183 #[derive(Debug, Default, Copy, Clone)]
2184 pub struct kvm_translation {
2185     pub linear_address: u64,
2186     pub physical_address: u64,
2187     pub valid: u8,
2188     pub writeable: u8,
2189     pub usermode: u8,
2190     pub pad: [u8; 5usize],
2191 }
2192 #[repr(C)]
2193 #[derive(Copy, Clone)]
2194 pub struct kvm_s390_mem_op {
2195     pub gaddr: u64,
2196     pub flags: u64,
2197     pub size: u32,
2198     pub op: u32,
2199     pub buf: u64,
2200     pub __bindgen_anon_1: kvm_s390_mem_op__bindgen_ty_1,
2201 }
2202 #[repr(C)]
2203 #[derive(Copy, Clone)]
2204 pub union kvm_s390_mem_op__bindgen_ty_1 {
2205     pub __bindgen_anon_1: kvm_s390_mem_op__bindgen_ty_1__bindgen_ty_1,
2206     pub sida_offset: u32,
2207     pub reserved: [u8; 32usize],
2208 }
2209 #[repr(C)]
2210 #[derive(Debug, Default, Copy, Clone)]
2211 pub struct kvm_s390_mem_op__bindgen_ty_1__bindgen_ty_1 {
2212     pub ar: u8,
2213     pub key: u8,
2214     pub pad1: [u8; 6usize],
2215     pub old_addr: u64,
2216 }
2217 impl Default for kvm_s390_mem_op__bindgen_ty_1 {
default() -> Self2218     fn default() -> Self {
2219         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2220         unsafe {
2221             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2222             s.assume_init()
2223         }
2224     }
2225 }
2226 impl Default for kvm_s390_mem_op {
default() -> Self2227     fn default() -> Self {
2228         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2229         unsafe {
2230             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2231             s.assume_init()
2232         }
2233     }
2234 }
2235 #[repr(C)]
2236 #[derive(Debug, Default, Copy, Clone)]
2237 pub struct kvm_interrupt {
2238     pub irq: u32,
2239 }
2240 #[repr(C)]
2241 #[derive(Copy, Clone)]
2242 pub struct kvm_dirty_log {
2243     pub slot: u32,
2244     pub padding1: u32,
2245     pub __bindgen_anon_1: kvm_dirty_log__bindgen_ty_1,
2246 }
2247 #[repr(C)]
2248 #[derive(Copy, Clone)]
2249 pub union kvm_dirty_log__bindgen_ty_1 {
2250     pub dirty_bitmap: *mut ::std::os::raw::c_void,
2251     pub padding2: u64,
2252 }
2253 impl Default for kvm_dirty_log__bindgen_ty_1 {
default() -> Self2254     fn default() -> Self {
2255         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2256         unsafe {
2257             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2258             s.assume_init()
2259         }
2260     }
2261 }
2262 impl Default for kvm_dirty_log {
default() -> Self2263     fn default() -> Self {
2264         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2265         unsafe {
2266             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2267             s.assume_init()
2268         }
2269     }
2270 }
2271 #[repr(C)]
2272 #[derive(Copy, Clone)]
2273 pub struct kvm_clear_dirty_log {
2274     pub slot: u32,
2275     pub num_pages: u32,
2276     pub first_page: u64,
2277     pub __bindgen_anon_1: kvm_clear_dirty_log__bindgen_ty_1,
2278 }
2279 #[repr(C)]
2280 #[derive(Copy, Clone)]
2281 pub union kvm_clear_dirty_log__bindgen_ty_1 {
2282     pub dirty_bitmap: *mut ::std::os::raw::c_void,
2283     pub padding2: u64,
2284 }
2285 impl Default for kvm_clear_dirty_log__bindgen_ty_1 {
default() -> Self2286     fn default() -> Self {
2287         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2288         unsafe {
2289             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2290             s.assume_init()
2291         }
2292     }
2293 }
2294 impl Default for kvm_clear_dirty_log {
default() -> Self2295     fn default() -> Self {
2296         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2297         unsafe {
2298             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2299             s.assume_init()
2300         }
2301     }
2302 }
2303 #[repr(C)]
2304 #[derive(Debug, Default)]
2305 pub struct kvm_signal_mask {
2306     pub len: u32,
2307     pub sigset: __IncompleteArrayField<u8>,
2308 }
2309 #[repr(C)]
2310 #[derive(Debug, Default, Copy, Clone)]
2311 pub struct kvm_tpr_access_ctl {
2312     pub enabled: u32,
2313     pub flags: u32,
2314     pub reserved: [u32; 8usize],
2315 }
2316 #[repr(C)]
2317 #[derive(Debug, Default, Copy, Clone)]
2318 pub struct kvm_vapic_addr {
2319     pub vapic_addr: u64,
2320 }
2321 #[repr(C)]
2322 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
2323 pub struct kvm_mp_state {
2324     pub mp_state: u32,
2325 }
2326 #[repr(C)]
2327 #[derive(Debug, Default, Copy, Clone)]
2328 pub struct kvm_s390_psw {
2329     pub mask: u64,
2330     pub addr: u64,
2331 }
2332 #[repr(C)]
2333 #[derive(Debug, Default, Copy, Clone)]
2334 pub struct kvm_s390_interrupt {
2335     pub type_: u32,
2336     pub parm: u32,
2337     pub parm64: u64,
2338 }
2339 #[repr(C)]
2340 #[derive(Debug, Default, Copy, Clone)]
2341 pub struct kvm_s390_io_info {
2342     pub subchannel_id: u16,
2343     pub subchannel_nr: u16,
2344     pub io_int_parm: u32,
2345     pub io_int_word: u32,
2346 }
2347 #[repr(C)]
2348 #[derive(Debug, Default, Copy, Clone)]
2349 pub struct kvm_s390_ext_info {
2350     pub ext_params: u32,
2351     pub pad: u32,
2352     pub ext_params2: u64,
2353 }
2354 #[repr(C)]
2355 #[derive(Debug, Default, Copy, Clone)]
2356 pub struct kvm_s390_pgm_info {
2357     pub trans_exc_code: u64,
2358     pub mon_code: u64,
2359     pub per_address: u64,
2360     pub data_exc_code: u32,
2361     pub code: u16,
2362     pub mon_class_nr: u16,
2363     pub per_code: u8,
2364     pub per_atmid: u8,
2365     pub exc_access_id: u8,
2366     pub per_access_id: u8,
2367     pub op_access_id: u8,
2368     pub flags: u8,
2369     pub pad: [u8; 2usize],
2370 }
2371 #[repr(C)]
2372 #[derive(Debug, Default, Copy, Clone)]
2373 pub struct kvm_s390_prefix_info {
2374     pub address: u32,
2375 }
2376 #[repr(C)]
2377 #[derive(Debug, Default, Copy, Clone)]
2378 pub struct kvm_s390_extcall_info {
2379     pub code: u16,
2380 }
2381 #[repr(C)]
2382 #[derive(Debug, Default, Copy, Clone)]
2383 pub struct kvm_s390_emerg_info {
2384     pub code: u16,
2385 }
2386 #[repr(C)]
2387 #[derive(Debug, Default, Copy, Clone)]
2388 pub struct kvm_s390_stop_info {
2389     pub flags: u32,
2390 }
2391 #[repr(C)]
2392 #[derive(Debug, Default, Copy, Clone)]
2393 pub struct kvm_s390_mchk_info {
2394     pub cr14: u64,
2395     pub mcic: u64,
2396     pub failing_storage_address: u64,
2397     pub ext_damage_code: u32,
2398     pub pad: u32,
2399     pub fixed_logout: [u8; 16usize],
2400 }
2401 #[repr(C)]
2402 #[derive(Copy, Clone)]
2403 pub struct kvm_s390_irq {
2404     pub type_: u64,
2405     pub u: kvm_s390_irq__bindgen_ty_1,
2406 }
2407 #[repr(C)]
2408 #[derive(Copy, Clone)]
2409 pub union kvm_s390_irq__bindgen_ty_1 {
2410     pub io: kvm_s390_io_info,
2411     pub ext: kvm_s390_ext_info,
2412     pub pgm: kvm_s390_pgm_info,
2413     pub emerg: kvm_s390_emerg_info,
2414     pub extcall: kvm_s390_extcall_info,
2415     pub prefix: kvm_s390_prefix_info,
2416     pub stop: kvm_s390_stop_info,
2417     pub mchk: kvm_s390_mchk_info,
2418     pub reserved: [::std::os::raw::c_char; 64usize],
2419 }
2420 impl Default for kvm_s390_irq__bindgen_ty_1 {
default() -> Self2421     fn default() -> Self {
2422         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2423         unsafe {
2424             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2425             s.assume_init()
2426         }
2427     }
2428 }
2429 impl Default for kvm_s390_irq {
default() -> Self2430     fn default() -> Self {
2431         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2432         unsafe {
2433             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2434             s.assume_init()
2435         }
2436     }
2437 }
2438 #[repr(C)]
2439 #[derive(Debug, Default, Copy, Clone)]
2440 pub struct kvm_s390_irq_state {
2441     pub buf: u64,
2442     pub flags: u32,
2443     pub len: u32,
2444     pub reserved: [u32; 4usize],
2445 }
2446 #[repr(C)]
2447 #[derive(Debug, Default, Copy, Clone)]
2448 pub struct kvm_guest_debug {
2449     pub control: u32,
2450     pub pad: u32,
2451     pub arch: kvm_guest_debug_arch,
2452 }
2453 pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_1 = 0;
2454 pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_1 = 1;
2455 pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_1 = 2;
2456 pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_1 = 3;
2457 pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_1 = 4;
2458 pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_1 = 5;
2459 pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
2460 #[repr(C)]
2461 #[derive(Debug, Copy, Clone)]
2462 pub struct kvm_ioeventfd {
2463     pub datamatch: u64,
2464     pub addr: u64,
2465     pub len: u32,
2466     pub fd: i32,
2467     pub flags: u32,
2468     pub pad: [u8; 36usize],
2469 }
2470 impl Default for kvm_ioeventfd {
default() -> Self2471     fn default() -> Self {
2472         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2473         unsafe {
2474             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2475             s.assume_init()
2476         }
2477     }
2478 }
2479 #[repr(C)]
2480 #[derive(Debug, Copy, Clone)]
2481 pub struct kvm_enable_cap {
2482     pub cap: u32,
2483     pub flags: u32,
2484     pub args: [u64; 4usize],
2485     pub pad: [u8; 64usize],
2486 }
2487 impl Default for kvm_enable_cap {
default() -> Self2488     fn default() -> Self {
2489         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2490         unsafe {
2491             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2492             s.assume_init()
2493         }
2494     }
2495 }
2496 #[repr(C)]
2497 #[derive(Debug, Copy, Clone)]
2498 pub struct kvm_ppc_pvinfo {
2499     pub flags: u32,
2500     pub hcall: [u32; 4usize],
2501     pub pad: [u8; 108usize],
2502 }
2503 impl Default for kvm_ppc_pvinfo {
default() -> Self2504     fn default() -> Self {
2505         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2506         unsafe {
2507             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2508             s.assume_init()
2509         }
2510     }
2511 }
2512 #[repr(C)]
2513 #[derive(Debug, Default, Copy, Clone)]
2514 pub struct kvm_ppc_one_page_size {
2515     pub page_shift: u32,
2516     pub pte_enc: u32,
2517 }
2518 #[repr(C)]
2519 #[derive(Debug, Default, Copy, Clone)]
2520 pub struct kvm_ppc_one_seg_page_size {
2521     pub page_shift: u32,
2522     pub slb_enc: u32,
2523     pub enc: [kvm_ppc_one_page_size; 8usize],
2524 }
2525 #[repr(C)]
2526 #[derive(Debug, Default, Copy, Clone)]
2527 pub struct kvm_ppc_smmu_info {
2528     pub flags: u64,
2529     pub slb_size: u32,
2530     pub data_keys: u16,
2531     pub instr_keys: u16,
2532     pub sps: [kvm_ppc_one_seg_page_size; 8usize],
2533 }
2534 #[repr(C)]
2535 #[derive(Debug, Default, Copy, Clone)]
2536 pub struct kvm_ppc_resize_hpt {
2537     pub flags: u64,
2538     pub shift: u32,
2539     pub pad: u32,
2540 }
2541 #[repr(C)]
2542 #[derive(Debug, Default, Copy, Clone)]
2543 pub struct kvm_irq_routing_irqchip {
2544     pub irqchip: u32,
2545     pub pin: u32,
2546 }
2547 #[repr(C)]
2548 #[derive(Copy, Clone)]
2549 pub struct kvm_irq_routing_msi {
2550     pub address_lo: u32,
2551     pub address_hi: u32,
2552     pub data: u32,
2553     pub __bindgen_anon_1: kvm_irq_routing_msi__bindgen_ty_1,
2554 }
2555 #[repr(C)]
2556 #[derive(Copy, Clone)]
2557 pub union kvm_irq_routing_msi__bindgen_ty_1 {
2558     pub pad: u32,
2559     pub devid: u32,
2560 }
2561 impl Default for kvm_irq_routing_msi__bindgen_ty_1 {
default() -> Self2562     fn default() -> Self {
2563         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2564         unsafe {
2565             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2566             s.assume_init()
2567         }
2568     }
2569 }
2570 impl Default for kvm_irq_routing_msi {
default() -> Self2571     fn default() -> Self {
2572         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2573         unsafe {
2574             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2575             s.assume_init()
2576         }
2577     }
2578 }
2579 #[repr(C)]
2580 #[derive(Debug, Default, Copy, Clone)]
2581 pub struct kvm_irq_routing_s390_adapter {
2582     pub ind_addr: u64,
2583     pub summary_addr: u64,
2584     pub ind_offset: u64,
2585     pub summary_offset: u32,
2586     pub adapter_id: u32,
2587 }
2588 #[repr(C)]
2589 #[derive(Debug, Default, Copy, Clone)]
2590 pub struct kvm_irq_routing_hv_sint {
2591     pub vcpu: u32,
2592     pub sint: u32,
2593 }
2594 #[repr(C)]
2595 #[derive(Debug, Default, Copy, Clone)]
2596 pub struct kvm_irq_routing_xen_evtchn {
2597     pub port: u32,
2598     pub vcpu: u32,
2599     pub priority: u32,
2600 }
2601 #[repr(C)]
2602 #[derive(Copy, Clone)]
2603 pub struct kvm_irq_routing_entry {
2604     pub gsi: u32,
2605     pub type_: u32,
2606     pub flags: u32,
2607     pub pad: u32,
2608     pub u: kvm_irq_routing_entry__bindgen_ty_1,
2609 }
2610 #[repr(C)]
2611 #[derive(Copy, Clone)]
2612 pub union kvm_irq_routing_entry__bindgen_ty_1 {
2613     pub irqchip: kvm_irq_routing_irqchip,
2614     pub msi: kvm_irq_routing_msi,
2615     pub adapter: kvm_irq_routing_s390_adapter,
2616     pub hv_sint: kvm_irq_routing_hv_sint,
2617     pub xen_evtchn: kvm_irq_routing_xen_evtchn,
2618     pub pad: [u32; 8usize],
2619 }
2620 impl Default for kvm_irq_routing_entry__bindgen_ty_1 {
default() -> Self2621     fn default() -> Self {
2622         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2623         unsafe {
2624             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2625             s.assume_init()
2626         }
2627     }
2628 }
2629 impl Default for kvm_irq_routing_entry {
default() -> Self2630     fn default() -> Self {
2631         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2632         unsafe {
2633             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2634             s.assume_init()
2635         }
2636     }
2637 }
2638 #[repr(C)]
2639 pub struct kvm_irq_routing {
2640     pub nr: u32,
2641     pub flags: u32,
2642     pub entries: __IncompleteArrayField<kvm_irq_routing_entry>,
2643 }
2644 impl Default for kvm_irq_routing {
default() -> Self2645     fn default() -> Self {
2646         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2647         unsafe {
2648             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2649             s.assume_init()
2650         }
2651     }
2652 }
2653 #[repr(C)]
2654 #[derive(Debug, Default, Copy, Clone)]
2655 pub struct kvm_x86_mce {
2656     pub status: u64,
2657     pub addr: u64,
2658     pub misc: u64,
2659     pub mcg_status: u64,
2660     pub bank: u8,
2661     pub pad1: [u8; 7usize],
2662     pub pad2: [u64; 3usize],
2663 }
2664 #[repr(C)]
2665 #[derive(Debug, Default, Copy, Clone)]
2666 pub struct kvm_xen_hvm_config {
2667     pub flags: u32,
2668     pub msr: u32,
2669     pub blob_addr_32: u64,
2670     pub blob_addr_64: u64,
2671     pub blob_size_32: u8,
2672     pub blob_size_64: u8,
2673     pub pad2: [u8; 30usize],
2674 }
2675 #[repr(C)]
2676 #[derive(Debug, Default, Copy, Clone)]
2677 pub struct kvm_irqfd {
2678     pub fd: u32,
2679     pub gsi: u32,
2680     pub flags: u32,
2681     pub resamplefd: u32,
2682     pub pad: [u8; 16usize],
2683 }
2684 #[repr(C)]
2685 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
2686 pub struct kvm_clock_data {
2687     pub clock: u64,
2688     pub flags: u32,
2689     pub pad0: u32,
2690     pub realtime: u64,
2691     pub host_tsc: u64,
2692     pub pad: [u32; 4usize],
2693 }
2694 #[repr(C)]
2695 #[derive(Debug, Default, Copy, Clone)]
2696 pub struct kvm_config_tlb {
2697     pub params: u64,
2698     pub array: u64,
2699     pub mmu_type: u32,
2700     pub array_len: u32,
2701 }
2702 #[repr(C)]
2703 #[derive(Debug, Default, Copy, Clone)]
2704 pub struct kvm_dirty_tlb {
2705     pub bitmap: u64,
2706     pub num_dirty: u32,
2707 }
2708 #[repr(C)]
2709 #[derive(Debug, Default)]
2710 pub struct kvm_reg_list {
2711     pub n: u64,
2712     pub reg: __IncompleteArrayField<u64>,
2713 }
2714 #[repr(C)]
2715 #[derive(Debug, Default, Copy, Clone)]
2716 pub struct kvm_one_reg {
2717     pub id: u64,
2718     pub addr: u64,
2719 }
2720 #[repr(C)]
2721 #[derive(Debug, Default, Copy, Clone)]
2722 pub struct kvm_msi {
2723     pub address_lo: u32,
2724     pub address_hi: u32,
2725     pub data: u32,
2726     pub flags: u32,
2727     pub devid: u32,
2728     pub pad: [u8; 12usize],
2729 }
2730 #[repr(C)]
2731 #[derive(Debug, Default, Copy, Clone)]
2732 pub struct kvm_arm_device_addr {
2733     pub id: u64,
2734     pub addr: u64,
2735 }
2736 #[repr(C)]
2737 #[derive(Debug, Default, Copy, Clone)]
2738 pub struct kvm_create_device {
2739     pub type_: u32,
2740     pub fd: u32,
2741     pub flags: u32,
2742 }
2743 #[repr(C)]
2744 #[derive(Debug, Default, Copy, Clone)]
2745 pub struct kvm_device_attr {
2746     pub flags: u32,
2747     pub group: u32,
2748     pub attr: u64,
2749     pub addr: u64,
2750 }
2751 pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1;
2752 pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2;
2753 pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3;
2754 pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4;
2755 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5;
2756 pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6;
2757 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7;
2758 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8;
2759 pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9;
2760 pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10;
2761 pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11;
2762 pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12;
2763 pub type kvm_device_type = ::std::os::raw::c_uint;
2764 #[repr(C)]
2765 #[derive(Debug, Default, Copy, Clone)]
2766 pub struct kvm_vfio_spapr_tce {
2767     pub groupfd: i32,
2768     pub tablefd: i32,
2769 }
2770 #[repr(C)]
2771 #[derive(Debug, Default, Copy, Clone)]
2772 pub struct kvm_s390_ucas_mapping {
2773     pub user_addr: u64,
2774     pub vcpu_addr: u64,
2775     pub length: u64,
2776 }
2777 #[repr(C)]
2778 #[derive(Debug, Default, Copy, Clone)]
2779 pub struct kvm_enc_region {
2780     pub addr: u64,
2781     pub size: u64,
2782 }
2783 #[repr(C)]
2784 #[derive(Debug, Default, Copy, Clone)]
2785 pub struct kvm_s390_pv_sec_parm {
2786     pub origin: u64,
2787     pub length: u64,
2788 }
2789 #[repr(C)]
2790 #[derive(Debug, Default, Copy, Clone)]
2791 pub struct kvm_s390_pv_unp {
2792     pub addr: u64,
2793     pub size: u64,
2794     pub tweak: u64,
2795 }
2796 pub const pv_cmd_dmp_id_KVM_PV_DUMP_INIT: pv_cmd_dmp_id = 0;
2797 pub const pv_cmd_dmp_id_KVM_PV_DUMP_CONFIG_STOR_STATE: pv_cmd_dmp_id = 1;
2798 pub const pv_cmd_dmp_id_KVM_PV_DUMP_COMPLETE: pv_cmd_dmp_id = 2;
2799 pub const pv_cmd_dmp_id_KVM_PV_DUMP_CPU: pv_cmd_dmp_id = 3;
2800 pub type pv_cmd_dmp_id = ::std::os::raw::c_uint;
2801 #[repr(C)]
2802 #[derive(Debug, Default, Copy, Clone)]
2803 pub struct kvm_s390_pv_dmp {
2804     pub subcmd: u64,
2805     pub buff_addr: u64,
2806     pub buff_len: u64,
2807     pub gaddr: u64,
2808     pub reserved: [u64; 4usize],
2809 }
2810 pub const pv_cmd_info_id_KVM_PV_INFO_VM: pv_cmd_info_id = 0;
2811 pub const pv_cmd_info_id_KVM_PV_INFO_DUMP: pv_cmd_info_id = 1;
2812 pub type pv_cmd_info_id = ::std::os::raw::c_uint;
2813 #[repr(C)]
2814 #[derive(Debug, Default, Copy, Clone)]
2815 pub struct kvm_s390_pv_info_dump {
2816     pub dump_cpu_buffer_len: u64,
2817     pub dump_config_mem_buffer_per_1m: u64,
2818     pub dump_config_finalize_len: u64,
2819 }
2820 #[repr(C)]
2821 #[derive(Debug, Default, Copy, Clone)]
2822 pub struct kvm_s390_pv_info_vm {
2823     pub inst_calls_list: [u64; 4usize],
2824     pub max_cpus: u64,
2825     pub max_guests: u64,
2826     pub max_guest_addr: u64,
2827     pub feature_indication: u64,
2828 }
2829 #[repr(C)]
2830 #[derive(Debug, Default, Copy, Clone)]
2831 pub struct kvm_s390_pv_info_header {
2832     pub id: u32,
2833     pub len_max: u32,
2834     pub len_written: u32,
2835     pub reserved: u32,
2836 }
2837 #[repr(C)]
2838 #[derive(Copy, Clone)]
2839 pub struct kvm_s390_pv_info {
2840     pub header: kvm_s390_pv_info_header,
2841     pub __bindgen_anon_1: kvm_s390_pv_info__bindgen_ty_1,
2842 }
2843 #[repr(C)]
2844 #[derive(Copy, Clone)]
2845 pub union kvm_s390_pv_info__bindgen_ty_1 {
2846     pub dump: kvm_s390_pv_info_dump,
2847     pub vm: kvm_s390_pv_info_vm,
2848 }
2849 impl Default for kvm_s390_pv_info__bindgen_ty_1 {
default() -> Self2850     fn default() -> Self {
2851         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2852         unsafe {
2853             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2854             s.assume_init()
2855         }
2856     }
2857 }
2858 impl Default for kvm_s390_pv_info {
default() -> Self2859     fn default() -> Self {
2860         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2861         unsafe {
2862             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2863             s.assume_init()
2864         }
2865     }
2866 }
2867 pub const pv_cmd_id_KVM_PV_ENABLE: pv_cmd_id = 0;
2868 pub const pv_cmd_id_KVM_PV_DISABLE: pv_cmd_id = 1;
2869 pub const pv_cmd_id_KVM_PV_SET_SEC_PARMS: pv_cmd_id = 2;
2870 pub const pv_cmd_id_KVM_PV_UNPACK: pv_cmd_id = 3;
2871 pub const pv_cmd_id_KVM_PV_VERIFY: pv_cmd_id = 4;
2872 pub const pv_cmd_id_KVM_PV_PREP_RESET: pv_cmd_id = 5;
2873 pub const pv_cmd_id_KVM_PV_UNSHARE_ALL: pv_cmd_id = 6;
2874 pub const pv_cmd_id_KVM_PV_INFO: pv_cmd_id = 7;
2875 pub const pv_cmd_id_KVM_PV_DUMP: pv_cmd_id = 8;
2876 pub const pv_cmd_id_KVM_PV_ASYNC_CLEANUP_PREPARE: pv_cmd_id = 9;
2877 pub const pv_cmd_id_KVM_PV_ASYNC_CLEANUP_PERFORM: pv_cmd_id = 10;
2878 pub type pv_cmd_id = ::std::os::raw::c_uint;
2879 #[repr(C)]
2880 #[derive(Debug, Default, Copy, Clone)]
2881 pub struct kvm_pv_cmd {
2882     pub cmd: u32,
2883     pub rc: u16,
2884     pub rrc: u16,
2885     pub data: u64,
2886     pub flags: u32,
2887     pub reserved: [u32; 3usize],
2888 }
2889 #[repr(C)]
2890 #[derive(Copy, Clone)]
2891 pub struct kvm_xen_hvm_attr {
2892     pub type_: u16,
2893     pub pad: [u16; 3usize],
2894     pub u: kvm_xen_hvm_attr__bindgen_ty_1,
2895 }
2896 #[repr(C)]
2897 #[derive(Copy, Clone)]
2898 pub union kvm_xen_hvm_attr__bindgen_ty_1 {
2899     pub long_mode: u8,
2900     pub vector: u8,
2901     pub runstate_update_flag: u8,
2902     pub shared_info: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1,
2903     pub evtchn: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2,
2904     pub xen_version: u32,
2905     pub pad: [u64; 8usize],
2906 }
2907 #[repr(C)]
2908 #[derive(Debug, Default, Copy, Clone)]
2909 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 {
2910     pub gfn: u64,
2911 }
2912 #[repr(C)]
2913 #[derive(Copy, Clone)]
2914 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 {
2915     pub send_port: u32,
2916     pub type_: u32,
2917     pub flags: u32,
2918     pub deliver: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1,
2919 }
2920 #[repr(C)]
2921 #[derive(Copy, Clone)]
2922 pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {
2923     pub port: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1,
2924     pub eventfd: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2,
2925     pub padding: [u32; 4usize],
2926 }
2927 #[repr(C)]
2928 #[derive(Debug, Default, Copy, Clone)]
2929 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 {
2930     pub port: u32,
2931     pub vcpu: u32,
2932     pub priority: u32,
2933 }
2934 #[repr(C)]
2935 #[derive(Debug, Default, Copy, Clone)]
2936 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2 {
2937     pub port: u32,
2938     pub fd: i32,
2939 }
2940 impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {
default() -> Self2941     fn default() -> Self {
2942         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2943         unsafe {
2944             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2945             s.assume_init()
2946         }
2947     }
2948 }
2949 impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 {
default() -> Self2950     fn default() -> Self {
2951         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2952         unsafe {
2953             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2954             s.assume_init()
2955         }
2956     }
2957 }
2958 impl Default for kvm_xen_hvm_attr__bindgen_ty_1 {
default() -> Self2959     fn default() -> Self {
2960         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2961         unsafe {
2962             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2963             s.assume_init()
2964         }
2965     }
2966 }
2967 impl Default for kvm_xen_hvm_attr {
default() -> Self2968     fn default() -> Self {
2969         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2970         unsafe {
2971             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2972             s.assume_init()
2973         }
2974     }
2975 }
2976 #[repr(C)]
2977 #[derive(Copy, Clone)]
2978 pub struct kvm_xen_vcpu_attr {
2979     pub type_: u16,
2980     pub pad: [u16; 3usize],
2981     pub u: kvm_xen_vcpu_attr__bindgen_ty_1,
2982 }
2983 #[repr(C)]
2984 #[derive(Copy, Clone)]
2985 pub union kvm_xen_vcpu_attr__bindgen_ty_1 {
2986     pub gpa: u64,
2987     pub pad: [u64; 8usize],
2988     pub runstate: kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1,
2989     pub vcpu_id: u32,
2990     pub timer: kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2,
2991     pub vector: u8,
2992 }
2993 #[repr(C)]
2994 #[derive(Debug, Default, Copy, Clone)]
2995 pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1 {
2996     pub state: u64,
2997     pub state_entry_time: u64,
2998     pub time_running: u64,
2999     pub time_runnable: u64,
3000     pub time_blocked: u64,
3001     pub time_offline: u64,
3002 }
3003 #[repr(C)]
3004 #[derive(Debug, Default, Copy, Clone)]
3005 pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2 {
3006     pub port: u32,
3007     pub priority: u32,
3008     pub expires_ns: u64,
3009 }
3010 impl Default for kvm_xen_vcpu_attr__bindgen_ty_1 {
default() -> Self3011     fn default() -> Self {
3012         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3013         unsafe {
3014             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3015             s.assume_init()
3016         }
3017     }
3018 }
3019 impl Default for kvm_xen_vcpu_attr {
default() -> Self3020     fn default() -> Self {
3021         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3022         unsafe {
3023             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3024             s.assume_init()
3025         }
3026     }
3027 }
3028 pub const sev_cmd_id_KVM_SEV_INIT: sev_cmd_id = 0;
3029 pub const sev_cmd_id_KVM_SEV_ES_INIT: sev_cmd_id = 1;
3030 pub const sev_cmd_id_KVM_SEV_LAUNCH_START: sev_cmd_id = 2;
3031 pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_DATA: sev_cmd_id = 3;
3032 pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_VMSA: sev_cmd_id = 4;
3033 pub const sev_cmd_id_KVM_SEV_LAUNCH_SECRET: sev_cmd_id = 5;
3034 pub const sev_cmd_id_KVM_SEV_LAUNCH_MEASURE: sev_cmd_id = 6;
3035 pub const sev_cmd_id_KVM_SEV_LAUNCH_FINISH: sev_cmd_id = 7;
3036 pub const sev_cmd_id_KVM_SEV_SEND_START: sev_cmd_id = 8;
3037 pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_DATA: sev_cmd_id = 9;
3038 pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_VMSA: sev_cmd_id = 10;
3039 pub const sev_cmd_id_KVM_SEV_SEND_FINISH: sev_cmd_id = 11;
3040 pub const sev_cmd_id_KVM_SEV_RECEIVE_START: sev_cmd_id = 12;
3041 pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_DATA: sev_cmd_id = 13;
3042 pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_VMSA: sev_cmd_id = 14;
3043 pub const sev_cmd_id_KVM_SEV_RECEIVE_FINISH: sev_cmd_id = 15;
3044 pub const sev_cmd_id_KVM_SEV_GUEST_STATUS: sev_cmd_id = 16;
3045 pub const sev_cmd_id_KVM_SEV_DBG_DECRYPT: sev_cmd_id = 17;
3046 pub const sev_cmd_id_KVM_SEV_DBG_ENCRYPT: sev_cmd_id = 18;
3047 pub const sev_cmd_id_KVM_SEV_CERT_EXPORT: sev_cmd_id = 19;
3048 pub const sev_cmd_id_KVM_SEV_GET_ATTESTATION_REPORT: sev_cmd_id = 20;
3049 pub const sev_cmd_id_KVM_SEV_SEND_CANCEL: sev_cmd_id = 21;
3050 pub const sev_cmd_id_KVM_SEV_NR_MAX: sev_cmd_id = 22;
3051 pub type sev_cmd_id = ::std::os::raw::c_uint;
3052 #[repr(C)]
3053 #[derive(Debug, Default, Copy, Clone)]
3054 pub struct kvm_sev_cmd {
3055     pub id: u32,
3056     pub data: u64,
3057     pub error: u32,
3058     pub sev_fd: u32,
3059 }
3060 #[repr(C)]
3061 #[derive(Debug, Default, Copy, Clone)]
3062 pub struct kvm_sev_launch_start {
3063     pub handle: u32,
3064     pub policy: u32,
3065     pub dh_uaddr: u64,
3066     pub dh_len: u32,
3067     pub session_uaddr: u64,
3068     pub session_len: u32,
3069 }
3070 #[repr(C)]
3071 #[derive(Debug, Default, Copy, Clone)]
3072 pub struct kvm_sev_launch_update_data {
3073     pub uaddr: u64,
3074     pub len: u32,
3075 }
3076 #[repr(C)]
3077 #[derive(Debug, Default, Copy, Clone)]
3078 pub struct kvm_sev_launch_secret {
3079     pub hdr_uaddr: u64,
3080     pub hdr_len: u32,
3081     pub guest_uaddr: u64,
3082     pub guest_len: u32,
3083     pub trans_uaddr: u64,
3084     pub trans_len: u32,
3085 }
3086 #[repr(C)]
3087 #[derive(Debug, Default, Copy, Clone)]
3088 pub struct kvm_sev_launch_measure {
3089     pub uaddr: u64,
3090     pub len: u32,
3091 }
3092 #[repr(C)]
3093 #[derive(Debug, Default, Copy, Clone)]
3094 pub struct kvm_sev_guest_status {
3095     pub handle: u32,
3096     pub policy: u32,
3097     pub state: u32,
3098 }
3099 #[repr(C)]
3100 #[derive(Debug, Default, Copy, Clone)]
3101 pub struct kvm_sev_dbg {
3102     pub src_uaddr: u64,
3103     pub dst_uaddr: u64,
3104     pub len: u32,
3105 }
3106 #[repr(C)]
3107 #[derive(Debug, Default, Copy, Clone)]
3108 pub struct kvm_sev_attestation_report {
3109     pub mnonce: [u8; 16usize],
3110     pub uaddr: u64,
3111     pub len: u32,
3112 }
3113 #[repr(C)]
3114 #[derive(Debug, Default, Copy, Clone)]
3115 pub struct kvm_sev_send_start {
3116     pub policy: u32,
3117     pub pdh_cert_uaddr: u64,
3118     pub pdh_cert_len: u32,
3119     pub plat_certs_uaddr: u64,
3120     pub plat_certs_len: u32,
3121     pub amd_certs_uaddr: u64,
3122     pub amd_certs_len: u32,
3123     pub session_uaddr: u64,
3124     pub session_len: u32,
3125 }
3126 #[repr(C)]
3127 #[derive(Debug, Default, Copy, Clone)]
3128 pub struct kvm_sev_send_update_data {
3129     pub hdr_uaddr: u64,
3130     pub hdr_len: u32,
3131     pub guest_uaddr: u64,
3132     pub guest_len: u32,
3133     pub trans_uaddr: u64,
3134     pub trans_len: u32,
3135 }
3136 #[repr(C)]
3137 #[derive(Debug, Default, Copy, Clone)]
3138 pub struct kvm_sev_receive_start {
3139     pub handle: u32,
3140     pub policy: u32,
3141     pub pdh_uaddr: u64,
3142     pub pdh_len: u32,
3143     pub session_uaddr: u64,
3144     pub session_len: u32,
3145 }
3146 #[repr(C)]
3147 #[derive(Debug, Default, Copy, Clone)]
3148 pub struct kvm_sev_receive_update_data {
3149     pub hdr_uaddr: u64,
3150     pub hdr_len: u32,
3151     pub guest_uaddr: u64,
3152     pub guest_len: u32,
3153     pub trans_uaddr: u64,
3154     pub trans_len: u32,
3155 }
3156 #[repr(C)]
3157 #[derive(Copy, Clone)]
3158 pub struct kvm_assigned_pci_dev {
3159     pub assigned_dev_id: u32,
3160     pub busnr: u32,
3161     pub devfn: u32,
3162     pub flags: u32,
3163     pub segnr: u32,
3164     pub __bindgen_anon_1: kvm_assigned_pci_dev__bindgen_ty_1,
3165 }
3166 #[repr(C)]
3167 #[derive(Copy, Clone)]
3168 pub union kvm_assigned_pci_dev__bindgen_ty_1 {
3169     pub reserved: [u32; 11usize],
3170 }
3171 impl Default for kvm_assigned_pci_dev__bindgen_ty_1 {
default() -> Self3172     fn default() -> Self {
3173         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3174         unsafe {
3175             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3176             s.assume_init()
3177         }
3178     }
3179 }
3180 impl Default for kvm_assigned_pci_dev {
default() -> Self3181     fn default() -> Self {
3182         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3183         unsafe {
3184             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3185             s.assume_init()
3186         }
3187     }
3188 }
3189 #[repr(C)]
3190 #[derive(Copy, Clone)]
3191 pub struct kvm_assigned_irq {
3192     pub assigned_dev_id: u32,
3193     pub host_irq: u32,
3194     pub guest_irq: u32,
3195     pub flags: u32,
3196     pub __bindgen_anon_1: kvm_assigned_irq__bindgen_ty_1,
3197 }
3198 #[repr(C)]
3199 #[derive(Copy, Clone)]
3200 pub union kvm_assigned_irq__bindgen_ty_1 {
3201     pub reserved: [u32; 12usize],
3202 }
3203 impl Default for kvm_assigned_irq__bindgen_ty_1 {
default() -> Self3204     fn default() -> Self {
3205         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3206         unsafe {
3207             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3208             s.assume_init()
3209         }
3210     }
3211 }
3212 impl Default for kvm_assigned_irq {
default() -> Self3213     fn default() -> Self {
3214         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3215         unsafe {
3216             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3217             s.assume_init()
3218         }
3219     }
3220 }
3221 #[repr(C)]
3222 #[derive(Debug, Default, Copy, Clone)]
3223 pub struct kvm_assigned_msix_nr {
3224     pub assigned_dev_id: u32,
3225     pub entry_nr: u16,
3226     pub padding: u16,
3227 }
3228 #[repr(C)]
3229 #[derive(Debug, Default, Copy, Clone)]
3230 pub struct kvm_assigned_msix_entry {
3231     pub assigned_dev_id: u32,
3232     pub gsi: u32,
3233     pub entry: u16,
3234     pub padding: [u16; 3usize],
3235 }
3236 #[repr(C)]
3237 #[derive(Debug, Default, Copy, Clone)]
3238 pub struct kvm_hyperv_eventfd {
3239     pub conn_id: u32,
3240     pub fd: i32,
3241     pub flags: u32,
3242     pub padding: [u32; 3usize],
3243 }
3244 #[repr(C)]
3245 #[derive(Debug, Default, Copy, Clone)]
3246 pub struct kvm_dirty_gfn {
3247     pub flags: u32,
3248     pub slot: u32,
3249     pub offset: u64,
3250 }
3251 #[repr(C)]
3252 #[derive(Debug, Default, Copy, Clone)]
3253 pub struct kvm_stats_header {
3254     pub flags: u32,
3255     pub name_size: u32,
3256     pub num_desc: u32,
3257     pub id_offset: u32,
3258     pub desc_offset: u32,
3259     pub data_offset: u32,
3260 }
3261 #[repr(C)]
3262 #[derive(Debug, Default)]
3263 pub struct kvm_stats_desc {
3264     pub flags: u32,
3265     pub exponent: i16,
3266     pub size: u16,
3267     pub offset: u32,
3268     pub bucket_size: u32,
3269     pub name: __IncompleteArrayField<::std::os::raw::c_char>,
3270 }
3271 #[repr(C)]
3272 #[derive(Copy, Clone)]
3273 pub struct kvm_s390_zpci_op {
3274     pub fh: u32,
3275     pub op: u8,
3276     pub pad: [u8; 3usize],
3277     pub u: kvm_s390_zpci_op__bindgen_ty_1,
3278 }
3279 #[repr(C)]
3280 #[derive(Copy, Clone)]
3281 pub union kvm_s390_zpci_op__bindgen_ty_1 {
3282     pub reg_aen: kvm_s390_zpci_op__bindgen_ty_1__bindgen_ty_1,
3283     pub reserved: [u64; 8usize],
3284 }
3285 #[repr(C)]
3286 #[derive(Debug, Default, Copy, Clone)]
3287 pub struct kvm_s390_zpci_op__bindgen_ty_1__bindgen_ty_1 {
3288     pub ibv: u64,
3289     pub sb: u64,
3290     pub flags: u32,
3291     pub noi: u32,
3292     pub isc: u8,
3293     pub sbo: u8,
3294     pub pad: u16,
3295 }
3296 impl Default for kvm_s390_zpci_op__bindgen_ty_1 {
default() -> Self3297     fn default() -> Self {
3298         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3299         unsafe {
3300             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3301             s.assume_init()
3302         }
3303     }
3304 }
3305 impl Default for kvm_s390_zpci_op {
default() -> Self3306     fn default() -> Self {
3307         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3308         unsafe {
3309             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3310             s.assume_init()
3311         }
3312     }
3313 }
3314