1#![allow(clippy::missing_safety_doc)]
4#![allow(clippy::ptr_offset_with_cast)] #![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
12use zerocopy::FromBytes;
14use zerocopy::Immutable;
15use zerocopy::IntoBytes;
16use zerocopy::KnownLayout;
17
18pub 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
25pub 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}