• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* automatically generated by tools/bindgen-all-the-things */
2 
3 #![allow(clippy::missing_safety_doc)]
4 #![allow(clippy::undocumented_unsafe_blocks)]
5 #![allow(clippy::upper_case_acronyms)]
6 #![allow(non_upper_case_globals)]
7 #![allow(non_camel_case_types)]
8 #![allow(non_snake_case)]
9 #![allow(dead_code)]
10 
11 // Added by kvm_sys/bindgen.sh
12 use zerocopy::FromBytes;
13 use zerocopy::Immutable;
14 use zerocopy::IntoBytes;
15 use zerocopy::KnownLayout;
16 
17 // TODO(b/388092267): Replace this with an upstream equivalent when available.
18 // The original index (236) used in the ChromeOS v6.6 kernel was reused upstream for another
19 // capability, so this may return incorrect information on some kernels.
20 pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA_CROS: u32 = 236;
21 
22 // TODO(qwandor): Update this once the pKVM patches are merged upstream with a stable capability ID.
23 pub const KVM_CAP_ARM_PROTECTED_VM: u32 = 0xffbadab1;
24 pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA: u32 = 0;
25 pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO: u32 = 1;
26 pub const KVM_VM_TYPE_ARM_PROTECTED: u32 = 0x80000000;
27 pub const KVM_X86_PKVM_PROTECTED_VM: u32 = 28;
28 pub const KVM_CAP_X86_PROTECTED_VM: u32 = 0xffbadab2;
29 pub const KVM_CAP_X86_PROTECTED_VM_FLAGS_SET_FW_GPA: u32 = 0;
30 pub const KVM_CAP_X86_PROTECTED_VM_FLAGS_INFO: u32 = 1;
31 pub const KVM_DEV_VFIO_PVIOMMU: u32 = 2;
32 pub const KVM_DEV_VFIO_PVIOMMU_ATTACH: u32 = 1;
33 #[repr(C)]
34 #[derive(Debug, Default, Copy, Clone)]
35 pub struct kvm_vfio_iommu_info {
36     pub device_fd: i32,
37     pub nr_sids: u32,
38 }
39 pub const KVM_DEV_VFIO_PVIOMMU_GET_INFO: u32 = 2;
40 #[repr(C)]
41 #[derive(Debug, Default, Copy, Clone)]
42 pub struct kvm_vfio_iommu_config {
43     pub device_fd: i32,
44     pub sid_idx: u32,
45     pub vsid: u32,
46 }
47 
48 #[repr(C)]
49 #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
50 pub struct __BindgenBitfieldUnit<Storage> {
51     storage: Storage,
52 }
53 impl<Storage> __BindgenBitfieldUnit<Storage> {
54     #[inline]
new(storage: Storage) -> Self55     pub const fn new(storage: Storage) -> Self {
56         Self { storage }
57     }
58 }
59 impl<Storage> __BindgenBitfieldUnit<Storage>
60 where
61     Storage: AsRef<[u8]> + AsMut<[u8]>,
62 {
63     #[inline]
get_bit(&self, index: usize) -> bool64     pub fn get_bit(&self, index: usize) -> bool {
65         debug_assert!(index / 8 < self.storage.as_ref().len());
66         let byte_index = index / 8;
67         let byte = self.storage.as_ref()[byte_index];
68         let bit_index = if cfg!(target_endian = "big") {
69             7 - (index % 8)
70         } else {
71             index % 8
72         };
73         let mask = 1 << bit_index;
74         byte & mask == mask
75     }
76     #[inline]
set_bit(&mut self, index: usize, val: bool)77     pub fn set_bit(&mut self, index: usize, val: bool) {
78         debug_assert!(index / 8 < self.storage.as_ref().len());
79         let byte_index = index / 8;
80         let byte = &mut self.storage.as_mut()[byte_index];
81         let bit_index = if cfg!(target_endian = "big") {
82             7 - (index % 8)
83         } else {
84             index % 8
85         };
86         let mask = 1 << bit_index;
87         if val {
88             *byte |= mask;
89         } else {
90             *byte &= !mask;
91         }
92     }
93     #[inline]
get(&self, bit_offset: usize, bit_width: u8) -> u6494     pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
95         debug_assert!(bit_width <= 64);
96         debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
97         debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
98         let mut val = 0;
99         for i in 0..(bit_width as usize) {
100             if self.get_bit(i + bit_offset) {
101                 let index = if cfg!(target_endian = "big") {
102                     bit_width as usize - 1 - i
103                 } else {
104                     i
105                 };
106                 val |= 1 << index;
107             }
108         }
109         val
110     }
111     #[inline]
set(&mut self, bit_offset: usize, bit_width: u8, val: u64)112     pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
113         debug_assert!(bit_width <= 64);
114         debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
115         debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
116         for i in 0..(bit_width as usize) {
117             let mask = 1 << i;
118             let val_bit_is_set = val & mask == mask;
119             let index = if cfg!(target_endian = "big") {
120                 bit_width as usize - 1 - i
121             } else {
122                 i
123             };
124             self.set_bit(index + bit_offset, val_bit_is_set);
125         }
126     }
127 }
128 #[repr(C)]
129 #[derive(Default)]
130 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
131 impl<T> __IncompleteArrayField<T> {
132     #[inline]
new() -> Self133     pub const fn new() -> Self {
134         __IncompleteArrayField(::std::marker::PhantomData, [])
135     }
136     #[inline]
as_ptr(&self) -> *const T137     pub fn as_ptr(&self) -> *const T {
138         self as *const _ as *const T
139     }
140     #[inline]
as_mut_ptr(&mut self) -> *mut T141     pub fn as_mut_ptr(&mut self) -> *mut T {
142         self as *mut _ as *mut T
143     }
144     #[inline]
as_slice(&self, len: usize) -> &[T]145     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
146         ::std::slice::from_raw_parts(self.as_ptr(), len)
147     }
148     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]149     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
150         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
151     }
152 }
153 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result154     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
155         fmt.write_str("__IncompleteArrayField")
156     }
157 }
158 #[repr(C)]
159 pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
160 impl<T> __BindgenUnionField<T> {
161     #[inline]
new() -> Self162     pub const fn new() -> Self {
163         __BindgenUnionField(::std::marker::PhantomData)
164     }
165     #[inline]
as_ref(&self) -> &T166     pub unsafe fn as_ref(&self) -> &T {
167         ::std::mem::transmute(self)
168     }
169     #[inline]
as_mut(&mut self) -> &mut T170     pub unsafe fn as_mut(&mut self) -> &mut T {
171         ::std::mem::transmute(self)
172     }
173 }
174 impl<T> ::std::default::Default for __BindgenUnionField<T> {
175     #[inline]
default() -> Self176     fn default() -> Self {
177         Self::new()
178     }
179 }
180 impl<T> ::std::clone::Clone for __BindgenUnionField<T> {
181     #[inline]
clone(&self) -> Self182     fn clone(&self) -> Self {
183         *self
184     }
185 }
186 impl<T> ::std::marker::Copy for __BindgenUnionField<T> {}
187 impl<T> ::std::fmt::Debug for __BindgenUnionField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result188     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
189         fmt.write_str("__BindgenUnionField")
190     }
191 }
192 impl<T> ::std::hash::Hash for __BindgenUnionField<T> {
hash<H: ::std::hash::Hasher>(&self, _state: &mut H)193     fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {}
194 }
195 impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
eq(&self, _other: &__BindgenUnionField<T>) -> bool196     fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
197         true
198     }
199 }
200 impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
201 pub const KVM_PIO_PAGE_OFFSET: u32 = 1;
202 pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 2;
203 pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 64;
204 pub const DE_VECTOR: u32 = 0;
205 pub const DB_VECTOR: u32 = 1;
206 pub const BP_VECTOR: u32 = 3;
207 pub const OF_VECTOR: u32 = 4;
208 pub const BR_VECTOR: u32 = 5;
209 pub const UD_VECTOR: u32 = 6;
210 pub const NM_VECTOR: u32 = 7;
211 pub const DF_VECTOR: u32 = 8;
212 pub const TS_VECTOR: u32 = 10;
213 pub const NP_VECTOR: u32 = 11;
214 pub const SS_VECTOR: u32 = 12;
215 pub const GP_VECTOR: u32 = 13;
216 pub const PF_VECTOR: u32 = 14;
217 pub const MF_VECTOR: u32 = 16;
218 pub const AC_VECTOR: u32 = 17;
219 pub const MC_VECTOR: u32 = 18;
220 pub const XM_VECTOR: u32 = 19;
221 pub const VE_VECTOR: u32 = 20;
222 pub const KVM_NR_INTERRUPTS: u32 = 256;
223 pub const KVM_IOAPIC_NUM_PINS: u32 = 24;
224 pub const KVM_IRQCHIP_PIC_MASTER: u32 = 0;
225 pub const KVM_IRQCHIP_PIC_SLAVE: u32 = 1;
226 pub const KVM_IRQCHIP_IOAPIC: u32 = 2;
227 pub const KVM_NR_IRQCHIPS: u32 = 3;
228 pub const KVM_RUN_X86_SMM: u32 = 1;
229 pub const KVM_RUN_X86_BUS_LOCK: u32 = 2;
230 pub const KVM_RUN_X86_GUEST_MODE: u32 = 4;
231 pub const KVM_APIC_REG_SIZE: u32 = 1024;
232 pub const KVM_SREGS2_FLAGS_PDPTRS_VALID: u32 = 1;
233 pub const KVM_MSR_FILTER_MAX_BITMAP_SIZE: u32 = 1536;
234 pub const KVM_MSR_FILTER_READ: u32 = 1;
235 pub const KVM_MSR_FILTER_WRITE: u32 = 2;
236 pub const KVM_MSR_FILTER_RANGE_VALID_MASK: u32 = 3;
237 pub const KVM_MSR_FILTER_MAX_RANGES: u32 = 16;
238 pub const KVM_MSR_FILTER_DEFAULT_ALLOW: u32 = 0;
239 pub const KVM_MSR_FILTER_DEFAULT_DENY: u32 = 1;
240 pub const KVM_MSR_FILTER_VALID_MASK: u32 = 1;
241 pub const KVM_CPUID_FLAG_SIGNIFCANT_INDEX: u32 = 1;
242 pub const KVM_CPUID_FLAG_STATEFUL_FUNC: u32 = 2;
243 pub const KVM_CPUID_FLAG_STATE_READ_NEXT: u32 = 4;
244 pub const KVM_GUESTDBG_USE_SW_BP: u32 = 65536;
245 pub const KVM_GUESTDBG_USE_HW_BP: u32 = 131072;
246 pub const KVM_GUESTDBG_INJECT_DB: u32 = 262144;
247 pub const KVM_GUESTDBG_INJECT_BP: u32 = 524288;
248 pub const KVM_GUESTDBG_BLOCKIRQ: u32 = 1048576;
249 pub const KVM_PIT_FLAGS_HPET_LEGACY: u32 = 1;
250 pub const KVM_PIT_FLAGS_SPEAKER_DATA_ON: u32 = 2;
251 pub const KVM_VCPUEVENT_VALID_NMI_PENDING: u32 = 1;
252 pub const KVM_VCPUEVENT_VALID_SIPI_VECTOR: u32 = 2;
253 pub const KVM_VCPUEVENT_VALID_SHADOW: u32 = 4;
254 pub const KVM_VCPUEVENT_VALID_SMM: u32 = 8;
255 pub const KVM_VCPUEVENT_VALID_PAYLOAD: u32 = 16;
256 pub const KVM_VCPUEVENT_VALID_TRIPLE_FAULT: u32 = 32;
257 pub const KVM_X86_SHADOW_INT_MOV_SS: u32 = 1;
258 pub const KVM_X86_SHADOW_INT_STI: u32 = 2;
259 pub const KVM_MAX_XCRS: u32 = 16;
260 pub const KVM_SYNC_X86_REGS: u32 = 1;
261 pub const KVM_SYNC_X86_SREGS: u32 = 2;
262 pub const KVM_SYNC_X86_EVENTS: u32 = 4;
263 pub const KVM_SYNC_X86_VALID_FIELDS: u32 = 7;
264 pub const KVM_X86_QUIRK_LINT0_REENABLED: u32 = 1;
265 pub const KVM_X86_QUIRK_CD_NW_CLEARED: u32 = 2;
266 pub const KVM_X86_QUIRK_LAPIC_MMIO_HOLE: u32 = 4;
267 pub const KVM_X86_QUIRK_OUT_7E_INC_RIP: u32 = 8;
268 pub const KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT: u32 = 16;
269 pub const KVM_X86_QUIRK_FIX_HYPERCALL_INSN: u32 = 32;
270 pub const KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS: u32 = 64;
271 pub const KVM_X86_QUIRK_SLOT_ZAP_ALL: u32 = 128;
272 pub const KVM_STATE_NESTED_FORMAT_VMX: u32 = 0;
273 pub const KVM_STATE_NESTED_FORMAT_SVM: u32 = 1;
274 pub const KVM_STATE_NESTED_GUEST_MODE: u32 = 1;
275 pub const KVM_STATE_NESTED_RUN_PENDING: u32 = 2;
276 pub const KVM_STATE_NESTED_EVMCS: u32 = 4;
277 pub const KVM_STATE_NESTED_MTF_PENDING: u32 = 8;
278 pub const KVM_STATE_NESTED_GIF_SET: u32 = 256;
279 pub const KVM_STATE_NESTED_SMM_GUEST_MODE: u32 = 1;
280 pub const KVM_STATE_NESTED_SMM_VMXON: u32 = 2;
281 pub const KVM_STATE_NESTED_VMX_VMCS_SIZE: u32 = 4096;
282 pub const KVM_STATE_NESTED_SVM_VMCB_SIZE: u32 = 4096;
283 pub const KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE: u32 = 1;
284 pub const KVM_X86_GRP_SYSTEM: u32 = 0;
285 pub const KVM_X86_XCOMP_GUEST_SUPP: u32 = 0;
286 pub const KVM_X86_GRP_SEV: u32 = 1;
287 pub const KVM_X86_SEV_VMSA_FEATURES: u32 = 0;
288 pub const KVM_PMU_EVENT_ALLOW: u32 = 0;
289 pub const KVM_PMU_EVENT_DENY: u32 = 1;
290 pub const KVM_XEN_HVM_CONFIG_HYPERCALL_MSR: u32 = 1;
291 pub const KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL: u32 = 2;
292 pub const KVM_XEN_HVM_CONFIG_SHARED_INFO: u32 = 4;
293 pub const KVM_XEN_HVM_CONFIG_RUNSTATE: u32 = 8;
294 pub const KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL: u32 = 16;
295 pub const KVM_XEN_HVM_CONFIG_EVTCHN_SEND: u32 = 32;
296 pub const KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG: u32 = 64;
297 pub const KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE: u32 = 128;
298 pub const KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA: u32 = 256;
299 pub const KVM_XEN_EVTCHN_DEASSIGN: u32 = 1;
300 pub const KVM_XEN_EVTCHN_UPDATE: u32 = 2;
301 pub const KVM_XEN_EVTCHN_RESET: u32 = 4;
302 pub const KVM_XEN_ATTR_TYPE_LONG_MODE: u32 = 0;
303 pub const KVM_XEN_ATTR_TYPE_SHARED_INFO: u32 = 1;
304 pub const KVM_XEN_ATTR_TYPE_UPCALL_VECTOR: u32 = 2;
305 pub const KVM_XEN_ATTR_TYPE_EVTCHN: u32 = 3;
306 pub const KVM_XEN_ATTR_TYPE_XEN_VERSION: u32 = 4;
307 pub const KVM_XEN_ATTR_TYPE_RUNSTATE_UPDATE_FLAG: u32 = 5;
308 pub const KVM_XEN_ATTR_TYPE_SHARED_INFO_HVA: u32 = 6;
309 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO: u32 = 0;
310 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO: u32 = 1;
311 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR: u32 = 2;
312 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT: u32 = 3;
313 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA: u32 = 4;
314 pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST: u32 = 5;
315 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID: u32 = 6;
316 pub const KVM_XEN_VCPU_ATTR_TYPE_TIMER: u32 = 7;
317 pub const KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR: u32 = 8;
318 pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO_HVA: u32 = 9;
319 pub const KVM_SEV_SNP_PAGE_TYPE_NORMAL: u32 = 1;
320 pub const KVM_SEV_SNP_PAGE_TYPE_ZERO: u32 = 3;
321 pub const KVM_SEV_SNP_PAGE_TYPE_UNMEASURED: u32 = 4;
322 pub const KVM_SEV_SNP_PAGE_TYPE_SECRETS: u32 = 5;
323 pub const KVM_SEV_SNP_PAGE_TYPE_CPUID: u32 = 6;
324 pub const KVM_SEV_SNP_ID_BLOCK_SIZE: u32 = 96;
325 pub const KVM_SEV_SNP_ID_AUTH_SIZE: u32 = 4096;
326 pub const KVM_SEV_SNP_FINISH_DATA_SIZE: u32 = 32;
327 pub const KVM_X2APIC_API_USE_32BIT_IDS: u32 = 1;
328 pub const KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK: u32 = 2;
329 pub const KVM_HYPERV_CONN_ID_MASK: u32 = 16777215;
330 pub const KVM_HYPERV_EVENTFD_DEASSIGN: u32 = 1;
331 pub const KVM_PMU_MASKED_ENTRY_UMASK_MASK_SHIFT: u32 = 56;
332 pub const KVM_VCPU_TSC_CTRL: u32 = 0;
333 pub const KVM_VCPU_TSC_OFFSET: u32 = 0;
334 pub const KVM_X86_DEFAULT_VM: u32 = 0;
335 pub const KVM_X86_SW_PROTECTED_VM: u32 = 1;
336 pub const KVM_X86_SEV_VM: u32 = 2;
337 pub const KVM_X86_SEV_ES_VM: u32 = 3;
338 pub const KVM_X86_SNP_VM: u32 = 4;
339 pub const KVM_API_VERSION: u32 = 12;
340 pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1;
341 pub const KVM_MEM_READONLY: u32 = 2;
342 pub const KVM_MEM_GUEST_MEMFD: u32 = 4;
343 pub const KVM_MEM_NON_COHERENT_DMA: u32 = 8;
344 pub const KVM_PIT_SPEAKER_DUMMY: 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_EXIT_LOONGARCH_IOCSR: u32 = 38;
390 pub const KVM_EXIT_MEMORY_FAULT: u32 = 39;
391 pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1;
392 pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2;
393 pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3;
394 pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4;
395 pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1;
396 pub const KVM_EXIT_IO_IN: u32 = 0;
397 pub const KVM_EXIT_IO_OUT: u32 = 1;
398 pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1;
399 pub const KVM_SYSTEM_EVENT_RESET: u32 = 2;
400 pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3;
401 pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4;
402 pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5;
403 pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6;
404 pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1;
405 pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2;
406 pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4;
407 pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7;
408 pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1;
409 pub const KVM_MEMORY_EXIT_FLAG_PRIVATE: u32 = 8;
410 pub const SYNC_REGS_SIZE_BYTES: u32 = 2048;
411 pub const KVM_MP_STATE_RUNNABLE: u32 = 0;
412 pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1;
413 pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2;
414 pub const KVM_MP_STATE_HALTED: u32 = 3;
415 pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4;
416 pub const KVM_MP_STATE_STOPPED: u32 = 5;
417 pub const KVM_MP_STATE_CHECK_STOP: u32 = 6;
418 pub const KVM_MP_STATE_OPERATING: u32 = 7;
419 pub const KVM_MP_STATE_LOAD: u32 = 8;
420 pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9;
421 pub const KVM_MP_STATE_SUSPENDED: u32 = 10;
422 pub const KVM_GUESTDBG_ENABLE: u32 = 1;
423 pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2;
424 pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1;
425 pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2;
426 pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4;
427 pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8;
428 pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15;
429 pub const KVMIO: u32 = 174;
430 pub const KVM_VM_S390_UCONTROL: u32 = 1;
431 pub const KVM_VM_PPC_HV: u32 = 1;
432 pub const KVM_VM_PPC_PR: u32 = 2;
433 pub const KVM_VM_MIPS_AUTO: u32 = 0;
434 pub const KVM_VM_MIPS_VZ: u32 = 1;
435 pub const KVM_VM_MIPS_TE: u32 = 2;
436 pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1;
437 pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255;
438 pub const KVM_CAP_IRQCHIP: u32 = 0;
439 pub const KVM_CAP_HLT: u32 = 1;
440 pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2;
441 pub const KVM_CAP_USER_MEMORY: u32 = 3;
442 pub const KVM_CAP_SET_TSS_ADDR: u32 = 4;
443 pub const KVM_CAP_VAPIC: u32 = 6;
444 pub const KVM_CAP_EXT_CPUID: u32 = 7;
445 pub const KVM_CAP_CLOCKSOURCE: u32 = 8;
446 pub const KVM_CAP_NR_VCPUS: u32 = 9;
447 pub const KVM_CAP_NR_MEMSLOTS: u32 = 10;
448 pub const KVM_CAP_PIT: u32 = 11;
449 pub const KVM_CAP_NOP_IO_DELAY: u32 = 12;
450 pub const KVM_CAP_PV_MMU: u32 = 13;
451 pub const KVM_CAP_MP_STATE: u32 = 14;
452 pub const KVM_CAP_COALESCED_MMIO: u32 = 15;
453 pub const KVM_CAP_SYNC_MMU: u32 = 16;
454 pub const KVM_CAP_IOMMU: u32 = 18;
455 pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21;
456 pub const KVM_CAP_USER_NMI: u32 = 22;
457 pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23;
458 pub const KVM_CAP_REINJECT_CONTROL: u32 = 24;
459 pub const KVM_CAP_IRQ_ROUTING: u32 = 25;
460 pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26;
461 pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29;
462 pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30;
463 pub const KVM_CAP_MCE: u32 = 31;
464 pub const KVM_CAP_IRQFD: u32 = 32;
465 pub const KVM_CAP_PIT2: u32 = 33;
466 pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34;
467 pub const KVM_CAP_PIT_STATE2: u32 = 35;
468 pub const KVM_CAP_IOEVENTFD: u32 = 36;
469 pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37;
470 pub const KVM_CAP_XEN_HVM: u32 = 38;
471 pub const KVM_CAP_ADJUST_CLOCK: u32 = 39;
472 pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40;
473 pub const KVM_CAP_VCPU_EVENTS: u32 = 41;
474 pub const KVM_CAP_S390_PSW: u32 = 42;
475 pub const KVM_CAP_PPC_SEGSTATE: u32 = 43;
476 pub const KVM_CAP_HYPERV: u32 = 44;
477 pub const KVM_CAP_HYPERV_VAPIC: u32 = 45;
478 pub const KVM_CAP_HYPERV_SPIN: u32 = 46;
479 pub const KVM_CAP_PCI_SEGMENT: u32 = 47;
480 pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48;
481 pub const KVM_CAP_INTR_SHADOW: u32 = 49;
482 pub const KVM_CAP_DEBUGREGS: u32 = 50;
483 pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51;
484 pub const KVM_CAP_PPC_OSI: u32 = 52;
485 pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53;
486 pub const KVM_CAP_ENABLE_CAP: u32 = 54;
487 pub const KVM_CAP_XSAVE: u32 = 55;
488 pub const KVM_CAP_XCRS: u32 = 56;
489 pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57;
490 pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58;
491 pub const KVM_CAP_ASYNC_PF: u32 = 59;
492 pub const KVM_CAP_TSC_CONTROL: u32 = 60;
493 pub const KVM_CAP_GET_TSC_KHZ: u32 = 61;
494 pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62;
495 pub const KVM_CAP_SPAPR_TCE: u32 = 63;
496 pub const KVM_CAP_PPC_SMT: u32 = 64;
497 pub const KVM_CAP_PPC_RMA: u32 = 65;
498 pub const KVM_CAP_MAX_VCPUS: u32 = 66;
499 pub const KVM_CAP_PPC_HIOR: u32 = 67;
500 pub const KVM_CAP_PPC_PAPR: u32 = 68;
501 pub const KVM_CAP_SW_TLB: u32 = 69;
502 pub const KVM_CAP_ONE_REG: u32 = 70;
503 pub const KVM_CAP_S390_GMAP: u32 = 71;
504 pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72;
505 pub const KVM_CAP_S390_UCONTROL: u32 = 73;
506 pub const KVM_CAP_SYNC_REGS: u32 = 74;
507 pub const KVM_CAP_PCI_2_3: u32 = 75;
508 pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76;
509 pub const KVM_CAP_SIGNAL_MSI: u32 = 77;
510 pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78;
511 pub const KVM_CAP_S390_COW: u32 = 79;
512 pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80;
513 pub const KVM_CAP_READONLY_MEM: u32 = 81;
514 pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82;
515 pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83;
516 pub const KVM_CAP_PPC_HTAB_FD: u32 = 84;
517 pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85;
518 pub const KVM_CAP_PPC_EPR: u32 = 86;
519 pub const KVM_CAP_ARM_PSCI: u32 = 87;
520 pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88;
521 pub const KVM_CAP_DEVICE_CTRL: u32 = 89;
522 pub const KVM_CAP_IRQ_MPIC: u32 = 90;
523 pub const KVM_CAP_PPC_RTAS: u32 = 91;
524 pub const KVM_CAP_IRQ_XICS: u32 = 92;
525 pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93;
526 pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94;
527 pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95;
528 pub const KVM_CAP_HYPERV_TIME: u32 = 96;
529 pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97;
530 pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98;
531 pub const KVM_CAP_S390_IRQCHIP: u32 = 99;
532 pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100;
533 pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101;
534 pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102;
535 pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103;
536 pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104;
537 pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105;
538 pub const KVM_CAP_S390_USER_SIGP: u32 = 106;
539 pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107;
540 pub const KVM_CAP_S390_MEM_OP: u32 = 108;
541 pub const KVM_CAP_S390_USER_STSI: u32 = 109;
542 pub const KVM_CAP_S390_SKEYS: u32 = 110;
543 pub const KVM_CAP_MIPS_FPU: u32 = 111;
544 pub const KVM_CAP_MIPS_MSA: u32 = 112;
545 pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113;
546 pub const KVM_CAP_S390_IRQ_STATE: u32 = 114;
547 pub const KVM_CAP_PPC_HWRNG: u32 = 115;
548 pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116;
549 pub const KVM_CAP_X86_SMM: u32 = 117;
550 pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118;
551 pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119;
552 pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120;
553 pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121;
554 pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122;
555 pub const KVM_CAP_HYPERV_SYNIC: u32 = 123;
556 pub const KVM_CAP_S390_RI: u32 = 124;
557 pub const KVM_CAP_SPAPR_TCE_64: u32 = 125;
558 pub const KVM_CAP_ARM_PMU_V3: u32 = 126;
559 pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127;
560 pub const KVM_CAP_MAX_VCPU_ID: u32 = 128;
561 pub const KVM_CAP_X2APIC_API: u32 = 129;
562 pub const KVM_CAP_S390_USER_INSTR0: u32 = 130;
563 pub const KVM_CAP_MSI_DEVID: u32 = 131;
564 pub const KVM_CAP_PPC_HTM: u32 = 132;
565 pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133;
566 pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134;
567 pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135;
568 pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136;
569 pub const KVM_CAP_MIPS_VZ: u32 = 137;
570 pub const KVM_CAP_MIPS_TE: u32 = 138;
571 pub const KVM_CAP_MIPS_64BIT: u32 = 139;
572 pub const KVM_CAP_S390_GS: u32 = 140;
573 pub const KVM_CAP_S390_AIS: u32 = 141;
574 pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142;
575 pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143;
576 pub const KVM_CAP_ARM_USER_IRQ: u32 = 144;
577 pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145;
578 pub const KVM_CAP_PPC_FWNMI: u32 = 146;
579 pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147;
580 pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148;
581 pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149;
582 pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150;
583 pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151;
584 pub const KVM_CAP_S390_BPB: u32 = 152;
585 pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153;
586 pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154;
587 pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155;
588 pub const KVM_CAP_S390_HPAGE_1M: u32 = 156;
589 pub const KVM_CAP_NESTED_STATE: u32 = 157;
590 pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158;
591 pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159;
592 pub const KVM_CAP_PPC_NESTED_HV: u32 = 160;
593 pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161;
594 pub const KVM_CAP_COALESCED_PIO: u32 = 162;
595 pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163;
596 pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164;
597 pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165;
598 pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166;
599 pub const KVM_CAP_HYPERV_CPUID: u32 = 167;
600 pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168;
601 pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169;
602 pub const KVM_CAP_ARM_SVE: u32 = 170;
603 pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171;
604 pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172;
605 pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173;
606 pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174;
607 pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175;
608 pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176;
609 pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177;
610 pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178;
611 pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179;
612 pub const KVM_CAP_S390_PROTECTED: u32 = 180;
613 pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181;
614 pub const KVM_CAP_HALT_POLL: u32 = 182;
615 pub const KVM_CAP_ASYNC_PF_INT: u32 = 183;
616 pub const KVM_CAP_LAST_CPU: u32 = 184;
617 pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185;
618 pub const KVM_CAP_S390_DIAG318: u32 = 186;
619 pub const KVM_CAP_STEAL_TIME: u32 = 187;
620 pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188;
621 pub const KVM_CAP_X86_MSR_FILTER: u32 = 189;
622 pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190;
623 pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191;
624 pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192;
625 pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193;
626 pub const KVM_CAP_PPC_DAWR1: u32 = 194;
627 pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195;
628 pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196;
629 pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197;
630 pub const KVM_CAP_PTP_KVM: u32 = 198;
631 pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199;
632 pub const KVM_CAP_SREGS2: u32 = 200;
633 pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201;
634 pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202;
635 pub const KVM_CAP_BINARY_STATS_FD: u32 = 203;
636 pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204;
637 pub const KVM_CAP_ARM_MTE: u32 = 205;
638 pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206;
639 pub const KVM_CAP_VM_GPA_BITS: u32 = 207;
640 pub const KVM_CAP_XSAVE2: u32 = 208;
641 pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209;
642 pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210;
643 pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211;
644 pub const KVM_CAP_PMU_CAPABILITY: u32 = 212;
645 pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213;
646 pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214;
647 pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215;
648 pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216;
649 pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217;
650 pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218;
651 pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219;
652 pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220;
653 pub const KVM_CAP_S390_ZPCI_OP: u32 = 221;
654 pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222;
655 pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223;
656 pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224;
657 pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225;
658 pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226;
659 pub const KVM_CAP_COUNTER_OFFSET: u32 = 227;
660 pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228;
661 pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229;
662 pub const KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES: u32 = 230;
663 pub const KVM_CAP_USER_MEMORY2: u32 = 231;
664 pub const KVM_CAP_MEMORY_FAULT_INFO: u32 = 232;
665 pub const KVM_CAP_MEMORY_ATTRIBUTES: u32 = 233;
666 pub const KVM_CAP_GUEST_MEMFD: u32 = 234;
667 pub const KVM_CAP_VM_TYPES: u32 = 235;
668 pub const KVM_CAP_PRE_FAULT_MEMORY: u32 = 236;
669 pub const KVM_CAP_X86_APIC_BUS_CYCLES_NS: u32 = 237;
670 pub const KVM_CAP_X86_GUEST_MODE: u32 = 238;
671 pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA: u32 = 239;
672 pub const KVM_CAP_GET_CUR_CPUFREQ: u32 = 512;
673 pub const KVM_CAP_UTIL_HINT: u32 = 513;
674 pub const KVM_CAP_GET_CPUFREQ_TBL: u32 = 514;
675 pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1;
676 pub const KVM_IRQ_ROUTING_MSI: u32 = 2;
677 pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3;
678 pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4;
679 pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5;
680 pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1;
681 pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2;
682 pub const KVM_CLOCK_TSC_STABLE: u32 = 2;
683 pub const KVM_CLOCK_REALTIME: u32 = 4;
684 pub const KVM_CLOCK_HOST_TSC: u32 = 8;
685 pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0;
686 pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1;
687 pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936;
688 pub const KVM_REG_GENERIC: u32 = 0;
689 pub const KVM_REG_PPC: u64 = 1152921504606846976;
690 pub const KVM_REG_X86: u64 = 2305843009213693952;
691 pub const KVM_REG_IA64: u64 = 3458764513820540928;
692 pub const KVM_REG_ARM: u64 = 4611686018427387904;
693 pub const KVM_REG_S390: u64 = 5764607523034234880;
694 pub const KVM_REG_ARM64: u64 = 6917529027641081856;
695 pub const KVM_REG_MIPS: u64 = 8070450532247928832;
696 pub const KVM_REG_RISCV: i64 = -9223372036854775808;
697 pub const KVM_REG_LOONGARCH: i64 = -8070450532247928832;
698 pub const KVM_REG_SIZE_SHIFT: u32 = 52;
699 pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440;
700 pub const KVM_REG_SIZE_U8: u32 = 0;
701 pub const KVM_REG_SIZE_U16: u64 = 4503599627370496;
702 pub const KVM_REG_SIZE_U32: u64 = 9007199254740992;
703 pub const KVM_REG_SIZE_U64: u64 = 13510798882111488;
704 pub const KVM_REG_SIZE_U128: u64 = 18014398509481984;
705 pub const KVM_REG_SIZE_U256: u64 = 22517998136852480;
706 pub const KVM_REG_SIZE_U512: u64 = 27021597764222976;
707 pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472;
708 pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968;
709 pub const KVM_MSI_VALID_DEVID: u32 = 1;
710 pub const KVM_CREATE_DEVICE_TEST: u32 = 1;
711 pub const KVM_DEV_VFIO_FILE: u32 = 1;
712 pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1;
713 pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2;
714 pub const KVM_DEV_VFIO_GROUP: u32 = 1;
715 pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1;
716 pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2;
717 pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3;
718 pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1;
719 pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2;
720 pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1;
721 pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2;
722 pub const KVM_DIRTY_GFN_F_MASK: u32 = 3;
723 pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1;
724 pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2;
725 pub const KVM_PMU_CAP_DISABLE: u32 = 1;
726 pub const KVM_STATS_TYPE_SHIFT: u32 = 0;
727 pub const KVM_STATS_TYPE_MASK: u32 = 15;
728 pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0;
729 pub const KVM_STATS_TYPE_INSTANT: u32 = 1;
730 pub const KVM_STATS_TYPE_PEAK: u32 = 2;
731 pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3;
732 pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4;
733 pub const KVM_STATS_TYPE_MAX: u32 = 4;
734 pub const KVM_STATS_UNIT_SHIFT: u32 = 4;
735 pub const KVM_STATS_UNIT_MASK: u32 = 240;
736 pub const KVM_STATS_UNIT_NONE: u32 = 0;
737 pub const KVM_STATS_UNIT_BYTES: u32 = 16;
738 pub const KVM_STATS_UNIT_SECONDS: u32 = 32;
739 pub const KVM_STATS_UNIT_CYCLES: u32 = 48;
740 pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64;
741 pub const KVM_STATS_UNIT_MAX: u32 = 64;
742 pub const KVM_STATS_BASE_SHIFT: u32 = 8;
743 pub const KVM_STATS_BASE_MASK: u32 = 3840;
744 pub const KVM_STATS_BASE_POW10: u32 = 0;
745 pub const KVM_STATS_BASE_POW2: u32 = 256;
746 pub const KVM_STATS_BASE_MAX: u32 = 256;
747 pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1;
748 pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2;
749 pub const KVM_MEMORY_ATTRIBUTE_PRIVATE: u32 = 8;
750 pub type __s128 = i128;
751 pub type __u128 = u128;
752 pub type __le16 = u16;
753 pub type __be16 = u16;
754 pub type __le32 = u32;
755 pub type __be32 = u32;
756 pub type __le64 = u64;
757 pub type __be64 = u64;
758 pub type __sum16 = u16;
759 pub type __wsum = u32;
760 pub type __poll_t = ::std::os::raw::c_uint;
761 #[repr(C)]
762 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
763 pub struct kvm_pic_state {
764     pub last_irr: u8,
765     pub irr: u8,
766     pub imr: u8,
767     pub isr: u8,
768     pub priority_add: u8,
769     pub irq_base: u8,
770     pub read_reg_select: u8,
771     pub poll: u8,
772     pub special_mask: u8,
773     pub init_state: u8,
774     pub auto_eoi: u8,
775     pub rotate_on_auto_eoi: u8,
776     pub special_fully_nested_mode: u8,
777     pub init4: u8,
778     pub elcr: u8,
779     pub elcr_mask: u8,
780 }
781 #[repr(C)]
782 #[derive(Copy, Clone)]
783 pub struct kvm_ioapic_state {
784     pub base_address: u64,
785     pub ioregsel: u32,
786     pub id: u32,
787     pub irr: u32,
788     pub pad: u32,
789     pub redirtbl: [kvm_ioapic_state__bindgen_ty_1; 24usize],
790 }
791 #[repr(C)]
792 #[derive(Copy, Clone)]
793 pub union kvm_ioapic_state__bindgen_ty_1 {
794     pub bits: u64,
795     pub fields: kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1,
796 }
797 #[repr(C)]
798 #[derive(Debug, Default, Copy, Clone)]
799 pub struct kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 {
800     pub vector: u8,
801     pub _bitfield_align_1: [u8; 0],
802     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
803     pub reserved: [u8; 4usize],
804     pub dest_id: u8,
805 }
806 impl kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 {
807     #[inline]
delivery_mode(&self) -> u8808     pub fn delivery_mode(&self) -> u8 {
809         unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 3u8) as u8) }
810     }
811     #[inline]
set_delivery_mode(&mut self, val: u8)812     pub fn set_delivery_mode(&mut self, val: u8) {
813         unsafe {
814             let val: u8 = ::std::mem::transmute(val);
815             self._bitfield_1.set(0usize, 3u8, val as u64)
816         }
817     }
818     #[inline]
dest_mode(&self) -> u8819     pub fn dest_mode(&self) -> u8 {
820         unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
821     }
822     #[inline]
set_dest_mode(&mut self, val: u8)823     pub fn set_dest_mode(&mut self, val: u8) {
824         unsafe {
825             let val: u8 = ::std::mem::transmute(val);
826             self._bitfield_1.set(3usize, 1u8, val as u64)
827         }
828     }
829     #[inline]
delivery_status(&self) -> u8830     pub fn delivery_status(&self) -> u8 {
831         unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) }
832     }
833     #[inline]
set_delivery_status(&mut self, val: u8)834     pub fn set_delivery_status(&mut self, val: u8) {
835         unsafe {
836             let val: u8 = ::std::mem::transmute(val);
837             self._bitfield_1.set(4usize, 1u8, val as u64)
838         }
839     }
840     #[inline]
polarity(&self) -> u8841     pub fn polarity(&self) -> u8 {
842         unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) }
843     }
844     #[inline]
set_polarity(&mut self, val: u8)845     pub fn set_polarity(&mut self, val: u8) {
846         unsafe {
847             let val: u8 = ::std::mem::transmute(val);
848             self._bitfield_1.set(5usize, 1u8, val as u64)
849         }
850     }
851     #[inline]
remote_irr(&self) -> u8852     pub fn remote_irr(&self) -> u8 {
853         unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) }
854     }
855     #[inline]
set_remote_irr(&mut self, val: u8)856     pub fn set_remote_irr(&mut self, val: u8) {
857         unsafe {
858             let val: u8 = ::std::mem::transmute(val);
859             self._bitfield_1.set(6usize, 1u8, val as u64)
860         }
861     }
862     #[inline]
trig_mode(&self) -> u8863     pub fn trig_mode(&self) -> u8 {
864         unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) }
865     }
866     #[inline]
set_trig_mode(&mut self, val: u8)867     pub fn set_trig_mode(&mut self, val: u8) {
868         unsafe {
869             let val: u8 = ::std::mem::transmute(val);
870             self._bitfield_1.set(7usize, 1u8, val as u64)
871         }
872     }
873     #[inline]
mask(&self) -> u8874     pub fn mask(&self) -> u8 {
875         unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
876     }
877     #[inline]
set_mask(&mut self, val: u8)878     pub fn set_mask(&mut self, val: u8) {
879         unsafe {
880             let val: u8 = ::std::mem::transmute(val);
881             self._bitfield_1.set(8usize, 1u8, val as u64)
882         }
883     }
884     #[inline]
reserve(&self) -> u8885     pub fn reserve(&self) -> u8 {
886         unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 7u8) as u8) }
887     }
888     #[inline]
set_reserve(&mut self, val: u8)889     pub fn set_reserve(&mut self, val: u8) {
890         unsafe {
891             let val: u8 = ::std::mem::transmute(val);
892             self._bitfield_1.set(9usize, 7u8, val as u64)
893         }
894     }
895     #[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]>896     pub fn new_bitfield_1(
897         delivery_mode: u8,
898         dest_mode: u8,
899         delivery_status: u8,
900         polarity: u8,
901         remote_irr: u8,
902         trig_mode: u8,
903         mask: u8,
904         reserve: u8,
905     ) -> __BindgenBitfieldUnit<[u8; 2usize]> {
906         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
907         __bindgen_bitfield_unit.set(0usize, 3u8, {
908             let delivery_mode: u8 = unsafe { ::std::mem::transmute(delivery_mode) };
909             delivery_mode as u64
910         });
911         __bindgen_bitfield_unit.set(3usize, 1u8, {
912             let dest_mode: u8 = unsafe { ::std::mem::transmute(dest_mode) };
913             dest_mode as u64
914         });
915         __bindgen_bitfield_unit.set(4usize, 1u8, {
916             let delivery_status: u8 = unsafe { ::std::mem::transmute(delivery_status) };
917             delivery_status as u64
918         });
919         __bindgen_bitfield_unit.set(5usize, 1u8, {
920             let polarity: u8 = unsafe { ::std::mem::transmute(polarity) };
921             polarity as u64
922         });
923         __bindgen_bitfield_unit.set(6usize, 1u8, {
924             let remote_irr: u8 = unsafe { ::std::mem::transmute(remote_irr) };
925             remote_irr as u64
926         });
927         __bindgen_bitfield_unit.set(7usize, 1u8, {
928             let trig_mode: u8 = unsafe { ::std::mem::transmute(trig_mode) };
929             trig_mode as u64
930         });
931         __bindgen_bitfield_unit.set(8usize, 1u8, {
932             let mask: u8 = unsafe { ::std::mem::transmute(mask) };
933             mask as u64
934         });
935         __bindgen_bitfield_unit.set(9usize, 7u8, {
936             let reserve: u8 = unsafe { ::std::mem::transmute(reserve) };
937             reserve as u64
938         });
939         __bindgen_bitfield_unit
940     }
941 }
942 impl Default for kvm_ioapic_state__bindgen_ty_1 {
default() -> Self943     fn default() -> Self {
944         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
945         unsafe {
946             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
947             s.assume_init()
948         }
949     }
950 }
951 impl Default for kvm_ioapic_state {
default() -> Self952     fn default() -> Self {
953         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
954         unsafe {
955             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
956             s.assume_init()
957         }
958     }
959 }
960 #[repr(C)]
961 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
962 pub struct kvm_regs {
963     pub rax: u64,
964     pub rbx: u64,
965     pub rcx: u64,
966     pub rdx: u64,
967     pub rsi: u64,
968     pub rdi: u64,
969     pub rsp: u64,
970     pub rbp: u64,
971     pub r8: u64,
972     pub r9: u64,
973     pub r10: u64,
974     pub r11: u64,
975     pub r12: u64,
976     pub r13: u64,
977     pub r14: u64,
978     pub r15: u64,
979     pub rip: u64,
980     pub rflags: u64,
981 }
982 #[repr(C)]
983 #[derive(Debug, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
984 pub struct kvm_lapic_state {
985     pub regs: [::std::os::raw::c_char; 1024usize],
986 }
987 impl Default for kvm_lapic_state {
default() -> Self988     fn default() -> Self {
989         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
990         unsafe {
991             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
992             s.assume_init()
993         }
994     }
995 }
996 #[repr(C)]
997 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
998 pub struct kvm_segment {
999     pub base: u64,
1000     pub limit: u32,
1001     pub selector: u16,
1002     pub type_: u8,
1003     pub present: u8,
1004     pub dpl: u8,
1005     pub db: u8,
1006     pub s: u8,
1007     pub l: u8,
1008     pub g: u8,
1009     pub avl: u8,
1010     pub unusable: u8,
1011     pub padding: u8,
1012 }
1013 #[repr(C)]
1014 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1015 pub struct kvm_dtable {
1016     pub base: u64,
1017     pub limit: u16,
1018     pub padding: [u16; 3usize],
1019 }
1020 #[repr(C)]
1021 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1022 pub struct kvm_sregs {
1023     pub cs: kvm_segment,
1024     pub ds: kvm_segment,
1025     pub es: kvm_segment,
1026     pub fs: kvm_segment,
1027     pub gs: kvm_segment,
1028     pub ss: kvm_segment,
1029     pub tr: kvm_segment,
1030     pub ldt: kvm_segment,
1031     pub gdt: kvm_dtable,
1032     pub idt: kvm_dtable,
1033     pub cr0: u64,
1034     pub cr2: u64,
1035     pub cr3: u64,
1036     pub cr4: u64,
1037     pub cr8: u64,
1038     pub efer: u64,
1039     pub apic_base: u64,
1040     pub interrupt_bitmap: [u64; 4usize],
1041 }
1042 #[repr(C)]
1043 #[derive(Debug, Default, Copy, Clone)]
1044 pub struct kvm_sregs2 {
1045     pub cs: kvm_segment,
1046     pub ds: kvm_segment,
1047     pub es: kvm_segment,
1048     pub fs: kvm_segment,
1049     pub gs: kvm_segment,
1050     pub ss: kvm_segment,
1051     pub tr: kvm_segment,
1052     pub ldt: kvm_segment,
1053     pub gdt: kvm_dtable,
1054     pub idt: kvm_dtable,
1055     pub cr0: u64,
1056     pub cr2: u64,
1057     pub cr3: u64,
1058     pub cr4: u64,
1059     pub cr8: u64,
1060     pub efer: u64,
1061     pub apic_base: u64,
1062     pub flags: u64,
1063     pub pdptrs: [u64; 4usize],
1064 }
1065 #[repr(C)]
1066 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1067 pub struct kvm_fpu {
1068     pub fpr: [[u8; 16usize]; 8usize],
1069     pub fcw: u16,
1070     pub fsw: u16,
1071     pub ftwx: u8,
1072     pub pad1: u8,
1073     pub last_opcode: u16,
1074     pub last_ip: u64,
1075     pub last_dp: u64,
1076     pub xmm: [[u8; 16usize]; 16usize],
1077     pub mxcsr: u32,
1078     pub pad2: u32,
1079 }
1080 #[repr(C)]
1081 #[derive(Debug, Default, Copy, Clone)]
1082 pub struct kvm_msr_entry {
1083     pub index: u32,
1084     pub reserved: u32,
1085     pub data: u64,
1086 }
1087 #[repr(C)]
1088 #[derive(Debug, Default)]
1089 pub struct kvm_msrs {
1090     pub nmsrs: u32,
1091     pub pad: u32,
1092     pub entries: __IncompleteArrayField<kvm_msr_entry>,
1093 }
1094 #[repr(C)]
1095 #[derive(Debug, Default)]
1096 pub struct kvm_msr_list {
1097     pub nmsrs: u32,
1098     pub indices: __IncompleteArrayField<u32>,
1099 }
1100 #[repr(C)]
1101 #[derive(Debug, Copy, Clone)]
1102 pub struct kvm_msr_filter_range {
1103     pub flags: u32,
1104     pub nmsrs: u32,
1105     pub base: u32,
1106     pub bitmap: *mut u8,
1107 }
1108 impl Default for kvm_msr_filter_range {
default() -> Self1109     fn default() -> Self {
1110         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1111         unsafe {
1112             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1113             s.assume_init()
1114         }
1115     }
1116 }
1117 #[repr(C)]
1118 #[derive(Debug, Copy, Clone)]
1119 pub struct kvm_msr_filter {
1120     pub flags: u32,
1121     pub ranges: [kvm_msr_filter_range; 16usize],
1122 }
1123 impl Default for kvm_msr_filter {
default() -> Self1124     fn default() -> Self {
1125         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1126         unsafe {
1127             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1128             s.assume_init()
1129         }
1130     }
1131 }
1132 #[repr(C)]
1133 #[derive(Debug, Default, Copy, Clone)]
1134 pub struct kvm_cpuid_entry {
1135     pub function: u32,
1136     pub eax: u32,
1137     pub ebx: u32,
1138     pub ecx: u32,
1139     pub edx: u32,
1140     pub padding: u32,
1141 }
1142 #[repr(C)]
1143 #[derive(Debug, Default)]
1144 pub struct kvm_cpuid {
1145     pub nent: u32,
1146     pub padding: u32,
1147     pub entries: __IncompleteArrayField<kvm_cpuid_entry>,
1148 }
1149 #[repr(C)]
1150 #[derive(Debug, Default, Copy, Clone)]
1151 pub struct kvm_cpuid_entry2 {
1152     pub function: u32,
1153     pub index: u32,
1154     pub flags: u32,
1155     pub eax: u32,
1156     pub ebx: u32,
1157     pub ecx: u32,
1158     pub edx: u32,
1159     pub padding: [u32; 3usize],
1160 }
1161 #[repr(C)]
1162 #[derive(Debug, Default)]
1163 pub struct kvm_cpuid2 {
1164     pub nent: u32,
1165     pub padding: u32,
1166     pub entries: __IncompleteArrayField<kvm_cpuid_entry2>,
1167 }
1168 #[repr(C)]
1169 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1170 pub struct kvm_pit_channel_state {
1171     pub count: u32,
1172     pub latched_count: u16,
1173     pub count_latched: u8,
1174     pub status_latched: u8,
1175     pub status: u8,
1176     pub read_state: u8,
1177     pub write_state: u8,
1178     pub write_latch: u8,
1179     pub rw_mode: u8,
1180     pub mode: u8,
1181     pub bcd: u8,
1182     pub gate: u8,
1183     pub count_load_time: i64,
1184 }
1185 #[repr(C)]
1186 #[derive(Debug, Default, Copy, Clone)]
1187 pub struct kvm_debug_exit_arch {
1188     pub exception: u32,
1189     pub pad: u32,
1190     pub pc: u64,
1191     pub dr6: u64,
1192     pub dr7: u64,
1193 }
1194 #[repr(C)]
1195 #[derive(Debug, Default, Copy, Clone)]
1196 pub struct kvm_guest_debug_arch {
1197     pub debugreg: [u64; 8usize],
1198 }
1199 #[repr(C)]
1200 #[derive(Debug, Default, Copy, Clone)]
1201 pub struct kvm_pit_state {
1202     pub channels: [kvm_pit_channel_state; 3usize],
1203 }
1204 #[repr(C)]
1205 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1206 pub struct kvm_pit_state2 {
1207     pub channels: [kvm_pit_channel_state; 3usize],
1208     pub flags: u32,
1209     pub reserved: [u32; 9usize],
1210 }
1211 #[repr(C)]
1212 #[derive(Debug, Default, Copy, Clone)]
1213 pub struct kvm_reinject_control {
1214     pub pit_reinject: u8,
1215     pub reserved: [u8; 31usize],
1216 }
1217 #[repr(C)]
1218 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1219 pub struct kvm_vcpu_events {
1220     pub exception: kvm_vcpu_events__bindgen_ty_1,
1221     pub interrupt: kvm_vcpu_events__bindgen_ty_2,
1222     pub nmi: kvm_vcpu_events__bindgen_ty_3,
1223     pub sipi_vector: u32,
1224     pub flags: u32,
1225     pub smi: kvm_vcpu_events__bindgen_ty_4,
1226     pub triple_fault: kvm_vcpu_events__bindgen_ty_5,
1227     pub reserved: [u8; 26usize],
1228     pub exception_has_payload: u8,
1229     pub exception_payload: u64,
1230 }
1231 #[repr(C)]
1232 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1233 pub struct kvm_vcpu_events__bindgen_ty_1 {
1234     pub injected: u8,
1235     pub nr: u8,
1236     pub has_error_code: u8,
1237     pub pending: u8,
1238     pub error_code: u32,
1239 }
1240 #[repr(C)]
1241 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1242 pub struct kvm_vcpu_events__bindgen_ty_2 {
1243     pub injected: u8,
1244     pub nr: u8,
1245     pub soft: u8,
1246     pub shadow: u8,
1247 }
1248 #[repr(C)]
1249 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1250 pub struct kvm_vcpu_events__bindgen_ty_3 {
1251     pub injected: u8,
1252     pub pending: u8,
1253     pub masked: u8,
1254     pub pad: u8,
1255 }
1256 #[repr(C)]
1257 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1258 pub struct kvm_vcpu_events__bindgen_ty_4 {
1259     pub smm: u8,
1260     pub pending: u8,
1261     pub smm_inside_nmi: u8,
1262     pub latched_init: u8,
1263 }
1264 #[repr(C)]
1265 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1266 pub struct kvm_vcpu_events__bindgen_ty_5 {
1267     pub pending: u8,
1268 }
1269 #[repr(C)]
1270 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1271 pub struct kvm_debugregs {
1272     pub db: [u64; 4usize],
1273     pub dr6: u64,
1274     pub dr7: u64,
1275     pub flags: u64,
1276     pub reserved: [u64; 9usize],
1277 }
1278 #[repr(C)]
1279 #[derive(Debug)]
1280 pub struct kvm_xsave {
1281     pub region: [u32; 1024usize],
1282     pub extra: __IncompleteArrayField<u32>,
1283 }
1284 impl Default for kvm_xsave {
default() -> Self1285     fn default() -> Self {
1286         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1287         unsafe {
1288             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1289             s.assume_init()
1290         }
1291     }
1292 }
1293 #[repr(C)]
1294 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1295 pub struct kvm_xcr {
1296     pub xcr: u32,
1297     pub reserved: u32,
1298     pub value: u64,
1299 }
1300 #[repr(C)]
1301 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1302 pub struct kvm_xcrs {
1303     pub nr_xcrs: u32,
1304     pub flags: u32,
1305     pub xcrs: [kvm_xcr; 16usize],
1306     pub padding: [u64; 16usize],
1307 }
1308 #[repr(C)]
1309 #[derive(Debug, Default, Copy, Clone)]
1310 pub struct kvm_sync_regs {
1311     pub regs: kvm_regs,
1312     pub sregs: kvm_sregs,
1313     pub events: kvm_vcpu_events,
1314 }
1315 #[repr(C)]
1316 #[derive(Debug, Copy, Clone)]
1317 pub struct kvm_vmx_nested_state_data {
1318     pub vmcs12: [u8; 4096usize],
1319     pub shadow_vmcs12: [u8; 4096usize],
1320 }
1321 impl Default for kvm_vmx_nested_state_data {
default() -> Self1322     fn default() -> Self {
1323         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1324         unsafe {
1325             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1326             s.assume_init()
1327         }
1328     }
1329 }
1330 #[repr(C)]
1331 #[derive(Debug, Default, Copy, Clone)]
1332 pub struct kvm_vmx_nested_state_hdr {
1333     pub vmxon_pa: u64,
1334     pub vmcs12_pa: u64,
1335     pub smm: kvm_vmx_nested_state_hdr__bindgen_ty_1,
1336     pub pad: u16,
1337     pub flags: u32,
1338     pub preemption_timer_deadline: u64,
1339 }
1340 #[repr(C)]
1341 #[derive(Debug, Default, Copy, Clone)]
1342 pub struct kvm_vmx_nested_state_hdr__bindgen_ty_1 {
1343     pub flags: u16,
1344 }
1345 #[repr(C)]
1346 #[derive(Debug, Copy, Clone)]
1347 pub struct kvm_svm_nested_state_data {
1348     pub vmcb12: [u8; 4096usize],
1349 }
1350 impl Default for kvm_svm_nested_state_data {
default() -> Self1351     fn default() -> Self {
1352         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1353         unsafe {
1354             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1355             s.assume_init()
1356         }
1357     }
1358 }
1359 #[repr(C)]
1360 #[derive(Debug, Default, Copy, Clone)]
1361 pub struct kvm_svm_nested_state_hdr {
1362     pub vmcb_pa: u64,
1363 }
1364 #[repr(C)]
1365 pub struct kvm_nested_state {
1366     pub flags: u16,
1367     pub format: u16,
1368     pub size: u32,
1369     pub hdr: kvm_nested_state__bindgen_ty_1,
1370     pub data: kvm_nested_state__bindgen_ty_2,
1371 }
1372 #[repr(C)]
1373 #[derive(Copy, Clone)]
1374 pub union kvm_nested_state__bindgen_ty_1 {
1375     pub vmx: kvm_vmx_nested_state_hdr,
1376     pub svm: kvm_svm_nested_state_hdr,
1377     pub pad: [u8; 120usize],
1378 }
1379 impl Default for kvm_nested_state__bindgen_ty_1 {
default() -> Self1380     fn default() -> Self {
1381         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1382         unsafe {
1383             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1384             s.assume_init()
1385         }
1386     }
1387 }
1388 #[repr(C)]
1389 pub struct kvm_nested_state__bindgen_ty_2 {
1390     pub __bindgen_anon_1: __BindgenUnionField<kvm_nested_state__bindgen_ty_2__bindgen_ty_1>,
1391     pub __bindgen_anon_2: __BindgenUnionField<kvm_nested_state__bindgen_ty_2__bindgen_ty_2>,
1392     pub bindgen_union_field: [u8; 0usize],
1393 }
1394 #[repr(C)]
1395 #[derive(Debug)]
1396 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1 {
1397     pub __empty_vmx: kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1,
1398     pub vmx: __IncompleteArrayField<kvm_vmx_nested_state_data>,
1399 }
1400 #[repr(C)]
1401 #[derive(Debug, Default, Copy, Clone)]
1402 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 {}
1403 impl Default for kvm_nested_state__bindgen_ty_2__bindgen_ty_1 {
default() -> Self1404     fn default() -> Self {
1405         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1406         unsafe {
1407             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1408             s.assume_init()
1409         }
1410     }
1411 }
1412 #[repr(C)]
1413 #[derive(Debug)]
1414 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2 {
1415     pub __empty_svm: kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1,
1416     pub svm: __IncompleteArrayField<kvm_svm_nested_state_data>,
1417 }
1418 #[repr(C)]
1419 #[derive(Debug, Default, Copy, Clone)]
1420 pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1 {}
1421 impl Default for kvm_nested_state__bindgen_ty_2__bindgen_ty_2 {
default() -> Self1422     fn default() -> Self {
1423         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1424         unsafe {
1425             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1426             s.assume_init()
1427         }
1428     }
1429 }
1430 impl Default for kvm_nested_state__bindgen_ty_2 {
default() -> Self1431     fn default() -> Self {
1432         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1433         unsafe {
1434             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1435             s.assume_init()
1436         }
1437     }
1438 }
1439 impl Default for kvm_nested_state {
default() -> Self1440     fn default() -> Self {
1441         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1442         unsafe {
1443             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1444             s.assume_init()
1445         }
1446     }
1447 }
1448 #[repr(C)]
1449 #[derive(Debug, Default)]
1450 pub struct kvm_pmu_event_filter {
1451     pub action: u32,
1452     pub nevents: u32,
1453     pub fixed_counter_bitmap: u32,
1454     pub flags: u32,
1455     pub pad: [u32; 4usize],
1456     pub events: __IncompleteArrayField<u64>,
1457 }
1458 #[repr(C)]
1459 #[derive(Debug, Default, Copy, Clone)]
1460 pub struct kvm_x86_mce {
1461     pub status: u64,
1462     pub addr: u64,
1463     pub misc: u64,
1464     pub mcg_status: u64,
1465     pub bank: u8,
1466     pub pad1: [u8; 7usize],
1467     pub pad2: [u64; 3usize],
1468 }
1469 #[repr(C)]
1470 #[derive(Debug, Default, Copy, Clone)]
1471 pub struct kvm_xen_hvm_config {
1472     pub flags: u32,
1473     pub msr: u32,
1474     pub blob_addr_32: u64,
1475     pub blob_addr_64: u64,
1476     pub blob_size_32: u8,
1477     pub blob_size_64: u8,
1478     pub pad2: [u8; 30usize],
1479 }
1480 #[repr(C)]
1481 #[derive(Copy, Clone)]
1482 pub struct kvm_xen_hvm_attr {
1483     pub type_: u16,
1484     pub pad: [u16; 3usize],
1485     pub u: kvm_xen_hvm_attr__bindgen_ty_1,
1486 }
1487 #[repr(C)]
1488 #[derive(Copy, Clone)]
1489 pub union kvm_xen_hvm_attr__bindgen_ty_1 {
1490     pub long_mode: u8,
1491     pub vector: u8,
1492     pub runstate_update_flag: u8,
1493     pub shared_info: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1,
1494     pub evtchn: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2,
1495     pub xen_version: u32,
1496     pub pad: [u64; 8usize],
1497 }
1498 #[repr(C)]
1499 #[derive(Copy, Clone)]
1500 pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 {
1501     pub gfn: u64,
1502     pub hva: u64,
1503 }
1504 impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 {
default() -> Self1505     fn default() -> Self {
1506         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1507         unsafe {
1508             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1509             s.assume_init()
1510         }
1511     }
1512 }
1513 #[repr(C)]
1514 #[derive(Copy, Clone)]
1515 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 {
1516     pub send_port: u32,
1517     pub type_: u32,
1518     pub flags: u32,
1519     pub deliver: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1,
1520 }
1521 #[repr(C)]
1522 #[derive(Copy, Clone)]
1523 pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {
1524     pub port: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1,
1525     pub eventfd: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2,
1526     pub padding: [u32; 4usize],
1527 }
1528 #[repr(C)]
1529 #[derive(Debug, Default, Copy, Clone)]
1530 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 {
1531     pub port: u32,
1532     pub vcpu: u32,
1533     pub priority: u32,
1534 }
1535 #[repr(C)]
1536 #[derive(Debug, Default, Copy, Clone)]
1537 pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2 {
1538     pub port: u32,
1539     pub fd: i32,
1540 }
1541 impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {
default() -> Self1542     fn default() -> Self {
1543         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1544         unsafe {
1545             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1546             s.assume_init()
1547         }
1548     }
1549 }
1550 impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 {
default() -> Self1551     fn default() -> Self {
1552         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1553         unsafe {
1554             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1555             s.assume_init()
1556         }
1557     }
1558 }
1559 impl Default for kvm_xen_hvm_attr__bindgen_ty_1 {
default() -> Self1560     fn default() -> Self {
1561         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1562         unsafe {
1563             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1564             s.assume_init()
1565         }
1566     }
1567 }
1568 impl Default for kvm_xen_hvm_attr {
default() -> Self1569     fn default() -> Self {
1570         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1571         unsafe {
1572             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1573             s.assume_init()
1574         }
1575     }
1576 }
1577 #[repr(C)]
1578 #[derive(Copy, Clone)]
1579 pub struct kvm_xen_vcpu_attr {
1580     pub type_: u16,
1581     pub pad: [u16; 3usize],
1582     pub u: kvm_xen_vcpu_attr__bindgen_ty_1,
1583 }
1584 #[repr(C)]
1585 #[derive(Copy, Clone)]
1586 pub union kvm_xen_vcpu_attr__bindgen_ty_1 {
1587     pub gpa: u64,
1588     pub hva: u64,
1589     pub pad: [u64; 8usize],
1590     pub runstate: kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1,
1591     pub vcpu_id: u32,
1592     pub timer: kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2,
1593     pub vector: u8,
1594 }
1595 #[repr(C)]
1596 #[derive(Debug, Default, Copy, Clone)]
1597 pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1 {
1598     pub state: u64,
1599     pub state_entry_time: u64,
1600     pub time_running: u64,
1601     pub time_runnable: u64,
1602     pub time_blocked: u64,
1603     pub time_offline: u64,
1604 }
1605 #[repr(C)]
1606 #[derive(Debug, Default, Copy, Clone)]
1607 pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2 {
1608     pub port: u32,
1609     pub priority: u32,
1610     pub expires_ns: u64,
1611 }
1612 impl Default for kvm_xen_vcpu_attr__bindgen_ty_1 {
default() -> Self1613     fn default() -> Self {
1614         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1615         unsafe {
1616             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1617             s.assume_init()
1618         }
1619     }
1620 }
1621 impl Default for kvm_xen_vcpu_attr {
default() -> Self1622     fn default() -> Self {
1623         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1624         unsafe {
1625             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1626             s.assume_init()
1627         }
1628     }
1629 }
1630 pub const sev_cmd_id_KVM_SEV_INIT: sev_cmd_id = 0;
1631 pub const sev_cmd_id_KVM_SEV_ES_INIT: sev_cmd_id = 1;
1632 pub const sev_cmd_id_KVM_SEV_LAUNCH_START: sev_cmd_id = 2;
1633 pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_DATA: sev_cmd_id = 3;
1634 pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_VMSA: sev_cmd_id = 4;
1635 pub const sev_cmd_id_KVM_SEV_LAUNCH_SECRET: sev_cmd_id = 5;
1636 pub const sev_cmd_id_KVM_SEV_LAUNCH_MEASURE: sev_cmd_id = 6;
1637 pub const sev_cmd_id_KVM_SEV_LAUNCH_FINISH: sev_cmd_id = 7;
1638 pub const sev_cmd_id_KVM_SEV_SEND_START: sev_cmd_id = 8;
1639 pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_DATA: sev_cmd_id = 9;
1640 pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_VMSA: sev_cmd_id = 10;
1641 pub const sev_cmd_id_KVM_SEV_SEND_FINISH: sev_cmd_id = 11;
1642 pub const sev_cmd_id_KVM_SEV_RECEIVE_START: sev_cmd_id = 12;
1643 pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_DATA: sev_cmd_id = 13;
1644 pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_VMSA: sev_cmd_id = 14;
1645 pub const sev_cmd_id_KVM_SEV_RECEIVE_FINISH: sev_cmd_id = 15;
1646 pub const sev_cmd_id_KVM_SEV_GUEST_STATUS: sev_cmd_id = 16;
1647 pub const sev_cmd_id_KVM_SEV_DBG_DECRYPT: sev_cmd_id = 17;
1648 pub const sev_cmd_id_KVM_SEV_DBG_ENCRYPT: sev_cmd_id = 18;
1649 pub const sev_cmd_id_KVM_SEV_CERT_EXPORT: sev_cmd_id = 19;
1650 pub const sev_cmd_id_KVM_SEV_GET_ATTESTATION_REPORT: sev_cmd_id = 20;
1651 pub const sev_cmd_id_KVM_SEV_SEND_CANCEL: sev_cmd_id = 21;
1652 pub const sev_cmd_id_KVM_SEV_INIT2: sev_cmd_id = 22;
1653 pub const sev_cmd_id_KVM_SEV_SNP_LAUNCH_START: sev_cmd_id = 100;
1654 pub const sev_cmd_id_KVM_SEV_SNP_LAUNCH_UPDATE: sev_cmd_id = 101;
1655 pub const sev_cmd_id_KVM_SEV_SNP_LAUNCH_FINISH: sev_cmd_id = 102;
1656 pub const sev_cmd_id_KVM_SEV_NR_MAX: sev_cmd_id = 103;
1657 pub type sev_cmd_id = ::std::os::raw::c_uint;
1658 #[repr(C)]
1659 #[derive(Debug, Default, Copy, Clone)]
1660 pub struct kvm_sev_cmd {
1661     pub id: u32,
1662     pub pad0: u32,
1663     pub data: u64,
1664     pub error: u32,
1665     pub sev_fd: u32,
1666 }
1667 #[repr(C)]
1668 #[derive(Debug, Default, Copy, Clone)]
1669 pub struct kvm_sev_init {
1670     pub vmsa_features: u64,
1671     pub flags: u32,
1672     pub ghcb_version: u16,
1673     pub pad1: u16,
1674     pub pad2: [u32; 8usize],
1675 }
1676 #[repr(C)]
1677 #[derive(Debug, Default, Copy, Clone)]
1678 pub struct kvm_sev_launch_start {
1679     pub handle: u32,
1680     pub policy: u32,
1681     pub dh_uaddr: u64,
1682     pub dh_len: u32,
1683     pub pad0: u32,
1684     pub session_uaddr: u64,
1685     pub session_len: u32,
1686     pub pad1: u32,
1687 }
1688 #[repr(C)]
1689 #[derive(Debug, Default, Copy, Clone)]
1690 pub struct kvm_sev_launch_update_data {
1691     pub uaddr: u64,
1692     pub len: u32,
1693     pub pad0: u32,
1694 }
1695 #[repr(C)]
1696 #[derive(Debug, Default, Copy, Clone)]
1697 pub struct kvm_sev_launch_secret {
1698     pub hdr_uaddr: u64,
1699     pub hdr_len: u32,
1700     pub pad0: u32,
1701     pub guest_uaddr: u64,
1702     pub guest_len: u32,
1703     pub pad1: u32,
1704     pub trans_uaddr: u64,
1705     pub trans_len: u32,
1706     pub pad2: u32,
1707 }
1708 #[repr(C)]
1709 #[derive(Debug, Default, Copy, Clone)]
1710 pub struct kvm_sev_launch_measure {
1711     pub uaddr: u64,
1712     pub len: u32,
1713     pub pad0: u32,
1714 }
1715 #[repr(C)]
1716 #[derive(Debug, Default, Copy, Clone)]
1717 pub struct kvm_sev_guest_status {
1718     pub handle: u32,
1719     pub policy: u32,
1720     pub state: u32,
1721 }
1722 #[repr(C)]
1723 #[derive(Debug, Default, Copy, Clone)]
1724 pub struct kvm_sev_dbg {
1725     pub src_uaddr: u64,
1726     pub dst_uaddr: u64,
1727     pub len: u32,
1728     pub pad0: u32,
1729 }
1730 #[repr(C)]
1731 #[derive(Debug, Default, Copy, Clone)]
1732 pub struct kvm_sev_attestation_report {
1733     pub mnonce: [u8; 16usize],
1734     pub uaddr: u64,
1735     pub len: u32,
1736     pub pad0: u32,
1737 }
1738 #[repr(C)]
1739 #[derive(Debug, Default, Copy, Clone)]
1740 pub struct kvm_sev_send_start {
1741     pub policy: u32,
1742     pub pad0: u32,
1743     pub pdh_cert_uaddr: u64,
1744     pub pdh_cert_len: u32,
1745     pub pad1: u32,
1746     pub plat_certs_uaddr: u64,
1747     pub plat_certs_len: u32,
1748     pub pad2: u32,
1749     pub amd_certs_uaddr: u64,
1750     pub amd_certs_len: u32,
1751     pub pad3: u32,
1752     pub session_uaddr: u64,
1753     pub session_len: u32,
1754     pub pad4: u32,
1755 }
1756 #[repr(C)]
1757 #[derive(Debug, Default, Copy, Clone)]
1758 pub struct kvm_sev_send_update_data {
1759     pub hdr_uaddr: u64,
1760     pub hdr_len: u32,
1761     pub pad0: u32,
1762     pub guest_uaddr: u64,
1763     pub guest_len: u32,
1764     pub pad1: u32,
1765     pub trans_uaddr: u64,
1766     pub trans_len: u32,
1767     pub pad2: u32,
1768 }
1769 #[repr(C)]
1770 #[derive(Debug, Default, Copy, Clone)]
1771 pub struct kvm_sev_receive_start {
1772     pub handle: u32,
1773     pub policy: u32,
1774     pub pdh_uaddr: u64,
1775     pub pdh_len: u32,
1776     pub pad0: u32,
1777     pub session_uaddr: u64,
1778     pub session_len: u32,
1779     pub pad1: u32,
1780 }
1781 #[repr(C)]
1782 #[derive(Debug, Default, Copy, Clone)]
1783 pub struct kvm_sev_receive_update_data {
1784     pub hdr_uaddr: u64,
1785     pub hdr_len: u32,
1786     pub pad0: u32,
1787     pub guest_uaddr: u64,
1788     pub guest_len: u32,
1789     pub pad1: u32,
1790     pub trans_uaddr: u64,
1791     pub trans_len: u32,
1792     pub pad2: u32,
1793 }
1794 #[repr(C)]
1795 #[derive(Debug, Default, Copy, Clone)]
1796 pub struct kvm_sev_snp_launch_start {
1797     pub policy: u64,
1798     pub gosvw: [u8; 16usize],
1799     pub flags: u16,
1800     pub pad0: [u8; 6usize],
1801     pub pad1: [u64; 4usize],
1802 }
1803 #[repr(C)]
1804 #[derive(Debug, Default, Copy, Clone)]
1805 pub struct kvm_sev_snp_launch_update {
1806     pub gfn_start: u64,
1807     pub uaddr: u64,
1808     pub len: u64,
1809     pub type_: u8,
1810     pub pad0: u8,
1811     pub flags: u16,
1812     pub pad1: u32,
1813     pub pad2: [u64; 4usize],
1814 }
1815 #[repr(C)]
1816 #[derive(Debug, Default, Copy, Clone)]
1817 pub struct kvm_sev_snp_launch_finish {
1818     pub id_block_uaddr: u64,
1819     pub id_auth_uaddr: u64,
1820     pub id_block_en: u8,
1821     pub auth_key_en: u8,
1822     pub vcek_disabled: u8,
1823     pub host_data: [u8; 32usize],
1824     pub pad0: [u8; 3usize],
1825     pub flags: u16,
1826     pub pad1: [u64; 4usize],
1827 }
1828 #[repr(C)]
1829 #[derive(Debug, Default, Copy, Clone)]
1830 pub struct kvm_hyperv_eventfd {
1831     pub conn_id: u32,
1832     pub fd: i32,
1833     pub flags: u32,
1834     pub padding: [u32; 3usize],
1835 }
1836 #[repr(C)]
1837 #[derive(Debug, Default, Copy, Clone)]
1838 pub struct kvm_userspace_memory_region {
1839     pub slot: u32,
1840     pub flags: u32,
1841     pub guest_phys_addr: u64,
1842     pub memory_size: u64,
1843     pub userspace_addr: u64,
1844 }
1845 #[repr(C)]
1846 #[derive(Debug, Default, Copy, Clone)]
1847 pub struct kvm_userspace_memory_region2 {
1848     pub slot: u32,
1849     pub flags: u32,
1850     pub guest_phys_addr: u64,
1851     pub memory_size: u64,
1852     pub userspace_addr: u64,
1853     pub guest_memfd_offset: u64,
1854     pub guest_memfd: u32,
1855     pub pad1: u32,
1856     pub pad2: [u64; 14usize],
1857 }
1858 #[repr(C)]
1859 #[derive(Copy, Clone)]
1860 pub struct kvm_irq_level {
1861     pub __bindgen_anon_1: kvm_irq_level__bindgen_ty_1,
1862     pub level: u32,
1863 }
1864 #[repr(C)]
1865 #[derive(Copy, Clone)]
1866 pub union kvm_irq_level__bindgen_ty_1 {
1867     pub irq: u32,
1868     pub status: i32,
1869 }
1870 impl Default for kvm_irq_level__bindgen_ty_1 {
default() -> Self1871     fn default() -> Self {
1872         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1873         unsafe {
1874             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1875             s.assume_init()
1876         }
1877     }
1878 }
1879 impl Default for kvm_irq_level {
default() -> Self1880     fn default() -> Self {
1881         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1882         unsafe {
1883             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1884             s.assume_init()
1885         }
1886     }
1887 }
1888 #[repr(C)]
1889 #[derive(Copy, Clone)]
1890 pub struct kvm_irqchip {
1891     pub chip_id: u32,
1892     pub pad: u32,
1893     pub chip: kvm_irqchip__bindgen_ty_1,
1894 }
1895 #[repr(C)]
1896 #[derive(Copy, Clone)]
1897 pub union kvm_irqchip__bindgen_ty_1 {
1898     pub dummy: [::std::os::raw::c_char; 512usize],
1899     pub pic: kvm_pic_state,
1900     pub ioapic: kvm_ioapic_state,
1901 }
1902 impl Default for kvm_irqchip__bindgen_ty_1 {
default() -> Self1903     fn default() -> Self {
1904         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1905         unsafe {
1906             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1907             s.assume_init()
1908         }
1909     }
1910 }
1911 impl Default for kvm_irqchip {
default() -> Self1912     fn default() -> Self {
1913         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1914         unsafe {
1915             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1916             s.assume_init()
1917         }
1918     }
1919 }
1920 #[repr(C)]
1921 #[derive(Debug, Default, Copy, Clone)]
1922 pub struct kvm_pit_config {
1923     pub flags: u32,
1924     pub pad: [u32; 15usize],
1925 }
1926 #[repr(C)]
1927 #[derive(Copy, Clone)]
1928 pub struct kvm_hyperv_exit {
1929     pub type_: u32,
1930     pub pad1: u32,
1931     pub u: kvm_hyperv_exit__bindgen_ty_1,
1932 }
1933 #[repr(C)]
1934 #[derive(Copy, Clone)]
1935 pub union kvm_hyperv_exit__bindgen_ty_1 {
1936     pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1,
1937     pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2,
1938     pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3,
1939 }
1940 #[repr(C)]
1941 #[derive(Debug, Default, Copy, Clone)]
1942 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 {
1943     pub msr: u32,
1944     pub pad2: u32,
1945     pub control: u64,
1946     pub evt_page: u64,
1947     pub msg_page: u64,
1948 }
1949 #[repr(C)]
1950 #[derive(Debug, Default, Copy, Clone)]
1951 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 {
1952     pub input: u64,
1953     pub result: u64,
1954     pub params: [u64; 2usize],
1955 }
1956 #[repr(C)]
1957 #[derive(Debug, Default, Copy, Clone)]
1958 pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 {
1959     pub msr: u32,
1960     pub pad2: u32,
1961     pub control: u64,
1962     pub status: u64,
1963     pub send_page: u64,
1964     pub recv_page: u64,
1965     pub pending_page: u64,
1966 }
1967 impl Default for kvm_hyperv_exit__bindgen_ty_1 {
default() -> Self1968     fn default() -> Self {
1969         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1970         unsafe {
1971             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1972             s.assume_init()
1973         }
1974     }
1975 }
1976 impl Default for kvm_hyperv_exit {
default() -> Self1977     fn default() -> Self {
1978         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1979         unsafe {
1980             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1981             s.assume_init()
1982         }
1983     }
1984 }
1985 #[repr(C)]
1986 #[derive(Copy, Clone)]
1987 pub struct kvm_xen_exit {
1988     pub type_: u32,
1989     pub u: kvm_xen_exit__bindgen_ty_1,
1990 }
1991 #[repr(C)]
1992 #[derive(Copy, Clone)]
1993 pub union kvm_xen_exit__bindgen_ty_1 {
1994     pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1,
1995 }
1996 #[repr(C)]
1997 #[derive(Debug, Default, Copy, Clone)]
1998 pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 {
1999     pub longmode: u32,
2000     pub cpl: u32,
2001     pub input: u64,
2002     pub result: u64,
2003     pub params: [u64; 6usize],
2004 }
2005 impl Default for kvm_xen_exit__bindgen_ty_1 {
default() -> Self2006     fn default() -> Self {
2007         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2008         unsafe {
2009             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2010             s.assume_init()
2011         }
2012     }
2013 }
2014 impl Default for kvm_xen_exit {
default() -> Self2015     fn default() -> Self {
2016         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2017         unsafe {
2018             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2019             s.assume_init()
2020         }
2021     }
2022 }
2023 #[repr(C)]
2024 #[derive(Copy, Clone)]
2025 pub struct kvm_run {
2026     pub request_interrupt_window: u8,
2027     pub immediate_exit: u8,
2028     pub padding1: [u8; 6usize],
2029     pub exit_reason: u32,
2030     pub ready_for_interrupt_injection: u8,
2031     pub if_flag: u8,
2032     pub flags: u16,
2033     pub cr8: u64,
2034     pub apic_base: u64,
2035     pub __bindgen_anon_1: kvm_run__bindgen_ty_1,
2036     pub kvm_valid_regs: u64,
2037     pub kvm_dirty_regs: u64,
2038     pub s: kvm_run__bindgen_ty_2,
2039 }
2040 #[repr(C)]
2041 #[derive(Copy, Clone)]
2042 pub union kvm_run__bindgen_ty_1 {
2043     pub hw: kvm_run__bindgen_ty_1__bindgen_ty_1,
2044     pub fail_entry: kvm_run__bindgen_ty_1__bindgen_ty_2,
2045     pub ex: kvm_run__bindgen_ty_1__bindgen_ty_3,
2046     pub io: kvm_run__bindgen_ty_1__bindgen_ty_4,
2047     pub debug: kvm_run__bindgen_ty_1__bindgen_ty_5,
2048     pub mmio: kvm_run__bindgen_ty_1__bindgen_ty_6,
2049     pub iocsr_io: kvm_run__bindgen_ty_1__bindgen_ty_7,
2050     pub hypercall: kvm_run__bindgen_ty_1__bindgen_ty_8,
2051     pub tpr_access: kvm_run__bindgen_ty_1__bindgen_ty_9,
2052     pub s390_sieic: kvm_run__bindgen_ty_1__bindgen_ty_10,
2053     pub s390_reset_flags: u64,
2054     pub s390_ucontrol: kvm_run__bindgen_ty_1__bindgen_ty_11,
2055     pub dcr: kvm_run__bindgen_ty_1__bindgen_ty_12,
2056     pub internal: kvm_run__bindgen_ty_1__bindgen_ty_13,
2057     pub emulation_failure: kvm_run__bindgen_ty_1__bindgen_ty_14,
2058     pub osi: kvm_run__bindgen_ty_1__bindgen_ty_15,
2059     pub papr_hcall: kvm_run__bindgen_ty_1__bindgen_ty_16,
2060     pub s390_tsch: kvm_run__bindgen_ty_1__bindgen_ty_17,
2061     pub epr: kvm_run__bindgen_ty_1__bindgen_ty_18,
2062     pub system_event: kvm_run__bindgen_ty_1__bindgen_ty_19,
2063     pub s390_stsi: kvm_run__bindgen_ty_1__bindgen_ty_20,
2064     pub eoi: kvm_run__bindgen_ty_1__bindgen_ty_21,
2065     pub hyperv: kvm_hyperv_exit,
2066     pub arm_nisv: kvm_run__bindgen_ty_1__bindgen_ty_22,
2067     pub msr: kvm_run__bindgen_ty_1__bindgen_ty_23,
2068     pub xen: kvm_xen_exit,
2069     pub riscv_sbi: kvm_run__bindgen_ty_1__bindgen_ty_24,
2070     pub riscv_csr: kvm_run__bindgen_ty_1__bindgen_ty_25,
2071     pub notify: kvm_run__bindgen_ty_1__bindgen_ty_26,
2072     pub memory_fault: kvm_run__bindgen_ty_1__bindgen_ty_27,
2073     pub padding: [::std::os::raw::c_char; 256usize],
2074 }
2075 #[repr(C)]
2076 #[derive(Debug, Default, Copy, Clone)]
2077 pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 {
2078     pub hardware_exit_reason: u64,
2079 }
2080 #[repr(C)]
2081 #[derive(Debug, Default, Copy, Clone)]
2082 pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 {
2083     pub hardware_entry_failure_reason: u64,
2084     pub cpu: u32,
2085 }
2086 #[repr(C)]
2087 #[derive(Debug, Default, Copy, Clone)]
2088 pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 {
2089     pub exception: u32,
2090     pub error_code: u32,
2091 }
2092 #[repr(C)]
2093 #[derive(Debug, Default, Copy, Clone)]
2094 pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 {
2095     pub direction: u8,
2096     pub size: u8,
2097     pub port: u16,
2098     pub count: u32,
2099     pub data_offset: u64,
2100 }
2101 #[repr(C)]
2102 #[derive(Debug, Default, Copy, Clone)]
2103 pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 {
2104     pub arch: kvm_debug_exit_arch,
2105 }
2106 #[repr(C)]
2107 #[derive(Debug, Default, Copy, Clone)]
2108 pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 {
2109     pub phys_addr: u64,
2110     pub data: [u8; 8usize],
2111     pub len: u32,
2112     pub is_write: u8,
2113 }
2114 #[repr(C)]
2115 #[derive(Debug, Default, Copy, Clone)]
2116 pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 {
2117     pub phys_addr: u64,
2118     pub data: [u8; 8usize],
2119     pub len: u32,
2120     pub is_write: u8,
2121 }
2122 #[repr(C)]
2123 #[derive(Copy, Clone)]
2124 pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 {
2125     pub nr: u64,
2126     pub args: [u64; 6usize],
2127     pub ret: u64,
2128     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1,
2129 }
2130 #[repr(C)]
2131 #[derive(Copy, Clone)]
2132 pub union kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {
2133     pub longmode: u32,
2134     pub flags: u64,
2135 }
2136 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {
default() -> Self2137     fn default() -> Self {
2138         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2139         unsafe {
2140             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2141             s.assume_init()
2142         }
2143     }
2144 }
2145 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 {
default() -> Self2146     fn default() -> Self {
2147         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2148         unsafe {
2149             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2150             s.assume_init()
2151         }
2152     }
2153 }
2154 #[repr(C)]
2155 #[derive(Debug, Default, Copy, Clone)]
2156 pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 {
2157     pub rip: u64,
2158     pub is_write: u32,
2159     pub pad: u32,
2160 }
2161 #[repr(C)]
2162 #[derive(Debug, Default, Copy, Clone)]
2163 pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 {
2164     pub icptcode: u8,
2165     pub ipa: u16,
2166     pub ipb: u32,
2167 }
2168 #[repr(C)]
2169 #[derive(Debug, Default, Copy, Clone)]
2170 pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 {
2171     pub trans_exc_code: u64,
2172     pub pgm_code: u32,
2173 }
2174 #[repr(C)]
2175 #[derive(Debug, Default, Copy, Clone)]
2176 pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 {
2177     pub dcrn: u32,
2178     pub data: u32,
2179     pub is_write: u8,
2180 }
2181 #[repr(C)]
2182 #[derive(Debug, Default, Copy, Clone)]
2183 pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 {
2184     pub suberror: u32,
2185     pub ndata: u32,
2186     pub data: [u64; 16usize],
2187 }
2188 #[repr(C)]
2189 #[derive(Copy, Clone)]
2190 pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 {
2191     pub suberror: u32,
2192     pub ndata: u32,
2193     pub flags: u64,
2194     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1,
2195 }
2196 #[repr(C)]
2197 #[derive(Copy, Clone)]
2198 pub union kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {
2199     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1,
2200 }
2201 #[repr(C)]
2202 #[derive(Debug, Default, Copy, Clone)]
2203 pub struct kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 {
2204     pub insn_size: u8,
2205     pub insn_bytes: [u8; 15usize],
2206 }
2207 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {
default() -> Self2208     fn default() -> Self {
2209         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2210         unsafe {
2211             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2212             s.assume_init()
2213         }
2214     }
2215 }
2216 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 {
default() -> Self2217     fn default() -> Self {
2218         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2219         unsafe {
2220             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2221             s.assume_init()
2222         }
2223     }
2224 }
2225 #[repr(C)]
2226 #[derive(Debug, Default, Copy, Clone)]
2227 pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 {
2228     pub gprs: [u64; 32usize],
2229 }
2230 #[repr(C)]
2231 #[derive(Debug, Default, Copy, Clone)]
2232 pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 {
2233     pub nr: u64,
2234     pub ret: u64,
2235     pub args: [u64; 9usize],
2236 }
2237 #[repr(C)]
2238 #[derive(Debug, Default, Copy, Clone)]
2239 pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 {
2240     pub subchannel_id: u16,
2241     pub subchannel_nr: u16,
2242     pub io_int_parm: u32,
2243     pub io_int_word: u32,
2244     pub ipb: u32,
2245     pub dequeued: u8,
2246 }
2247 #[repr(C)]
2248 #[derive(Debug, Default, Copy, Clone)]
2249 pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 {
2250     pub epr: u32,
2251 }
2252 #[repr(C)]
2253 #[derive(Copy, Clone)]
2254 pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 {
2255     pub type_: u32,
2256     pub ndata: u32,
2257     pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1,
2258 }
2259 #[repr(C)]
2260 #[derive(Copy, Clone)]
2261 pub union kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {
2262     pub flags: u64,
2263     pub data: [u64; 16usize],
2264 }
2265 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {
default() -> Self2266     fn default() -> Self {
2267         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2268         unsafe {
2269             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2270             s.assume_init()
2271         }
2272     }
2273 }
2274 impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 {
default() -> Self2275     fn default() -> Self {
2276         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2277         unsafe {
2278             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2279             s.assume_init()
2280         }
2281     }
2282 }
2283 #[repr(C)]
2284 #[derive(Debug, Default, Copy, Clone)]
2285 pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 {
2286     pub addr: u64,
2287     pub ar: u8,
2288     pub reserved: u8,
2289     pub fc: u8,
2290     pub sel1: u8,
2291     pub sel2: u16,
2292 }
2293 #[repr(C)]
2294 #[derive(Debug, Default, Copy, Clone)]
2295 pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 {
2296     pub vector: u8,
2297 }
2298 #[repr(C)]
2299 #[derive(Debug, Default, Copy, Clone)]
2300 pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 {
2301     pub esr_iss: u64,
2302     pub fault_ipa: u64,
2303 }
2304 #[repr(C)]
2305 #[derive(Debug, Default, Copy, Clone)]
2306 pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 {
2307     pub error: u8,
2308     pub pad: [u8; 7usize],
2309     pub reason: u32,
2310     pub index: u32,
2311     pub data: u64,
2312 }
2313 #[repr(C)]
2314 #[derive(Debug, Default, Copy, Clone)]
2315 pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 {
2316     pub extension_id: ::std::os::raw::c_ulong,
2317     pub function_id: ::std::os::raw::c_ulong,
2318     pub args: [::std::os::raw::c_ulong; 6usize],
2319     pub ret: [::std::os::raw::c_ulong; 2usize],
2320 }
2321 #[repr(C)]
2322 #[derive(Debug, Default, Copy, Clone)]
2323 pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 {
2324     pub csr_num: ::std::os::raw::c_ulong,
2325     pub new_value: ::std::os::raw::c_ulong,
2326     pub write_mask: ::std::os::raw::c_ulong,
2327     pub ret_value: ::std::os::raw::c_ulong,
2328 }
2329 #[repr(C)]
2330 #[derive(Debug, Default, Copy, Clone)]
2331 pub struct kvm_run__bindgen_ty_1__bindgen_ty_26 {
2332     pub flags: u32,
2333 }
2334 #[repr(C)]
2335 #[derive(Debug, Default, Copy, Clone)]
2336 pub struct kvm_run__bindgen_ty_1__bindgen_ty_27 {
2337     pub flags: u64,
2338     pub gpa: u64,
2339     pub size: u64,
2340 }
2341 impl Default for kvm_run__bindgen_ty_1 {
default() -> Self2342     fn default() -> Self {
2343         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2344         unsafe {
2345             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2346             s.assume_init()
2347         }
2348     }
2349 }
2350 #[repr(C)]
2351 #[derive(Copy, Clone)]
2352 pub union kvm_run__bindgen_ty_2 {
2353     pub regs: kvm_sync_regs,
2354     pub padding: [::std::os::raw::c_char; 2048usize],
2355 }
2356 impl Default for kvm_run__bindgen_ty_2 {
default() -> Self2357     fn default() -> Self {
2358         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2359         unsafe {
2360             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2361             s.assume_init()
2362         }
2363     }
2364 }
2365 impl Default for kvm_run {
default() -> Self2366     fn default() -> Self {
2367         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2368         unsafe {
2369             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2370             s.assume_init()
2371         }
2372     }
2373 }
2374 #[repr(C)]
2375 #[derive(Copy, Clone)]
2376 pub struct kvm_coalesced_mmio_zone {
2377     pub addr: u64,
2378     pub size: u32,
2379     pub __bindgen_anon_1: kvm_coalesced_mmio_zone__bindgen_ty_1,
2380 }
2381 #[repr(C)]
2382 #[derive(Copy, Clone)]
2383 pub union kvm_coalesced_mmio_zone__bindgen_ty_1 {
2384     pub pad: u32,
2385     pub pio: u32,
2386 }
2387 impl Default for kvm_coalesced_mmio_zone__bindgen_ty_1 {
default() -> Self2388     fn default() -> Self {
2389         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2390         unsafe {
2391             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2392             s.assume_init()
2393         }
2394     }
2395 }
2396 impl Default for kvm_coalesced_mmio_zone {
default() -> Self2397     fn default() -> Self {
2398         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2399         unsafe {
2400             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2401             s.assume_init()
2402         }
2403     }
2404 }
2405 #[repr(C)]
2406 #[derive(Copy, Clone)]
2407 pub struct kvm_coalesced_mmio {
2408     pub phys_addr: u64,
2409     pub len: u32,
2410     pub __bindgen_anon_1: kvm_coalesced_mmio__bindgen_ty_1,
2411     pub data: [u8; 8usize],
2412 }
2413 #[repr(C)]
2414 #[derive(Copy, Clone)]
2415 pub union kvm_coalesced_mmio__bindgen_ty_1 {
2416     pub pad: u32,
2417     pub pio: u32,
2418 }
2419 impl Default for kvm_coalesced_mmio__bindgen_ty_1 {
default() -> Self2420     fn default() -> Self {
2421         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2422         unsafe {
2423             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2424             s.assume_init()
2425         }
2426     }
2427 }
2428 impl Default for kvm_coalesced_mmio {
default() -> Self2429     fn default() -> Self {
2430         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2431         unsafe {
2432             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2433             s.assume_init()
2434         }
2435     }
2436 }
2437 #[repr(C)]
2438 pub struct kvm_coalesced_mmio_ring {
2439     pub first: u32,
2440     pub last: u32,
2441     pub coalesced_mmio: __IncompleteArrayField<kvm_coalesced_mmio>,
2442 }
2443 impl Default for kvm_coalesced_mmio_ring {
default() -> Self2444     fn default() -> Self {
2445         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2446         unsafe {
2447             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2448             s.assume_init()
2449         }
2450     }
2451 }
2452 #[repr(C)]
2453 #[derive(Debug, Default, Copy, Clone)]
2454 pub struct kvm_translation {
2455     pub linear_address: u64,
2456     pub physical_address: u64,
2457     pub valid: u8,
2458     pub writeable: u8,
2459     pub usermode: u8,
2460     pub pad: [u8; 5usize],
2461 }
2462 #[repr(C)]
2463 #[derive(Debug, Default, Copy, Clone)]
2464 pub struct kvm_interrupt {
2465     pub irq: u32,
2466 }
2467 #[repr(C)]
2468 #[derive(Copy, Clone)]
2469 pub struct kvm_dirty_log {
2470     pub slot: u32,
2471     pub padding1: u32,
2472     pub __bindgen_anon_1: kvm_dirty_log__bindgen_ty_1,
2473 }
2474 #[repr(C)]
2475 #[derive(Copy, Clone)]
2476 pub union kvm_dirty_log__bindgen_ty_1 {
2477     pub dirty_bitmap: *mut ::std::os::raw::c_void,
2478     pub padding2: u64,
2479 }
2480 impl Default for kvm_dirty_log__bindgen_ty_1 {
default() -> Self2481     fn default() -> Self {
2482         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2483         unsafe {
2484             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2485             s.assume_init()
2486         }
2487     }
2488 }
2489 impl Default for kvm_dirty_log {
default() -> Self2490     fn default() -> Self {
2491         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2492         unsafe {
2493             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2494             s.assume_init()
2495         }
2496     }
2497 }
2498 #[repr(C)]
2499 #[derive(Copy, Clone)]
2500 pub struct kvm_clear_dirty_log {
2501     pub slot: u32,
2502     pub num_pages: u32,
2503     pub first_page: u64,
2504     pub __bindgen_anon_1: kvm_clear_dirty_log__bindgen_ty_1,
2505 }
2506 #[repr(C)]
2507 #[derive(Copy, Clone)]
2508 pub union kvm_clear_dirty_log__bindgen_ty_1 {
2509     pub dirty_bitmap: *mut ::std::os::raw::c_void,
2510     pub padding2: u64,
2511 }
2512 impl Default for kvm_clear_dirty_log__bindgen_ty_1 {
default() -> Self2513     fn default() -> Self {
2514         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2515         unsafe {
2516             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2517             s.assume_init()
2518         }
2519     }
2520 }
2521 impl Default for kvm_clear_dirty_log {
default() -> Self2522     fn default() -> Self {
2523         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2524         unsafe {
2525             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2526             s.assume_init()
2527         }
2528     }
2529 }
2530 #[repr(C)]
2531 #[derive(Debug, Default)]
2532 pub struct kvm_signal_mask {
2533     pub len: u32,
2534     pub sigset: __IncompleteArrayField<u8>,
2535 }
2536 #[repr(C)]
2537 #[derive(Debug, Default, Copy, Clone)]
2538 pub struct kvm_tpr_access_ctl {
2539     pub enabled: u32,
2540     pub flags: u32,
2541     pub reserved: [u32; 8usize],
2542 }
2543 #[repr(C)]
2544 #[derive(Debug, Default, Copy, Clone)]
2545 pub struct kvm_vapic_addr {
2546     pub vapic_addr: u64,
2547 }
2548 #[repr(C)]
2549 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
2550 pub struct kvm_mp_state {
2551     pub mp_state: u32,
2552 }
2553 #[repr(C)]
2554 #[derive(Debug, Default, Copy, Clone)]
2555 pub struct kvm_guest_debug {
2556     pub control: u32,
2557     pub pad: u32,
2558     pub arch: kvm_guest_debug_arch,
2559 }
2560 pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_1 = 0;
2561 pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_1 = 1;
2562 pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_1 = 2;
2563 pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_1 = 3;
2564 pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_1 = 4;
2565 pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_1 = 5;
2566 pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
2567 #[repr(C)]
2568 #[derive(Debug, Copy, Clone)]
2569 pub struct kvm_ioeventfd {
2570     pub datamatch: u64,
2571     pub addr: u64,
2572     pub len: u32,
2573     pub fd: i32,
2574     pub flags: u32,
2575     pub pad: [u8; 36usize],
2576 }
2577 impl Default for kvm_ioeventfd {
default() -> Self2578     fn default() -> Self {
2579         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2580         unsafe {
2581             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2582             s.assume_init()
2583         }
2584     }
2585 }
2586 #[repr(C)]
2587 #[derive(Debug, Copy, Clone)]
2588 pub struct kvm_enable_cap {
2589     pub cap: u32,
2590     pub flags: u32,
2591     pub args: [u64; 4usize],
2592     pub pad: [u8; 64usize],
2593 }
2594 impl Default for kvm_enable_cap {
default() -> Self2595     fn default() -> Self {
2596         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2597         unsafe {
2598             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2599             s.assume_init()
2600         }
2601     }
2602 }
2603 #[repr(C)]
2604 #[derive(Debug, Default, Copy, Clone)]
2605 pub struct kvm_irq_routing_irqchip {
2606     pub irqchip: u32,
2607     pub pin: u32,
2608 }
2609 #[repr(C)]
2610 #[derive(Copy, Clone)]
2611 pub struct kvm_irq_routing_msi {
2612     pub address_lo: u32,
2613     pub address_hi: u32,
2614     pub data: u32,
2615     pub __bindgen_anon_1: kvm_irq_routing_msi__bindgen_ty_1,
2616 }
2617 #[repr(C)]
2618 #[derive(Copy, Clone)]
2619 pub union kvm_irq_routing_msi__bindgen_ty_1 {
2620     pub pad: u32,
2621     pub devid: u32,
2622 }
2623 impl Default for kvm_irq_routing_msi__bindgen_ty_1 {
default() -> Self2624     fn default() -> Self {
2625         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2626         unsafe {
2627             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2628             s.assume_init()
2629         }
2630     }
2631 }
2632 impl Default for kvm_irq_routing_msi {
default() -> Self2633     fn default() -> Self {
2634         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2635         unsafe {
2636             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2637             s.assume_init()
2638         }
2639     }
2640 }
2641 #[repr(C)]
2642 #[derive(Debug, Default, Copy, Clone)]
2643 pub struct kvm_irq_routing_s390_adapter {
2644     pub ind_addr: u64,
2645     pub summary_addr: u64,
2646     pub ind_offset: u64,
2647     pub summary_offset: u32,
2648     pub adapter_id: u32,
2649 }
2650 #[repr(C)]
2651 #[derive(Debug, Default, Copy, Clone)]
2652 pub struct kvm_irq_routing_hv_sint {
2653     pub vcpu: u32,
2654     pub sint: u32,
2655 }
2656 #[repr(C)]
2657 #[derive(Debug, Default, Copy, Clone)]
2658 pub struct kvm_irq_routing_xen_evtchn {
2659     pub port: u32,
2660     pub vcpu: u32,
2661     pub priority: u32,
2662 }
2663 #[repr(C)]
2664 #[derive(Copy, Clone)]
2665 pub struct kvm_irq_routing_entry {
2666     pub gsi: u32,
2667     pub type_: u32,
2668     pub flags: u32,
2669     pub pad: u32,
2670     pub u: kvm_irq_routing_entry__bindgen_ty_1,
2671 }
2672 #[repr(C)]
2673 #[derive(Copy, Clone)]
2674 pub union kvm_irq_routing_entry__bindgen_ty_1 {
2675     pub irqchip: kvm_irq_routing_irqchip,
2676     pub msi: kvm_irq_routing_msi,
2677     pub adapter: kvm_irq_routing_s390_adapter,
2678     pub hv_sint: kvm_irq_routing_hv_sint,
2679     pub xen_evtchn: kvm_irq_routing_xen_evtchn,
2680     pub pad: [u32; 8usize],
2681 }
2682 impl Default for kvm_irq_routing_entry__bindgen_ty_1 {
default() -> Self2683     fn default() -> Self {
2684         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2685         unsafe {
2686             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2687             s.assume_init()
2688         }
2689     }
2690 }
2691 impl Default for kvm_irq_routing_entry {
default() -> Self2692     fn default() -> Self {
2693         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2694         unsafe {
2695             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2696             s.assume_init()
2697         }
2698     }
2699 }
2700 #[repr(C)]
2701 pub struct kvm_irq_routing {
2702     pub nr: u32,
2703     pub flags: u32,
2704     pub entries: __IncompleteArrayField<kvm_irq_routing_entry>,
2705 }
2706 impl Default for kvm_irq_routing {
default() -> Self2707     fn default() -> Self {
2708         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2709         unsafe {
2710             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2711             s.assume_init()
2712         }
2713     }
2714 }
2715 #[repr(C)]
2716 #[derive(Debug, Default, Copy, Clone)]
2717 pub struct kvm_irqfd {
2718     pub fd: u32,
2719     pub gsi: u32,
2720     pub flags: u32,
2721     pub resamplefd: u32,
2722     pub pad: [u8; 16usize],
2723 }
2724 #[repr(C)]
2725 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
2726 pub struct kvm_clock_data {
2727     pub clock: u64,
2728     pub flags: u32,
2729     pub pad0: u32,
2730     pub realtime: u64,
2731     pub host_tsc: u64,
2732     pub pad: [u32; 4usize],
2733 }
2734 #[repr(C)]
2735 #[derive(Debug, Default, Copy, Clone)]
2736 pub struct kvm_config_tlb {
2737     pub params: u64,
2738     pub array: u64,
2739     pub mmu_type: u32,
2740     pub array_len: u32,
2741 }
2742 #[repr(C)]
2743 #[derive(Debug, Default, Copy, Clone)]
2744 pub struct kvm_dirty_tlb {
2745     pub bitmap: u64,
2746     pub num_dirty: u32,
2747 }
2748 #[repr(C)]
2749 #[derive(Debug, Default)]
2750 pub struct kvm_reg_list {
2751     pub n: u64,
2752     pub reg: __IncompleteArrayField<u64>,
2753 }
2754 #[repr(C)]
2755 #[derive(Debug, Default, Copy, Clone)]
2756 pub struct kvm_one_reg {
2757     pub id: u64,
2758     pub addr: u64,
2759 }
2760 #[repr(C)]
2761 #[derive(Debug, Default, Copy, Clone)]
2762 pub struct kvm_msi {
2763     pub address_lo: u32,
2764     pub address_hi: u32,
2765     pub data: u32,
2766     pub flags: u32,
2767     pub devid: u32,
2768     pub pad: [u8; 12usize],
2769 }
2770 #[repr(C)]
2771 #[derive(Debug, Default, Copy, Clone)]
2772 pub struct kvm_arm_device_addr {
2773     pub id: u64,
2774     pub addr: u64,
2775 }
2776 #[repr(C)]
2777 #[derive(Debug, Default, Copy, Clone)]
2778 pub struct kvm_create_device {
2779     pub type_: u32,
2780     pub fd: u32,
2781     pub flags: u32,
2782 }
2783 #[repr(C)]
2784 #[derive(Debug, Default, Copy, Clone)]
2785 pub struct kvm_device_attr {
2786     pub flags: u32,
2787     pub group: u32,
2788     pub attr: u64,
2789     pub addr: u64,
2790 }
2791 pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1;
2792 pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2;
2793 pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3;
2794 pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4;
2795 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5;
2796 pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6;
2797 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7;
2798 pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8;
2799 pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9;
2800 pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10;
2801 pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11;
2802 pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12;
2803 pub type kvm_device_type = ::std::os::raw::c_uint;
2804 #[repr(C)]
2805 #[derive(Debug, Default, Copy, Clone)]
2806 pub struct kvm_vfio_spapr_tce {
2807     pub groupfd: i32,
2808     pub tablefd: i32,
2809 }
2810 #[repr(C)]
2811 #[derive(Debug, Default, Copy, Clone)]
2812 pub struct kvm_enc_region {
2813     pub addr: u64,
2814     pub size: u64,
2815 }
2816 #[repr(C)]
2817 #[derive(Debug, Default, Copy, Clone)]
2818 pub struct kvm_dirty_gfn {
2819     pub flags: u32,
2820     pub slot: u32,
2821     pub offset: u64,
2822 }
2823 #[repr(C)]
2824 #[derive(Debug, Default, Copy, Clone)]
2825 pub struct kvm_stats_header {
2826     pub flags: u32,
2827     pub name_size: u32,
2828     pub num_desc: u32,
2829     pub id_offset: u32,
2830     pub desc_offset: u32,
2831     pub data_offset: u32,
2832 }
2833 #[repr(C)]
2834 #[derive(Debug, Default)]
2835 pub struct kvm_stats_desc {
2836     pub flags: u32,
2837     pub exponent: i16,
2838     pub size: u16,
2839     pub offset: u32,
2840     pub bucket_size: u32,
2841     pub name: __IncompleteArrayField<::std::os::raw::c_char>,
2842 }
2843 #[repr(C)]
2844 #[derive(Debug, Default, Copy, Clone)]
2845 pub struct kvm_memory_attributes {
2846     pub address: u64,
2847     pub size: u64,
2848     pub attributes: u64,
2849     pub flags: u64,
2850 }
2851 #[repr(C)]
2852 #[derive(Debug, Default, Copy, Clone)]
2853 pub struct kvm_create_guest_memfd {
2854     pub size: u64,
2855     pub flags: u64,
2856     pub reserved: [u64; 6usize],
2857 }
2858 #[repr(C)]
2859 #[derive(Debug, Default, Copy, Clone)]
2860 pub struct kvm_pre_fault_memory {
2861     pub gpa: u64,
2862     pub size: u64,
2863     pub flags: u64,
2864     pub padding: [u64; 5usize],
2865 }
2866