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