kvm_sys/x86/
bindings.rs

1/* automatically generated by tools/bindgen-all-the-things */
2
3#![allow(clippy::missing_safety_doc)]
4#![allow(clippy::undocumented_unsafe_blocks)]
5#![allow(clippy::upper_case_acronyms)]
6#![allow(non_upper_case_globals)]
7#![allow(non_camel_case_types)]
8#![allow(non_snake_case)]
9#![allow(dead_code)]
10
11// Added by kvm_sys/bindgen.sh
12use zerocopy::FromBytes;
13use zerocopy::Immutable;
14use zerocopy::IntoBytes;
15use zerocopy::KnownLayout;
16
17// TODO(b/388092267): Replace this with an upstream equivalent when available.
18// The original index (236) used in the ChromeOS v6.6 kernel was reused upstream for another
19// capability, so this may return incorrect information on some kernels.
20pub 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
24// TODO(qwandor): Update this once the pKVM patches are merged upstream with a stable capability ID.
25pub 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}