Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
google
GitHub Repository: google/crosvm
Path: blob/main/kvm_sys/src/x86/bindings.rs
5394 views
1
/* automatically generated by tools/bindgen-all-the-things */
2
3
#![allow(clippy::missing_safety_doc)]
4
#![allow(clippy::ptr_offset_with_cast)] // https://github.com/rust-lang/rust-bindgen/issues/3053
5
#![allow(clippy::undocumented_unsafe_blocks)]
6
#![allow(clippy::upper_case_acronyms)]
7
#![allow(non_upper_case_globals)]
8
#![allow(non_camel_case_types)]
9
#![allow(non_snake_case)]
10
#![allow(dead_code)]
11
12
// Added by kvm_sys/bindgen.sh
13
use zerocopy::FromBytes;
14
use zerocopy::Immutable;
15
use zerocopy::IntoBytes;
16
use zerocopy::KnownLayout;
17
18
// TODO(b/388092267): Replace this with an upstream equivalent when available.
19
// The original index (236) used in the ChromeOS v6.6 kernel was reused upstream for another
20
// capability, so this may return incorrect information on some kernels.
21
pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA_CROS: u32 = 236;
22
pub const KVM_CAP_USER_CONFIGURE_NONCOHERENT_DMA: u32 = 239;
23
pub const KVM_MEM_NON_COHERENT_DMA: u32 = 8;
24
25
// TODO(qwandor): Update this once the pKVM patches are merged upstream with a stable capability ID.
26
pub const KVM_CAP_ARM_PROTECTED_VM: u32 = 0xffbadab1;
27
pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA: u32 = 0;
28
pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO: u32 = 1;
29
pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FFA: u32 = 2;
30
pub const KVM_VM_TYPE_ARM_PROTECTED: u32 = 0x80000000;
31
pub const KVM_X86_PKVM_PROTECTED_VM: u32 = 28;
32
pub const KVM_CAP_X86_PROTECTED_VM: u32 = 0xffbadab2;
33
pub const KVM_CAP_X86_PROTECTED_VM_FLAGS_SET_FW_GPA: u32 = 0;
34
pub const KVM_CAP_X86_PROTECTED_VM_FLAGS_INFO: u32 = 1;
35
pub const KVM_DEV_VFIO_PVIOMMU: u32 = 5;
36
pub const KVM_DEV_VFIO_PVIOMMU_ATTACH: u32 = 1;
37
#[repr(C)]
38
#[derive(Debug, Default, Copy, Clone)]
39
pub struct kvm_vfio_iommu_info {
40
pub size: u32,
41
pub device_fd: i32,
42
pub nr_sids: u32,
43
pub __reserved: u32,
44
}
45
pub const KVM_DEV_VFIO_PVIOMMU_GET_INFO: u32 = 2;
46
#[repr(C)]
47
#[derive(Debug, Default, Copy, Clone)]
48
pub 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)]
58
pub struct __BindgenBitfieldUnit<Storage> {
59
storage: Storage,
60
}
61
impl<Storage> __BindgenBitfieldUnit<Storage> {
62
#[inline]
63
pub const fn new(storage: Storage) -> Self {
64
Self { storage }
65
}
66
}
67
impl<Storage> __BindgenBitfieldUnit<Storage>
68
where
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)]
194
pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
195
impl<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
}
209
impl<T> ::std::default::Default for __BindgenUnionField<T> {
210
#[inline]
211
fn default() -> Self {
212
Self::new()
213
}
214
}
215
impl<T> ::std::clone::Clone for __BindgenUnionField<T> {
216
#[inline]
217
fn clone(&self) -> Self {
218
*self
219
}
220
}
221
impl<T> ::std::marker::Copy for __BindgenUnionField<T> {}
222
impl<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
}
227
impl<T> ::std::hash::Hash for __BindgenUnionField<T> {
228
fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {}
229
}
230
impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
231
fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
232
true
233
}
234
}
235
impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
236
pub const KVM_PIO_PAGE_OFFSET: u32 = 1;
237
pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 2;
238
pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 64;
239
pub const DE_VECTOR: u32 = 0;
240
pub const DB_VECTOR: u32 = 1;
241
pub const BP_VECTOR: u32 = 3;
242
pub const OF_VECTOR: u32 = 4;
243
pub const BR_VECTOR: u32 = 5;
244
pub const UD_VECTOR: u32 = 6;
245
pub const NM_VECTOR: u32 = 7;
246
pub const DF_VECTOR: u32 = 8;
247
pub const TS_VECTOR: u32 = 10;
248
pub const NP_VECTOR: u32 = 11;
249
pub const SS_VECTOR: u32 = 12;
250
pub const GP_VECTOR: u32 = 13;
251
pub const PF_VECTOR: u32 = 14;
252
pub const MF_VECTOR: u32 = 16;
253
pub const AC_VECTOR: u32 = 17;
254
pub const MC_VECTOR: u32 = 18;
255
pub const XM_VECTOR: u32 = 19;
256
pub const VE_VECTOR: u32 = 20;
257
pub const KVM_NR_INTERRUPTS: u32 = 256;
258
pub const KVM_IOAPIC_NUM_PINS: u32 = 24;
259
pub const KVM_IRQCHIP_PIC_MASTER: u32 = 0;
260
pub const KVM_IRQCHIP_PIC_SLAVE: u32 = 1;
261
pub const KVM_IRQCHIP_IOAPIC: u32 = 2;
262
pub const KVM_NR_IRQCHIPS: u32 = 3;
263
pub const KVM_RUN_X86_SMM: u32 = 1;
264
pub const KVM_RUN_X86_BUS_LOCK: u32 = 2;
265
pub const KVM_RUN_X86_GUEST_MODE: u32 = 4;
266
pub const KVM_APIC_REG_SIZE: u32 = 1024;
267
pub const KVM_SREGS2_FLAGS_PDPTRS_VALID: u32 = 1;
268
pub const KVM_MSR_FILTER_MAX_BITMAP_SIZE: u32 = 1536;
269
pub const KVM_MSR_FILTER_READ: u32 = 1;
270
pub const KVM_MSR_FILTER_WRITE: u32 = 2;
271
pub const KVM_MSR_FILTER_RANGE_VALID_MASK: u32 = 3;
272
pub const KVM_MSR_FILTER_MAX_RANGES: u32 = 16;
273
pub const KVM_MSR_FILTER_DEFAULT_ALLOW: u32 = 0;
274
pub const KVM_MSR_FILTER_DEFAULT_DENY: u32 = 1;
275
pub const KVM_MSR_FILTER_VALID_MASK: u32 = 1;
276
pub const KVM_CPUID_FLAG_SIGNIFCANT_INDEX: u32 = 1;
277
pub const KVM_CPUID_FLAG_STATEFUL_FUNC: u32 = 2;
278
pub const KVM_CPUID_FLAG_STATE_READ_NEXT: u32 = 4;
279
pub const KVM_GUESTDBG_USE_SW_BP: u32 = 65536;
280
pub const KVM_GUESTDBG_USE_HW_BP: u32 = 131072;
281
pub const KVM_GUESTDBG_INJECT_DB: u32 = 262144;
282
pub const KVM_GUESTDBG_INJECT_BP: u32 = 524288;
283
pub const KVM_GUESTDBG_BLOCKIRQ: u32 = 1048576;
284
pub const KVM_PIT_FLAGS_HPET_LEGACY: u32 = 1;
285
pub const KVM_PIT_FLAGS_SPEAKER_DATA_ON: u32 = 2;
286
pub const KVM_VCPUEVENT_VALID_NMI_PENDING: u32 = 1;
287
pub const KVM_VCPUEVENT_VALID_SIPI_VECTOR: u32 = 2;
288
pub const KVM_VCPUEVENT_VALID_SHADOW: u32 = 4;
289
pub const KVM_VCPUEVENT_VALID_SMM: u32 = 8;
290
pub const KVM_VCPUEVENT_VALID_PAYLOAD: u32 = 16;
291
pub const KVM_VCPUEVENT_VALID_TRIPLE_FAULT: u32 = 32;
292
pub const KVM_X86_SHADOW_INT_MOV_SS: u32 = 1;
293
pub const KVM_X86_SHADOW_INT_STI: u32 = 2;
294
pub const KVM_MAX_XCRS: u32 = 16;
295
pub const KVM_SYNC_X86_REGS: u32 = 1;
296
pub const KVM_SYNC_X86_SREGS: u32 = 2;
297
pub const KVM_SYNC_X86_EVENTS: u32 = 4;
298
pub const KVM_SYNC_X86_VALID_FIELDS: u32 = 7;
299
pub const KVM_X86_QUIRK_LINT0_REENABLED: u32 = 1;
300
pub const KVM_X86_QUIRK_CD_NW_CLEARED: u32 = 2;
301
pub const KVM_X86_QUIRK_LAPIC_MMIO_HOLE: u32 = 4;
302
pub const KVM_X86_QUIRK_OUT_7E_INC_RIP: u32 = 8;
303
pub const KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT: u32 = 16;
304
pub const KVM_X86_QUIRK_FIX_HYPERCALL_INSN: u32 = 32;
305
pub const KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS: u32 = 64;
306
pub const KVM_X86_QUIRK_SLOT_ZAP_ALL: u32 = 128;
307
pub const KVM_STATE_NESTED_FORMAT_VMX: u32 = 0;
308
pub const KVM_STATE_NESTED_FORMAT_SVM: u32 = 1;
309
pub const KVM_STATE_NESTED_GUEST_MODE: u32 = 1;
310
pub const KVM_STATE_NESTED_RUN_PENDING: u32 = 2;
311
pub const KVM_STATE_NESTED_EVMCS: u32 = 4;
312
pub const KVM_STATE_NESTED_MTF_PENDING: u32 = 8;
313
pub const KVM_STATE_NESTED_GIF_SET: u32 = 256;
314
pub const KVM_STATE_NESTED_SMM_GUEST_MODE: u32 = 1;
315
pub const KVM_STATE_NESTED_SMM_VMXON: u32 = 2;
316
pub const KVM_STATE_NESTED_VMX_VMCS_SIZE: u32 = 4096;
317
pub const KVM_STATE_NESTED_SVM_VMCB_SIZE: u32 = 4096;
318
pub const KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE: u32 = 1;
319
pub const KVM_X86_GRP_SYSTEM: u32 = 0;
320
pub const KVM_X86_XCOMP_GUEST_SUPP: u32 = 0;
321
pub const KVM_X86_GRP_SEV: u32 = 1;
322
pub const KVM_X86_SEV_VMSA_FEATURES: u32 = 0;
323
pub const KVM_PMU_EVENT_ALLOW: u32 = 0;
324
pub const KVM_PMU_EVENT_DENY: u32 = 1;
325
pub const KVM_XEN_HVM_CONFIG_HYPERCALL_MSR: u32 = 1;
326
pub const KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL: u32 = 2;
327
pub const KVM_XEN_HVM_CONFIG_SHARED_INFO: u32 = 4;
328
pub const KVM_XEN_HVM_CONFIG_RUNSTATE: u32 = 8;
329
pub const KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL: u32 = 16;
330
pub const KVM_XEN_HVM_CONFIG_EVTCHN_SEND: u32 = 32;
331
pub const KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG: u32 = 64;
332
pub const KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE: u32 = 128;
333
pub const KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA: u32 = 256;
334
pub const KVM_XEN_EVTCHN_DEASSIGN: u32 = 1;
335
pub const KVM_XEN_EVTCHN_UPDATE: u32 = 2;
336
pub const KVM_XEN_EVTCHN_RESET: u32 = 4;
337
pub const KVM_XEN_ATTR_TYPE_LONG_MODE: u32 = 0;
338
pub const KVM_XEN_ATTR_TYPE_SHARED_INFO: u32 = 1;
339
pub const KVM_XEN_ATTR_TYPE_UPCALL_VECTOR: u32 = 2;
340
pub const KVM_XEN_ATTR_TYPE_EVTCHN: u32 = 3;
341
pub const KVM_XEN_ATTR_TYPE_XEN_VERSION: u32 = 4;
342
pub const KVM_XEN_ATTR_TYPE_RUNSTATE_UPDATE_FLAG: u32 = 5;
343
pub const KVM_XEN_ATTR_TYPE_SHARED_INFO_HVA: u32 = 6;
344
pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO: u32 = 0;
345
pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO: u32 = 1;
346
pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR: u32 = 2;
347
pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT: u32 = 3;
348
pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA: u32 = 4;
349
pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST: u32 = 5;
350
pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID: u32 = 6;
351
pub const KVM_XEN_VCPU_ATTR_TYPE_TIMER: u32 = 7;
352
pub const KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR: u32 = 8;
353
pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO_HVA: u32 = 9;
354
pub const KVM_SEV_SNP_PAGE_TYPE_NORMAL: u32 = 1;
355
pub const KVM_SEV_SNP_PAGE_TYPE_ZERO: u32 = 3;
356
pub const KVM_SEV_SNP_PAGE_TYPE_UNMEASURED: u32 = 4;
357
pub const KVM_SEV_SNP_PAGE_TYPE_SECRETS: u32 = 5;
358
pub const KVM_SEV_SNP_PAGE_TYPE_CPUID: u32 = 6;
359
pub const KVM_SEV_SNP_ID_BLOCK_SIZE: u32 = 96;
360
pub const KVM_SEV_SNP_ID_AUTH_SIZE: u32 = 4096;
361
pub const KVM_SEV_SNP_FINISH_DATA_SIZE: u32 = 32;
362
pub const KVM_X2APIC_API_USE_32BIT_IDS: u32 = 1;
363
pub const KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK: u32 = 2;
364
pub const KVM_HYPERV_CONN_ID_MASK: u32 = 16777215;
365
pub const KVM_HYPERV_EVENTFD_DEASSIGN: u32 = 1;
366
pub const KVM_PMU_MASKED_ENTRY_UMASK_MASK_SHIFT: u32 = 56;
367
pub const KVM_VCPU_TSC_CTRL: u32 = 0;
368
pub const KVM_VCPU_TSC_OFFSET: u32 = 0;
369
pub const KVM_X86_DEFAULT_VM: u32 = 0;
370
pub const KVM_X86_SW_PROTECTED_VM: u32 = 1;
371
pub const KVM_X86_SEV_VM: u32 = 2;
372
pub const KVM_X86_SEV_ES_VM: u32 = 3;
373
pub const KVM_X86_SNP_VM: u32 = 4;
374
pub const KVM_API_VERSION: u32 = 12;
375
pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1;
376
pub const KVM_MEM_READONLY: u32 = 2;
377
pub const KVM_MEM_GUEST_MEMFD: u32 = 4;
378
pub const KVM_PIT_SPEAKER_DUMMY: u32 = 1;
379
pub const KVM_EXIT_HYPERV_SYNIC: u32 = 1;
380
pub const KVM_EXIT_HYPERV_HCALL: u32 = 2;
381
pub const KVM_EXIT_HYPERV_SYNDBG: u32 = 3;
382
pub const KVM_EXIT_XEN_HCALL: u32 = 1;
383
pub const KVM_S390_GET_SKEYS_NONE: u32 = 1;
384
pub const KVM_S390_SKEYS_MAX: u32 = 1048576;
385
pub const KVM_EXIT_UNKNOWN: u32 = 0;
386
pub const KVM_EXIT_EXCEPTION: u32 = 1;
387
pub const KVM_EXIT_IO: u32 = 2;
388
pub const KVM_EXIT_HYPERCALL: u32 = 3;
389
pub const KVM_EXIT_DEBUG: u32 = 4;
390
pub const KVM_EXIT_HLT: u32 = 5;
391
pub const KVM_EXIT_MMIO: u32 = 6;
392
pub const KVM_EXIT_IRQ_WINDOW_OPEN: u32 = 7;
393
pub const KVM_EXIT_SHUTDOWN: u32 = 8;
394
pub const KVM_EXIT_FAIL_ENTRY: u32 = 9;
395
pub const KVM_EXIT_INTR: u32 = 10;
396
pub const KVM_EXIT_SET_TPR: u32 = 11;
397
pub const KVM_EXIT_TPR_ACCESS: u32 = 12;
398
pub const KVM_EXIT_S390_SIEIC: u32 = 13;
399
pub const KVM_EXIT_S390_RESET: u32 = 14;
400
pub const KVM_EXIT_DCR: u32 = 15;
401
pub const KVM_EXIT_NMI: u32 = 16;
402
pub const KVM_EXIT_INTERNAL_ERROR: u32 = 17;
403
pub const KVM_EXIT_OSI: u32 = 18;
404
pub const KVM_EXIT_PAPR_HCALL: u32 = 19;
405
pub const KVM_EXIT_S390_UCONTROL: u32 = 20;
406
pub const KVM_EXIT_WATCHDOG: u32 = 21;
407
pub const KVM_EXIT_S390_TSCH: u32 = 22;
408
pub const KVM_EXIT_EPR: u32 = 23;
409
pub const KVM_EXIT_SYSTEM_EVENT: u32 = 24;
410
pub const KVM_EXIT_S390_STSI: u32 = 25;
411
pub const KVM_EXIT_IOAPIC_EOI: u32 = 26;
412
pub const KVM_EXIT_HYPERV: u32 = 27;
413
pub const KVM_EXIT_ARM_NISV: u32 = 28;
414
pub const KVM_EXIT_X86_RDMSR: u32 = 29;
415
pub const KVM_EXIT_X86_WRMSR: u32 = 30;
416
pub const KVM_EXIT_DIRTY_RING_FULL: u32 = 31;
417
pub const KVM_EXIT_AP_RESET_HOLD: u32 = 32;
418
pub const KVM_EXIT_X86_BUS_LOCK: u32 = 33;
419
pub const KVM_EXIT_XEN: u32 = 34;
420
pub const KVM_EXIT_RISCV_SBI: u32 = 35;
421
pub const KVM_EXIT_RISCV_CSR: u32 = 36;
422
pub const KVM_EXIT_NOTIFY: u32 = 37;
423
pub const KVM_EXIT_LOONGARCH_IOCSR: u32 = 38;
424
pub const KVM_EXIT_MEMORY_FAULT: u32 = 39;
425
pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1;
426
pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2;
427
pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3;
428
pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4;
429
pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1;
430
pub const KVM_EXIT_IO_IN: u32 = 0;
431
pub const KVM_EXIT_IO_OUT: u32 = 1;
432
pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1;
433
pub const KVM_SYSTEM_EVENT_RESET: u32 = 2;
434
pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3;
435
pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4;
436
pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5;
437
pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6;
438
pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1;
439
pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2;
440
pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4;
441
pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7;
442
pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1;
443
pub const KVM_MEMORY_EXIT_FLAG_PRIVATE: u32 = 8;
444
pub const SYNC_REGS_SIZE_BYTES: u32 = 2048;
445
pub const KVM_MP_STATE_RUNNABLE: u32 = 0;
446
pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1;
447
pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2;
448
pub const KVM_MP_STATE_HALTED: u32 = 3;
449
pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4;
450
pub const KVM_MP_STATE_STOPPED: u32 = 5;
451
pub const KVM_MP_STATE_CHECK_STOP: u32 = 6;
452
pub const KVM_MP_STATE_OPERATING: u32 = 7;
453
pub const KVM_MP_STATE_LOAD: u32 = 8;
454
pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9;
455
pub const KVM_MP_STATE_SUSPENDED: u32 = 10;
456
pub const KVM_GUESTDBG_ENABLE: u32 = 1;
457
pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2;
458
pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1;
459
pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2;
460
pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4;
461
pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8;
462
pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15;
463
pub const KVMIO: u32 = 174;
464
pub const KVM_VM_S390_UCONTROL: u32 = 1;
465
pub const KVM_VM_PPC_HV: u32 = 1;
466
pub const KVM_VM_PPC_PR: u32 = 2;
467
pub const KVM_VM_MIPS_AUTO: u32 = 0;
468
pub const KVM_VM_MIPS_VZ: u32 = 1;
469
pub const KVM_VM_MIPS_TE: u32 = 2;
470
pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1;
471
pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255;
472
pub const KVM_CAP_IRQCHIP: u32 = 0;
473
pub const KVM_CAP_HLT: u32 = 1;
474
pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2;
475
pub const KVM_CAP_USER_MEMORY: u32 = 3;
476
pub const KVM_CAP_SET_TSS_ADDR: u32 = 4;
477
pub const KVM_CAP_VAPIC: u32 = 6;
478
pub const KVM_CAP_EXT_CPUID: u32 = 7;
479
pub const KVM_CAP_CLOCKSOURCE: u32 = 8;
480
pub const KVM_CAP_NR_VCPUS: u32 = 9;
481
pub const KVM_CAP_NR_MEMSLOTS: u32 = 10;
482
pub const KVM_CAP_PIT: u32 = 11;
483
pub const KVM_CAP_NOP_IO_DELAY: u32 = 12;
484
pub const KVM_CAP_PV_MMU: u32 = 13;
485
pub const KVM_CAP_MP_STATE: u32 = 14;
486
pub const KVM_CAP_COALESCED_MMIO: u32 = 15;
487
pub const KVM_CAP_SYNC_MMU: u32 = 16;
488
pub const KVM_CAP_IOMMU: u32 = 18;
489
pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21;
490
pub const KVM_CAP_USER_NMI: u32 = 22;
491
pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23;
492
pub const KVM_CAP_REINJECT_CONTROL: u32 = 24;
493
pub const KVM_CAP_IRQ_ROUTING: u32 = 25;
494
pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26;
495
pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29;
496
pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30;
497
pub const KVM_CAP_MCE: u32 = 31;
498
pub const KVM_CAP_IRQFD: u32 = 32;
499
pub const KVM_CAP_PIT2: u32 = 33;
500
pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34;
501
pub const KVM_CAP_PIT_STATE2: u32 = 35;
502
pub const KVM_CAP_IOEVENTFD: u32 = 36;
503
pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37;
504
pub const KVM_CAP_XEN_HVM: u32 = 38;
505
pub const KVM_CAP_ADJUST_CLOCK: u32 = 39;
506
pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40;
507
pub const KVM_CAP_VCPU_EVENTS: u32 = 41;
508
pub const KVM_CAP_S390_PSW: u32 = 42;
509
pub const KVM_CAP_PPC_SEGSTATE: u32 = 43;
510
pub const KVM_CAP_HYPERV: u32 = 44;
511
pub const KVM_CAP_HYPERV_VAPIC: u32 = 45;
512
pub const KVM_CAP_HYPERV_SPIN: u32 = 46;
513
pub const KVM_CAP_PCI_SEGMENT: u32 = 47;
514
pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48;
515
pub const KVM_CAP_INTR_SHADOW: u32 = 49;
516
pub const KVM_CAP_DEBUGREGS: u32 = 50;
517
pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51;
518
pub const KVM_CAP_PPC_OSI: u32 = 52;
519
pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53;
520
pub const KVM_CAP_ENABLE_CAP: u32 = 54;
521
pub const KVM_CAP_XSAVE: u32 = 55;
522
pub const KVM_CAP_XCRS: u32 = 56;
523
pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57;
524
pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58;
525
pub const KVM_CAP_ASYNC_PF: u32 = 59;
526
pub const KVM_CAP_TSC_CONTROL: u32 = 60;
527
pub const KVM_CAP_GET_TSC_KHZ: u32 = 61;
528
pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62;
529
pub const KVM_CAP_SPAPR_TCE: u32 = 63;
530
pub const KVM_CAP_PPC_SMT: u32 = 64;
531
pub const KVM_CAP_PPC_RMA: u32 = 65;
532
pub const KVM_CAP_MAX_VCPUS: u32 = 66;
533
pub const KVM_CAP_PPC_HIOR: u32 = 67;
534
pub const KVM_CAP_PPC_PAPR: u32 = 68;
535
pub const KVM_CAP_SW_TLB: u32 = 69;
536
pub const KVM_CAP_ONE_REG: u32 = 70;
537
pub const KVM_CAP_S390_GMAP: u32 = 71;
538
pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72;
539
pub const KVM_CAP_S390_UCONTROL: u32 = 73;
540
pub const KVM_CAP_SYNC_REGS: u32 = 74;
541
pub const KVM_CAP_PCI_2_3: u32 = 75;
542
pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76;
543
pub const KVM_CAP_SIGNAL_MSI: u32 = 77;
544
pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78;
545
pub const KVM_CAP_S390_COW: u32 = 79;
546
pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80;
547
pub const KVM_CAP_READONLY_MEM: u32 = 81;
548
pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82;
549
pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83;
550
pub const KVM_CAP_PPC_HTAB_FD: u32 = 84;
551
pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85;
552
pub const KVM_CAP_PPC_EPR: u32 = 86;
553
pub const KVM_CAP_ARM_PSCI: u32 = 87;
554
pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88;
555
pub const KVM_CAP_DEVICE_CTRL: u32 = 89;
556
pub const KVM_CAP_IRQ_MPIC: u32 = 90;
557
pub const KVM_CAP_PPC_RTAS: u32 = 91;
558
pub const KVM_CAP_IRQ_XICS: u32 = 92;
559
pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93;
560
pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94;
561
pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95;
562
pub const KVM_CAP_HYPERV_TIME: u32 = 96;
563
pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97;
564
pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98;
565
pub const KVM_CAP_S390_IRQCHIP: u32 = 99;
566
pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100;
567
pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101;
568
pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102;
569
pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103;
570
pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104;
571
pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105;
572
pub const KVM_CAP_S390_USER_SIGP: u32 = 106;
573
pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107;
574
pub const KVM_CAP_S390_MEM_OP: u32 = 108;
575
pub const KVM_CAP_S390_USER_STSI: u32 = 109;
576
pub const KVM_CAP_S390_SKEYS: u32 = 110;
577
pub const KVM_CAP_MIPS_FPU: u32 = 111;
578
pub const KVM_CAP_MIPS_MSA: u32 = 112;
579
pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113;
580
pub const KVM_CAP_S390_IRQ_STATE: u32 = 114;
581
pub const KVM_CAP_PPC_HWRNG: u32 = 115;
582
pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116;
583
pub const KVM_CAP_X86_SMM: u32 = 117;
584
pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118;
585
pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119;
586
pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120;
587
pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121;
588
pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122;
589
pub const KVM_CAP_HYPERV_SYNIC: u32 = 123;
590
pub const KVM_CAP_S390_RI: u32 = 124;
591
pub const KVM_CAP_SPAPR_TCE_64: u32 = 125;
592
pub const KVM_CAP_ARM_PMU_V3: u32 = 126;
593
pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127;
594
pub const KVM_CAP_MAX_VCPU_ID: u32 = 128;
595
pub const KVM_CAP_X2APIC_API: u32 = 129;
596
pub const KVM_CAP_S390_USER_INSTR0: u32 = 130;
597
pub const KVM_CAP_MSI_DEVID: u32 = 131;
598
pub const KVM_CAP_PPC_HTM: u32 = 132;
599
pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133;
600
pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134;
601
pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135;
602
pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136;
603
pub const KVM_CAP_MIPS_VZ: u32 = 137;
604
pub const KVM_CAP_MIPS_TE: u32 = 138;
605
pub const KVM_CAP_MIPS_64BIT: u32 = 139;
606
pub const KVM_CAP_S390_GS: u32 = 140;
607
pub const KVM_CAP_S390_AIS: u32 = 141;
608
pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142;
609
pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143;
610
pub const KVM_CAP_ARM_USER_IRQ: u32 = 144;
611
pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145;
612
pub const KVM_CAP_PPC_FWNMI: u32 = 146;
613
pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147;
614
pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148;
615
pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149;
616
pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150;
617
pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151;
618
pub const KVM_CAP_S390_BPB: u32 = 152;
619
pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153;
620
pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154;
621
pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155;
622
pub const KVM_CAP_S390_HPAGE_1M: u32 = 156;
623
pub const KVM_CAP_NESTED_STATE: u32 = 157;
624
pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158;
625
pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159;
626
pub const KVM_CAP_PPC_NESTED_HV: u32 = 160;
627
pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161;
628
pub const KVM_CAP_COALESCED_PIO: u32 = 162;
629
pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163;
630
pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164;
631
pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165;
632
pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166;
633
pub const KVM_CAP_HYPERV_CPUID: u32 = 167;
634
pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168;
635
pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169;
636
pub const KVM_CAP_ARM_SVE: u32 = 170;
637
pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171;
638
pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172;
639
pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173;
640
pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174;
641
pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175;
642
pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176;
643
pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177;
644
pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178;
645
pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179;
646
pub const KVM_CAP_S390_PROTECTED: u32 = 180;
647
pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181;
648
pub const KVM_CAP_HALT_POLL: u32 = 182;
649
pub const KVM_CAP_ASYNC_PF_INT: u32 = 183;
650
pub const KVM_CAP_LAST_CPU: u32 = 184;
651
pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185;
652
pub const KVM_CAP_S390_DIAG318: u32 = 186;
653
pub const KVM_CAP_STEAL_TIME: u32 = 187;
654
pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188;
655
pub const KVM_CAP_X86_MSR_FILTER: u32 = 189;
656
pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190;
657
pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191;
658
pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192;
659
pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193;
660
pub const KVM_CAP_PPC_DAWR1: u32 = 194;
661
pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195;
662
pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196;
663
pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197;
664
pub const KVM_CAP_PTP_KVM: u32 = 198;
665
pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199;
666
pub const KVM_CAP_SREGS2: u32 = 200;
667
pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201;
668
pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202;
669
pub const KVM_CAP_BINARY_STATS_FD: u32 = 203;
670
pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204;
671
pub const KVM_CAP_ARM_MTE: u32 = 205;
672
pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206;
673
pub const KVM_CAP_VM_GPA_BITS: u32 = 207;
674
pub const KVM_CAP_XSAVE2: u32 = 208;
675
pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209;
676
pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210;
677
pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211;
678
pub const KVM_CAP_PMU_CAPABILITY: u32 = 212;
679
pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213;
680
pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214;
681
pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215;
682
pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216;
683
pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217;
684
pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218;
685
pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219;
686
pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220;
687
pub const KVM_CAP_S390_ZPCI_OP: u32 = 221;
688
pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222;
689
pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223;
690
pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224;
691
pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225;
692
pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226;
693
pub const KVM_CAP_COUNTER_OFFSET: u32 = 227;
694
pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228;
695
pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229;
696
pub const KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES: u32 = 230;
697
pub const KVM_CAP_USER_MEMORY2: u32 = 231;
698
pub const KVM_CAP_MEMORY_FAULT_INFO: u32 = 232;
699
pub const KVM_CAP_MEMORY_ATTRIBUTES: u32 = 233;
700
pub const KVM_CAP_GUEST_MEMFD: u32 = 234;
701
pub const KVM_CAP_VM_TYPES: u32 = 235;
702
pub const KVM_CAP_PRE_FAULT_MEMORY: u32 = 236;
703
pub const KVM_CAP_X86_APIC_BUS_CYCLES_NS: u32 = 237;
704
pub const KVM_CAP_X86_GUEST_MODE: u32 = 238;
705
pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1;
706
pub const KVM_IRQ_ROUTING_MSI: u32 = 2;
707
pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3;
708
pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4;
709
pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5;
710
pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1;
711
pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2;
712
pub const KVM_CLOCK_TSC_STABLE: u32 = 2;
713
pub const KVM_CLOCK_REALTIME: u32 = 4;
714
pub const KVM_CLOCK_HOST_TSC: u32 = 8;
715
pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0;
716
pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1;
717
pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936;
718
pub const KVM_REG_GENERIC: u32 = 0;
719
pub const KVM_REG_PPC: u64 = 1152921504606846976;
720
pub const KVM_REG_X86: u64 = 2305843009213693952;
721
pub const KVM_REG_IA64: u64 = 3458764513820540928;
722
pub const KVM_REG_ARM: u64 = 4611686018427387904;
723
pub const KVM_REG_S390: u64 = 5764607523034234880;
724
pub const KVM_REG_ARM64: u64 = 6917529027641081856;
725
pub const KVM_REG_MIPS: u64 = 8070450532247928832;
726
pub const KVM_REG_RISCV: i64 = -9223372036854775808;
727
pub const KVM_REG_LOONGARCH: i64 = -8070450532247928832;
728
pub const KVM_REG_SIZE_SHIFT: u32 = 52;
729
pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440;
730
pub const KVM_REG_SIZE_U8: u32 = 0;
731
pub const KVM_REG_SIZE_U16: u64 = 4503599627370496;
732
pub const KVM_REG_SIZE_U32: u64 = 9007199254740992;
733
pub const KVM_REG_SIZE_U64: u64 = 13510798882111488;
734
pub const KVM_REG_SIZE_U128: u64 = 18014398509481984;
735
pub const KVM_REG_SIZE_U256: u64 = 22517998136852480;
736
pub const KVM_REG_SIZE_U512: u64 = 27021597764222976;
737
pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472;
738
pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968;
739
pub const KVM_MSI_VALID_DEVID: u32 = 1;
740
pub const KVM_CREATE_DEVICE_TEST: u32 = 1;
741
pub const KVM_DEV_VFIO_FILE: u32 = 1;
742
pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1;
743
pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2;
744
pub const KVM_DEV_VFIO_GROUP: u32 = 1;
745
pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1;
746
pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2;
747
pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3;
748
pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1;
749
pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2;
750
pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1;
751
pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2;
752
pub const KVM_DIRTY_GFN_F_MASK: u32 = 3;
753
pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1;
754
pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2;
755
pub const KVM_PMU_CAP_DISABLE: u32 = 1;
756
pub const KVM_STATS_TYPE_SHIFT: u32 = 0;
757
pub const KVM_STATS_TYPE_MASK: u32 = 15;
758
pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0;
759
pub const KVM_STATS_TYPE_INSTANT: u32 = 1;
760
pub const KVM_STATS_TYPE_PEAK: u32 = 2;
761
pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3;
762
pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4;
763
pub const KVM_STATS_TYPE_MAX: u32 = 4;
764
pub const KVM_STATS_UNIT_SHIFT: u32 = 4;
765
pub const KVM_STATS_UNIT_MASK: u32 = 240;
766
pub const KVM_STATS_UNIT_NONE: u32 = 0;
767
pub const KVM_STATS_UNIT_BYTES: u32 = 16;
768
pub const KVM_STATS_UNIT_SECONDS: u32 = 32;
769
pub const KVM_STATS_UNIT_CYCLES: u32 = 48;
770
pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64;
771
pub const KVM_STATS_UNIT_MAX: u32 = 64;
772
pub const KVM_STATS_BASE_SHIFT: u32 = 8;
773
pub const KVM_STATS_BASE_MASK: u32 = 3840;
774
pub const KVM_STATS_BASE_POW10: u32 = 0;
775
pub const KVM_STATS_BASE_POW2: u32 = 256;
776
pub const KVM_STATS_BASE_MAX: u32 = 256;
777
pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1;
778
pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2;
779
pub const KVM_MEMORY_ATTRIBUTE_PRIVATE: u32 = 8;
780
pub type __s128 = i128;
781
pub type __u128 = u128;
782
pub type __le16 = u16;
783
pub type __be16 = u16;
784
pub type __le32 = u32;
785
pub type __be32 = u32;
786
pub type __le64 = u64;
787
pub type __be64 = u64;
788
pub type __sum16 = u16;
789
pub type __wsum = u32;
790
pub type __poll_t = ::std::os::raw::c_uint;
791
#[repr(C)]
792
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
793
pub 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)]
813
pub 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)]
823
pub 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)]
829
pub 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
}
836
impl 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
}
1148
impl 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
}
1157
impl 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)]
1168
pub 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)]
1190
pub struct kvm_lapic_state {
1191
pub regs: [::std::os::raw::c_char; 1024usize],
1192
}
1193
impl 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)]
1204
pub 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)]
1221
pub 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)]
1228
pub 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)]
1250
pub 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)]
1273
pub 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)]
1288
pub 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)]
1295
pub struct kvm_msrs<FAM: ?Sized = [kvm_msr_entry; 0]> {
1296
pub nmsrs: u32,
1297
pub pad: u32,
1298
pub entries: FAM,
1299
}
1300
impl kvm_msrs<[kvm_msr_entry]> {}
1301
impl kvm_msrs<[kvm_msr_entry; 0]> {}
1302
#[repr(C)]
1303
#[derive(Debug, Default, FromBytes, Immutable, KnownLayout)]
1304
pub struct kvm_msr_list<FAM: ?Sized = [u32; 0]> {
1305
pub nmsrs: u32,
1306
pub indices: FAM,
1307
}
1308
impl kvm_msr_list<[u32]> {}
1309
impl kvm_msr_list<[u32; 0]> {}
1310
#[repr(C)]
1311
#[derive(Debug, Copy, Clone)]
1312
pub struct kvm_msr_filter_range {
1313
pub flags: u32,
1314
pub nmsrs: u32,
1315
pub base: u32,
1316
pub bitmap: *mut u8,
1317
}
1318
impl 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)]
1329
pub struct kvm_msr_filter {
1330
pub flags: u32,
1331
pub ranges: [kvm_msr_filter_range; 16usize],
1332
}
1333
impl 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)]
1344
pub 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)]
1354
pub struct kvm_cpuid<FAM: ?Sized = [kvm_cpuid_entry; 0]> {
1355
pub nent: u32,
1356
pub padding: u32,
1357
pub entries: FAM,
1358
}
1359
impl kvm_cpuid<[kvm_cpuid_entry]> {}
1360
impl kvm_cpuid<[kvm_cpuid_entry; 0]> {}
1361
#[repr(C)]
1362
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, KnownLayout)]
1363
pub 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)]
1375
pub struct kvm_cpuid2<FAM: ?Sized = [kvm_cpuid_entry2; 0]> {
1376
pub nent: u32,
1377
pub padding: u32,
1378
pub entries: FAM,
1379
}
1380
impl kvm_cpuid2<[kvm_cpuid_entry2]> {}
1381
impl kvm_cpuid2<[kvm_cpuid_entry2; 0]> {}
1382
#[repr(C)]
1383
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
1384
pub 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)]
1401
pub 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)]
1410
pub struct kvm_guest_debug_arch {
1411
pub debugreg: [u64; 8usize],
1412
}
1413
#[repr(C)]
1414
#[derive(Debug, Default, Copy, Clone)]
1415
pub 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)]
1420
pub 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)]
1427
pub 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)]
1433
pub 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)]
1447
pub 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)]
1456
pub 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)]
1464
pub 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)]
1472
pub 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)]
1480
pub 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)]
1485
pub 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)]
1494
pub struct kvm_xsave<FAM: ?Sized = [u32; 0]> {
1495
pub region: [u32; 1024usize],
1496
pub extra: FAM,
1497
}
1498
impl kvm_xsave<[u32]> {}
1499
impl kvm_xsave<[u32; 0]> {}
1500
impl 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)]
1511
pub 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)]
1518
pub 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)]
1526
pub 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)]
1533
pub struct kvm_vmx_nested_state_data {
1534
pub vmcs12: [u8; 4096usize],
1535
pub shadow_vmcs12: [u8; 4096usize],
1536
}
1537
impl 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)]
1548
pub 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)]
1558
pub struct kvm_vmx_nested_state_hdr__bindgen_ty_1 {
1559
pub flags: u16,
1560
}
1561
#[repr(C)]
1562
#[derive(Debug, Copy, Clone)]
1563
pub struct kvm_svm_nested_state_data {
1564
pub vmcb12: [u8; 4096usize],
1565
}
1566
impl 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)]
1577
pub struct kvm_svm_nested_state_hdr {
1578
pub vmcb_pa: u64,
1579
}
1580
#[repr(C)]
1581
pub 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)]
1590
pub 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
}
1595
impl 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)]
1605
pub 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)]
1612
pub 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)]
1620
pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 {}
1621
impl kvm_nested_state__bindgen_ty_2__bindgen_ty_1<[kvm_vmx_nested_state_data]> {}
1622
impl kvm_nested_state__bindgen_ty_2__bindgen_ty_1<[kvm_vmx_nested_state_data; 0]> {}
1623
impl 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)]
1634
pub 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)]
1642
pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1 {}
1643
impl kvm_nested_state__bindgen_ty_2__bindgen_ty_2<[kvm_svm_nested_state_data]> {}
1644
impl kvm_nested_state__bindgen_ty_2__bindgen_ty_2<[kvm_svm_nested_state_data; 0]> {}
1645
impl 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
}
1654
impl 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
}
1663
impl 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)]
1674
pub 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
}
1682
impl kvm_pmu_event_filter<[u64]> {}
1683
impl kvm_pmu_event_filter<[u64; 0]> {}
1684
#[repr(C)]
1685
#[derive(Debug, Default, Copy, Clone)]
1686
pub 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)]
1697
pub 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)]
1708
pub 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)]
1715
pub 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)]
1726
pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 {
1727
pub gfn: u64,
1728
pub hva: u64,
1729
}
1730
impl 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)]
1741
pub 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)]
1749
pub 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)]
1756
pub 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)]
1763
pub 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
}
1767
impl 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
}
1776
impl 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
}
1785
impl 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
}
1794
impl 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)]
1805
pub 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)]
1812
pub 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)]
1823
pub 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)]
1833
pub 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
}
1838
impl 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
}
1847
impl 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
}
1856
pub const sev_cmd_id_KVM_SEV_INIT: sev_cmd_id = 0;
1857
pub const sev_cmd_id_KVM_SEV_ES_INIT: sev_cmd_id = 1;
1858
pub const sev_cmd_id_KVM_SEV_LAUNCH_START: sev_cmd_id = 2;
1859
pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_DATA: sev_cmd_id = 3;
1860
pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_VMSA: sev_cmd_id = 4;
1861
pub const sev_cmd_id_KVM_SEV_LAUNCH_SECRET: sev_cmd_id = 5;
1862
pub const sev_cmd_id_KVM_SEV_LAUNCH_MEASURE: sev_cmd_id = 6;
1863
pub const sev_cmd_id_KVM_SEV_LAUNCH_FINISH: sev_cmd_id = 7;
1864
pub const sev_cmd_id_KVM_SEV_SEND_START: sev_cmd_id = 8;
1865
pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_DATA: sev_cmd_id = 9;
1866
pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_VMSA: sev_cmd_id = 10;
1867
pub const sev_cmd_id_KVM_SEV_SEND_FINISH: sev_cmd_id = 11;
1868
pub const sev_cmd_id_KVM_SEV_RECEIVE_START: sev_cmd_id = 12;
1869
pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_DATA: sev_cmd_id = 13;
1870
pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_VMSA: sev_cmd_id = 14;
1871
pub const sev_cmd_id_KVM_SEV_RECEIVE_FINISH: sev_cmd_id = 15;
1872
pub const sev_cmd_id_KVM_SEV_GUEST_STATUS: sev_cmd_id = 16;
1873
pub const sev_cmd_id_KVM_SEV_DBG_DECRYPT: sev_cmd_id = 17;
1874
pub const sev_cmd_id_KVM_SEV_DBG_ENCRYPT: sev_cmd_id = 18;
1875
pub const sev_cmd_id_KVM_SEV_CERT_EXPORT: sev_cmd_id = 19;
1876
pub const sev_cmd_id_KVM_SEV_GET_ATTESTATION_REPORT: sev_cmd_id = 20;
1877
pub const sev_cmd_id_KVM_SEV_SEND_CANCEL: sev_cmd_id = 21;
1878
pub const sev_cmd_id_KVM_SEV_INIT2: sev_cmd_id = 22;
1879
pub const sev_cmd_id_KVM_SEV_SNP_LAUNCH_START: sev_cmd_id = 100;
1880
pub const sev_cmd_id_KVM_SEV_SNP_LAUNCH_UPDATE: sev_cmd_id = 101;
1881
pub const sev_cmd_id_KVM_SEV_SNP_LAUNCH_FINISH: sev_cmd_id = 102;
1882
pub const sev_cmd_id_KVM_SEV_NR_MAX: sev_cmd_id = 103;
1883
pub type sev_cmd_id = ::std::os::raw::c_uint;
1884
#[repr(C)]
1885
#[derive(Debug, Default, Copy, Clone)]
1886
pub 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)]
1895
pub 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)]
1904
pub 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)]
1916
pub 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)]
1923
pub 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)]
1936
pub 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)]
1943
pub 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)]
1950
pub 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)]
1958
pub 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)]
1966
pub 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)]
1984
pub 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)]
1997
pub 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)]
2009
pub 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)]
2022
pub 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)]
2031
pub 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)]
2043
pub 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)]
2056
pub 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)]
2064
pub 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)]
2073
pub 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)]
2086
pub 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)]
2092
pub union kvm_irq_level__bindgen_ty_1 {
2093
pub irq: u32,
2094
pub status: i32,
2095
}
2096
impl 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
}
2105
impl 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)]
2116
pub 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)]
2123
pub 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
}
2128
impl 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
}
2137
impl 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)]
2148
pub struct kvm_pit_config {
2149
pub flags: u32,
2150
pub pad: [u32; 15usize],
2151
}
2152
#[repr(C)]
2153
#[derive(Copy, Clone)]
2154
pub 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)]
2161
pub 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)]
2168
pub 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)]
2177
pub 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)]
2184
pub 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
}
2193
impl 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
}
2202
impl 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)]
2213
pub 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)]
2219
pub 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)]
2224
pub 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
}
2231
impl 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
}
2240
impl 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)]
2251
pub 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)]
2268
pub 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)]
2303
pub 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)]
2308
pub 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)]
2314
pub 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)]
2320
pub 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)]
2329
pub 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)]
2334
pub 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)]
2342
pub 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)]
2350
pub 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)]
2358
pub union kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {
2359
pub longmode: u32,
2360
pub flags: u64,
2361
}
2362
impl 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
}
2371
impl 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)]
2382
pub 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)]
2389
pub 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)]
2396
pub 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)]
2402
pub 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)]
2409
pub 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)]
2416
pub 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)]
2424
pub 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)]
2429
pub 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
}
2433
impl 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
}
2442
impl 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)]
2453
pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 {
2454
pub gprs: [u64; 32usize],
2455
}
2456
#[repr(C)]
2457
#[derive(Debug, Default, Copy, Clone)]
2458
pub 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)]
2465
pub 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)]
2475
pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 {
2476
pub epr: u32,
2477
}
2478
#[repr(C)]
2479
#[derive(Copy, Clone)]
2480
pub 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)]
2487
pub union kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {
2488
pub flags: u64,
2489
pub data: [u64; 16usize],
2490
}
2491
impl 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
}
2500
impl 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)]
2511
pub 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)]
2521
pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 {
2522
pub vector: u8,
2523
}
2524
#[repr(C)]
2525
#[derive(Debug, Default, Copy, Clone)]
2526
pub 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)]
2532
pub 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)]
2541
pub 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)]
2549
pub 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)]
2557
pub struct kvm_run__bindgen_ty_1__bindgen_ty_26 {
2558
pub flags: u32,
2559
}
2560
#[repr(C)]
2561
#[derive(Debug, Default, Copy, Clone)]
2562
pub struct kvm_run__bindgen_ty_1__bindgen_ty_27 {
2563
pub flags: u64,
2564
pub gpa: u64,
2565
pub size: u64,
2566
}
2567
impl 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)]
2578
pub union kvm_run__bindgen_ty_2 {
2579
pub regs: kvm_sync_regs,
2580
pub padding: [::std::os::raw::c_char; 2048usize],
2581
}
2582
impl 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
}
2591
impl 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)]
2602
pub 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)]
2609
pub union kvm_coalesced_mmio_zone__bindgen_ty_1 {
2610
pub pad: u32,
2611
pub pio: u32,
2612
}
2613
impl 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
}
2622
impl 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)]
2633
pub 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)]
2641
pub union kvm_coalesced_mmio__bindgen_ty_1 {
2642
pub pad: u32,
2643
pub pio: u32,
2644
}
2645
impl 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
}
2654
impl 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)]
2664
pub 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
}
2669
impl kvm_coalesced_mmio_ring<[kvm_coalesced_mmio]> {}
2670
impl kvm_coalesced_mmio_ring<[kvm_coalesced_mmio; 0]> {}
2671
impl 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)]
2682
pub 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)]
2692
pub struct kvm_interrupt {
2693
pub irq: u32,
2694
}
2695
#[repr(C)]
2696
#[derive(Copy, Clone)]
2697
pub 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)]
2704
pub union kvm_dirty_log__bindgen_ty_1 {
2705
pub dirty_bitmap: *mut ::std::os::raw::c_void,
2706
pub padding2: u64,
2707
}
2708
impl 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
}
2717
impl 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)]
2728
pub 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)]
2736
pub union kvm_clear_dirty_log__bindgen_ty_1 {
2737
pub dirty_bitmap: *mut ::std::os::raw::c_void,
2738
pub padding2: u64,
2739
}
2740
impl 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
}
2749
impl 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)]
2760
pub struct kvm_signal_mask<FAM: ?Sized = [u8; 0]> {
2761
pub len: u32,
2762
pub sigset: FAM,
2763
}
2764
impl kvm_signal_mask<[u8]> {}
2765
impl kvm_signal_mask<[u8; 0]> {}
2766
#[repr(C)]
2767
#[derive(Debug, Default, Copy, Clone)]
2768
pub 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)]
2775
pub struct kvm_vapic_addr {
2776
pub vapic_addr: u64,
2777
}
2778
#[repr(C)]
2779
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
2780
pub struct kvm_mp_state {
2781
pub mp_state: u32,
2782
}
2783
#[repr(C)]
2784
#[derive(Debug, Default, Copy, Clone)]
2785
pub struct kvm_guest_debug {
2786
pub control: u32,
2787
pub pad: u32,
2788
pub arch: kvm_guest_debug_arch,
2789
}
2790
pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_1 = 0;
2791
pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_1 = 1;
2792
pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_1 = 2;
2793
pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_1 = 3;
2794
pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_1 = 4;
2795
pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_1 = 5;
2796
pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
2797
#[repr(C)]
2798
#[derive(Debug, Copy, Clone)]
2799
pub 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
}
2807
impl 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)]
2818
pub struct kvm_enable_cap {
2819
pub cap: u32,
2820
pub flags: u32,
2821
pub args: [u64; 4usize],
2822
pub pad: [u8; 64usize],
2823
}
2824
impl 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)]
2835
pub struct kvm_irq_routing_irqchip {
2836
pub irqchip: u32,
2837
pub pin: u32,
2838
}
2839
#[repr(C)]
2840
#[derive(Copy, Clone, FromBytes, Immutable, KnownLayout)]
2841
pub 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)]
2849
pub union kvm_irq_routing_msi__bindgen_ty_1 {
2850
pub pad: u32,
2851
pub devid: u32,
2852
}
2853
impl 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
}
2862
impl 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)]
2873
pub 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)]
2882
pub 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)]
2888
pub 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)]
2895
pub 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)]
2904
pub 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
}
2912
impl 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
}
2921
impl 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)]
2932
pub struct kvm_irq_routing<FAM: ?Sized = [kvm_irq_routing_entry; 0]> {
2933
pub nr: u32,
2934
pub flags: u32,
2935
pub entries: FAM,
2936
}
2937
impl kvm_irq_routing<[kvm_irq_routing_entry]> {}
2938
impl kvm_irq_routing<[kvm_irq_routing_entry; 0]> {}
2939
impl 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)]
2950
pub 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)]
2959
pub 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)]
2969
pub 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)]
2977
pub struct kvm_dirty_tlb {
2978
pub bitmap: u64,
2979
pub num_dirty: u32,
2980
}
2981
#[repr(C)]
2982
#[derive(Debug, Default)]
2983
pub struct kvm_reg_list<FAM: ?Sized = [u64; 0]> {
2984
pub n: u64,
2985
pub reg: FAM,
2986
}
2987
impl kvm_reg_list<[u64]> {}
2988
impl kvm_reg_list<[u64; 0]> {}
2989
#[repr(C)]
2990
#[derive(Debug, Default, Copy, Clone)]
2991
pub struct kvm_one_reg {
2992
pub id: u64,
2993
pub addr: u64,
2994
}
2995
#[repr(C)]
2996
#[derive(Debug, Default, Copy, Clone)]
2997
pub 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)]
3007
pub struct kvm_arm_device_addr {
3008
pub id: u64,
3009
pub addr: u64,
3010
}
3011
#[repr(C)]
3012
#[derive(Debug, Default, Copy, Clone)]
3013
pub 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)]
3020
pub struct kvm_device_attr {
3021
pub flags: u32,
3022
pub group: u32,
3023
pub attr: u64,
3024
pub addr: u64,
3025
}
3026
pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1;
3027
pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2;
3028
pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3;
3029
pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4;
3030
pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5;
3031
pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6;
3032
pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7;
3033
pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8;
3034
pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9;
3035
pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10;
3036
pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11;
3037
pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12;
3038
pub type kvm_device_type = ::std::os::raw::c_uint;
3039
#[repr(C)]
3040
#[derive(Debug, Default, Copy, Clone)]
3041
pub struct kvm_vfio_spapr_tce {
3042
pub groupfd: i32,
3043
pub tablefd: i32,
3044
}
3045
#[repr(C)]
3046
#[derive(Debug, Default, Copy, Clone)]
3047
pub struct kvm_enc_region {
3048
pub addr: u64,
3049
pub size: u64,
3050
}
3051
#[repr(C)]
3052
#[derive(Debug, Default, Copy, Clone)]
3053
pub 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)]
3060
pub 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)]
3070
pub 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
}
3078
impl kvm_stats_desc<[::std::os::raw::c_char]> {}
3079
impl kvm_stats_desc<[::std::os::raw::c_char; 0]> {}
3080
#[repr(C)]
3081
#[derive(Debug, Default, Copy, Clone)]
3082
pub 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)]
3090
pub 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)]
3097
pub struct kvm_pre_fault_memory {
3098
pub gpa: u64,
3099
pub size: u64,
3100
pub flags: u64,
3101
pub padding: [u64; 5usize],
3102
}
3103
3104