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