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