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