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