kvm_sys/x86/
bindings.rs

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