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 vfio_sys/bindgen.sh 12 use zerocopy::AsBytes; 13 use zerocopy::FromBytes; 14 use zerocopy::FromZeroes; 15 16 // TODO(b/292077398): Upstream or remove ACPI notification forwarding support 17 pub const VFIO_PCI_ACPI_NTFY_IRQ_INDEX: std::os::raw::c_uint = 5; 18 19 #[repr(C)] 20 #[derive(Debug, Default)] 21 pub struct vfio_acpi_dsm { 22 pub argsz: u32, 23 pub padding: u32, 24 pub args: __IncompleteArrayField<u8>, 25 } 26 27 #[repr(C)] 28 #[derive(Debug, Default, Copy, Clone)] 29 pub struct vfio_acpi_notify_eventfd { 30 pub notify_eventfd: i32, 31 pub reserved: u32, 32 } 33 34 #[repr(C)] 35 #[derive(Debug, Default)] 36 pub struct vfio_region_info_with_cap { 37 pub region_info: vfio_region_info, 38 pub cap_info: __IncompleteArrayField<u8>, 39 } 40 41 // vfio_iommu_type1_info_cap_iova_range minus the incomplete iova_ranges 42 // array, so that Copy/AsBytes/FromBytes can be implemented. 43 #[repr(C)] 44 #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)] 45 pub struct vfio_iommu_type1_info_cap_iova_range_header { 46 pub header: vfio_info_cap_header, 47 pub nr_iovas: u32, 48 pub reserved: u32, 49 } 50 51 // Experimental Android uABI 52 pub const VFIO_PKVM_PVIOMMU: u32 = 11; 53 54 #[repr(C)] 55 #[derive(Default)] 56 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]); 57 impl<T> __IncompleteArrayField<T> { 58 #[inline] new() -> Self59 pub const fn new() -> Self { 60 __IncompleteArrayField(::std::marker::PhantomData, []) 61 } 62 #[inline] as_ptr(&self) -> *const T63 pub fn as_ptr(&self) -> *const T { 64 self as *const _ as *const T 65 } 66 #[inline] as_mut_ptr(&mut self) -> *mut T67 pub fn as_mut_ptr(&mut self) -> *mut T { 68 self as *mut _ as *mut T 69 } 70 #[inline] as_slice(&self, len: usize) -> &[T]71 pub unsafe fn as_slice(&self, len: usize) -> &[T] { 72 ::std::slice::from_raw_parts(self.as_ptr(), len) 73 } 74 #[inline] as_mut_slice(&mut self, len: usize) -> &mut [T]75 pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { 76 ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) 77 } 78 } 79 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> { fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result80 fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { 81 fmt.write_str("__IncompleteArrayField") 82 } 83 } 84 pub const VFIO_API_VERSION: u32 = 0; 85 pub const VFIO_TYPE1_IOMMU: u32 = 1; 86 pub const VFIO_SPAPR_TCE_IOMMU: u32 = 2; 87 pub const VFIO_TYPE1v2_IOMMU: u32 = 3; 88 pub const VFIO_DMA_CC_IOMMU: u32 = 4; 89 pub const VFIO_EEH: u32 = 5; 90 pub const VFIO_TYPE1_NESTING_IOMMU: u32 = 6; 91 pub const VFIO_SPAPR_TCE_v2_IOMMU: u32 = 7; 92 pub const VFIO_NOIOMMU_IOMMU: u32 = 8; 93 pub const VFIO_UNMAP_ALL: u32 = 9; 94 pub const VFIO_UPDATE_VADDR: u32 = 10; 95 pub const VFIO_TYPE: u32 = 59; 96 pub const VFIO_BASE: u32 = 100; 97 pub const VFIO_GROUP_FLAGS_VIABLE: u32 = 1; 98 pub const VFIO_GROUP_FLAGS_CONTAINER_SET: u32 = 2; 99 pub const VFIO_DEVICE_FLAGS_RESET: u32 = 1; 100 pub const VFIO_DEVICE_FLAGS_PCI: u32 = 2; 101 pub const VFIO_DEVICE_FLAGS_PLATFORM: u32 = 4; 102 pub const VFIO_DEVICE_FLAGS_AMBA: u32 = 8; 103 pub const VFIO_DEVICE_FLAGS_CCW: u32 = 16; 104 pub const VFIO_DEVICE_FLAGS_AP: u32 = 32; 105 pub const VFIO_DEVICE_FLAGS_FSL_MC: u32 = 64; 106 pub const VFIO_DEVICE_FLAGS_CAPS: u32 = 128; 107 pub const VFIO_DEVICE_FLAGS_CDX: u32 = 256; 108 pub const VFIO_DEVICE_INFO_CAP_ZPCI_BASE: u32 = 1; 109 pub const VFIO_DEVICE_INFO_CAP_ZPCI_GROUP: u32 = 2; 110 pub const VFIO_DEVICE_INFO_CAP_ZPCI_UTIL: u32 = 3; 111 pub const VFIO_DEVICE_INFO_CAP_ZPCI_PFIP: u32 = 4; 112 pub const VFIO_DEVICE_INFO_CAP_PCI_ATOMIC_COMP: u32 = 5; 113 pub const VFIO_PCI_ATOMIC_COMP32: u32 = 1; 114 pub const VFIO_PCI_ATOMIC_COMP64: u32 = 2; 115 pub const VFIO_PCI_ATOMIC_COMP128: u32 = 4; 116 pub const VFIO_REGION_INFO_FLAG_READ: u32 = 1; 117 pub const VFIO_REGION_INFO_FLAG_WRITE: u32 = 2; 118 pub const VFIO_REGION_INFO_FLAG_MMAP: u32 = 4; 119 pub const VFIO_REGION_INFO_FLAG_CAPS: u32 = 8; 120 pub const VFIO_REGION_INFO_CAP_SPARSE_MMAP: u32 = 1; 121 pub const VFIO_REGION_INFO_CAP_TYPE: u32 = 2; 122 pub const VFIO_REGION_TYPE_PCI_VENDOR_TYPE: u32 = 2147483648; 123 pub const VFIO_REGION_TYPE_PCI_VENDOR_MASK: u32 = 65535; 124 pub const VFIO_REGION_TYPE_GFX: u32 = 1; 125 pub const VFIO_REGION_TYPE_CCW: u32 = 2; 126 pub const VFIO_REGION_TYPE_MIGRATION_DEPRECATED: u32 = 3; 127 pub const VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION: u32 = 1; 128 pub const VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG: u32 = 2; 129 pub const VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG: u32 = 3; 130 pub const VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM: u32 = 1; 131 pub const VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD: u32 = 1; 132 pub const VFIO_REGION_SUBTYPE_GFX_EDID: u32 = 1; 133 pub const VFIO_DEVICE_GFX_LINK_STATE_UP: u32 = 1; 134 pub const VFIO_DEVICE_GFX_LINK_STATE_DOWN: u32 = 2; 135 pub const VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD: u32 = 1; 136 pub const VFIO_REGION_SUBTYPE_CCW_SCHIB: u32 = 2; 137 pub const VFIO_REGION_SUBTYPE_CCW_CRW: u32 = 3; 138 pub const VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED: u32 = 1; 139 pub const VFIO_DEVICE_STATE_V1_STOP: u32 = 0; 140 pub const VFIO_DEVICE_STATE_V1_RUNNING: u32 = 1; 141 pub const VFIO_DEVICE_STATE_V1_SAVING: u32 = 2; 142 pub const VFIO_DEVICE_STATE_V1_RESUMING: u32 = 4; 143 pub const VFIO_DEVICE_STATE_MASK: u32 = 7; 144 pub const VFIO_REGION_INFO_CAP_MSIX_MAPPABLE: u32 = 3; 145 pub const VFIO_REGION_INFO_CAP_NVLINK2_SSATGT: u32 = 4; 146 pub const VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD: u32 = 5; 147 pub const VFIO_IRQ_INFO_EVENTFD: u32 = 1; 148 pub const VFIO_IRQ_INFO_MASKABLE: u32 = 2; 149 pub const VFIO_IRQ_INFO_AUTOMASKED: u32 = 4; 150 pub const VFIO_IRQ_INFO_NORESIZE: u32 = 8; 151 pub const VFIO_IRQ_SET_DATA_NONE: u32 = 1; 152 pub const VFIO_IRQ_SET_DATA_BOOL: u32 = 2; 153 pub const VFIO_IRQ_SET_DATA_EVENTFD: u32 = 4; 154 pub const VFIO_IRQ_SET_ACTION_MASK: u32 = 8; 155 pub const VFIO_IRQ_SET_ACTION_UNMASK: u32 = 16; 156 pub const VFIO_IRQ_SET_ACTION_TRIGGER: u32 = 32; 157 pub const VFIO_IRQ_SET_DATA_TYPE_MASK: u32 = 7; 158 pub const VFIO_IRQ_SET_ACTION_TYPE_MASK: u32 = 56; 159 pub const VFIO_PCI_DEVID_OWNED: u32 = 0; 160 pub const VFIO_PCI_DEVID_NOT_OWNED: i32 = -1; 161 pub const VFIO_PCI_HOT_RESET_FLAG_DEV_ID: u32 = 1; 162 pub const VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED: u32 = 2; 163 pub const VFIO_GFX_PLANE_TYPE_PROBE: u32 = 1; 164 pub const VFIO_GFX_PLANE_TYPE_DMABUF: u32 = 2; 165 pub const VFIO_GFX_PLANE_TYPE_REGION: u32 = 4; 166 pub const VFIO_DEVICE_IOEVENTFD_8: u32 = 1; 167 pub const VFIO_DEVICE_IOEVENTFD_16: u32 = 2; 168 pub const VFIO_DEVICE_IOEVENTFD_32: u32 = 4; 169 pub const VFIO_DEVICE_IOEVENTFD_64: u32 = 8; 170 pub const VFIO_DEVICE_IOEVENTFD_SIZE_MASK: u32 = 15; 171 pub const VFIO_DEVICE_FEATURE_MASK: u32 = 65535; 172 pub const VFIO_DEVICE_FEATURE_GET: u32 = 65536; 173 pub const VFIO_DEVICE_FEATURE_SET: u32 = 131072; 174 pub const VFIO_DEVICE_FEATURE_PROBE: u32 = 262144; 175 pub const VFIO_DEVICE_FEATURE_PCI_VF_TOKEN: u32 = 0; 176 pub const VFIO_MIGRATION_STOP_COPY: u32 = 1; 177 pub const VFIO_MIGRATION_P2P: u32 = 2; 178 pub const VFIO_MIGRATION_PRE_COPY: u32 = 4; 179 pub const VFIO_DEVICE_FEATURE_MIGRATION: u32 = 1; 180 pub const VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE: u32 = 2; 181 pub const VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY: u32 = 3; 182 pub const VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP: u32 = 4; 183 pub const VFIO_DEVICE_FEATURE_LOW_POWER_EXIT: u32 = 5; 184 pub const VFIO_DEVICE_FEATURE_DMA_LOGGING_START: u32 = 6; 185 pub const VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP: u32 = 7; 186 pub const VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT: u32 = 8; 187 pub const VFIO_DEVICE_FEATURE_MIG_DATA_SIZE: u32 = 9; 188 pub const VFIO_IOMMU_INFO_PGSIZES: u32 = 1; 189 pub const VFIO_IOMMU_INFO_CAPS: u32 = 2; 190 pub const VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE: u32 = 1; 191 pub const VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION: u32 = 2; 192 pub const VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL: u32 = 3; 193 pub const VFIO_DMA_MAP_FLAG_READ: u32 = 1; 194 pub const VFIO_DMA_MAP_FLAG_WRITE: u32 = 2; 195 pub const VFIO_DMA_MAP_FLAG_VADDR: u32 = 4; 196 pub const VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP: u32 = 1; 197 pub const VFIO_DMA_UNMAP_FLAG_ALL: u32 = 2; 198 pub const VFIO_DMA_UNMAP_FLAG_VADDR: u32 = 4; 199 pub const VFIO_IOMMU_DIRTY_PAGES_FLAG_START: u32 = 1; 200 pub const VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP: u32 = 2; 201 pub const VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP: u32 = 4; 202 pub const VFIO_IOMMU_SPAPR_INFO_DDW: u32 = 1; 203 pub const VFIO_EEH_PE_DISABLE: u32 = 0; 204 pub const VFIO_EEH_PE_ENABLE: u32 = 1; 205 pub const VFIO_EEH_PE_UNFREEZE_IO: u32 = 2; 206 pub const VFIO_EEH_PE_UNFREEZE_DMA: u32 = 3; 207 pub const VFIO_EEH_PE_GET_STATE: u32 = 4; 208 pub const VFIO_EEH_PE_STATE_NORMAL: u32 = 0; 209 pub const VFIO_EEH_PE_STATE_RESET: u32 = 1; 210 pub const VFIO_EEH_PE_STATE_STOPPED: u32 = 2; 211 pub const VFIO_EEH_PE_STATE_STOPPED_DMA: u32 = 4; 212 pub const VFIO_EEH_PE_STATE_UNAVAIL: u32 = 5; 213 pub const VFIO_EEH_PE_RESET_DEACTIVATE: u32 = 5; 214 pub const VFIO_EEH_PE_RESET_HOT: u32 = 6; 215 pub const VFIO_EEH_PE_RESET_FUNDAMENTAL: u32 = 7; 216 pub const VFIO_EEH_PE_CONFIGURE: u32 = 8; 217 pub const VFIO_EEH_PE_INJECT_ERR: u32 = 9; 218 #[repr(C)] 219 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)] 220 pub struct vfio_info_cap_header { 221 pub id: u16, 222 pub version: u16, 223 pub next: u32, 224 } 225 #[repr(C)] 226 #[derive(Debug, Default, Copy, Clone)] 227 pub struct vfio_group_status { 228 pub argsz: u32, 229 pub flags: u32, 230 } 231 #[repr(C)] 232 #[derive(Debug, Default, Copy, Clone)] 233 pub struct vfio_device_info { 234 pub argsz: u32, 235 pub flags: u32, 236 pub num_regions: u32, 237 pub num_irqs: u32, 238 pub cap_offset: u32, 239 pub pad: u32, 240 } 241 #[repr(C)] 242 #[derive(Debug, Default, Copy, Clone)] 243 pub struct vfio_device_info_cap_pci_atomic_comp { 244 pub header: vfio_info_cap_header, 245 pub flags: u32, 246 pub reserved: u32, 247 } 248 #[repr(C)] 249 #[derive(Debug, Default, Copy, Clone)] 250 pub struct vfio_region_info { 251 pub argsz: u32, 252 pub flags: u32, 253 pub index: u32, 254 pub cap_offset: u32, 255 pub size: u64, 256 pub offset: u64, 257 } 258 #[repr(C)] 259 #[derive(Debug, Default, Copy, Clone)] 260 pub struct vfio_region_sparse_mmap_area { 261 pub offset: u64, 262 pub size: u64, 263 } 264 #[repr(C)] 265 #[derive(Debug, Default)] 266 pub struct vfio_region_info_cap_sparse_mmap { 267 pub header: vfio_info_cap_header, 268 pub nr_areas: u32, 269 pub reserved: u32, 270 pub areas: __IncompleteArrayField<vfio_region_sparse_mmap_area>, 271 } 272 #[repr(C)] 273 #[derive(Debug, Default, Copy, Clone)] 274 pub struct vfio_region_info_cap_type { 275 pub header: vfio_info_cap_header, 276 pub type_: u32, 277 pub subtype: u32, 278 } 279 #[repr(C)] 280 #[derive(Debug, Default, Copy, Clone)] 281 pub struct vfio_region_gfx_edid { 282 pub edid_offset: u32, 283 pub edid_max_size: u32, 284 pub edid_size: u32, 285 pub max_xres: u32, 286 pub max_yres: u32, 287 pub link_state: u32, 288 } 289 #[repr(C)] 290 #[derive(Debug, Default, Copy, Clone)] 291 pub struct vfio_device_migration_info { 292 pub device_state: u32, 293 pub reserved: u32, 294 pub pending_bytes: u64, 295 pub data_offset: u64, 296 pub data_size: u64, 297 } 298 #[repr(C)] 299 #[derive(Debug, Default, Copy, Clone)] 300 pub struct vfio_region_info_cap_nvlink2_ssatgt { 301 pub header: vfio_info_cap_header, 302 pub tgt: u64, 303 } 304 #[repr(C)] 305 #[derive(Debug, Default, Copy, Clone)] 306 pub struct vfio_region_info_cap_nvlink2_lnkspd { 307 pub header: vfio_info_cap_header, 308 pub link_speed: u32, 309 pub __pad: u32, 310 } 311 #[repr(C)] 312 #[derive(Debug, Default, Copy, Clone)] 313 pub struct vfio_irq_info { 314 pub argsz: u32, 315 pub flags: u32, 316 pub index: u32, 317 pub count: u32, 318 } 319 #[repr(C)] 320 #[derive(Debug, Default)] 321 pub struct vfio_irq_set { 322 pub argsz: u32, 323 pub flags: u32, 324 pub index: u32, 325 pub start: u32, 326 pub count: u32, 327 pub data: __IncompleteArrayField<u8>, 328 } 329 pub const VFIO_PCI_BAR0_REGION_INDEX: _bindgen_ty_1 = 0; 330 pub const VFIO_PCI_BAR1_REGION_INDEX: _bindgen_ty_1 = 1; 331 pub const VFIO_PCI_BAR2_REGION_INDEX: _bindgen_ty_1 = 2; 332 pub const VFIO_PCI_BAR3_REGION_INDEX: _bindgen_ty_1 = 3; 333 pub const VFIO_PCI_BAR4_REGION_INDEX: _bindgen_ty_1 = 4; 334 pub const VFIO_PCI_BAR5_REGION_INDEX: _bindgen_ty_1 = 5; 335 pub const VFIO_PCI_ROM_REGION_INDEX: _bindgen_ty_1 = 6; 336 pub const VFIO_PCI_CONFIG_REGION_INDEX: _bindgen_ty_1 = 7; 337 pub const VFIO_PCI_VGA_REGION_INDEX: _bindgen_ty_1 = 8; 338 pub const VFIO_PCI_NUM_REGIONS: _bindgen_ty_1 = 9; 339 pub type _bindgen_ty_1 = ::std::os::raw::c_uint; 340 pub const VFIO_PCI_INTX_IRQ_INDEX: _bindgen_ty_2 = 0; 341 pub const VFIO_PCI_MSI_IRQ_INDEX: _bindgen_ty_2 = 1; 342 pub const VFIO_PCI_MSIX_IRQ_INDEX: _bindgen_ty_2 = 2; 343 pub const VFIO_PCI_ERR_IRQ_INDEX: _bindgen_ty_2 = 3; 344 pub const VFIO_PCI_REQ_IRQ_INDEX: _bindgen_ty_2 = 4; 345 pub const VFIO_PCI_NUM_IRQS: _bindgen_ty_2 = 5; 346 pub type _bindgen_ty_2 = ::std::os::raw::c_uint; 347 pub const VFIO_CCW_CONFIG_REGION_INDEX: _bindgen_ty_3 = 0; 348 pub const VFIO_CCW_NUM_REGIONS: _bindgen_ty_3 = 1; 349 pub type _bindgen_ty_3 = ::std::os::raw::c_uint; 350 pub const VFIO_CCW_IO_IRQ_INDEX: _bindgen_ty_4 = 0; 351 pub const VFIO_CCW_CRW_IRQ_INDEX: _bindgen_ty_4 = 1; 352 pub const VFIO_CCW_REQ_IRQ_INDEX: _bindgen_ty_4 = 2; 353 pub const VFIO_CCW_NUM_IRQS: _bindgen_ty_4 = 3; 354 pub type _bindgen_ty_4 = ::std::os::raw::c_uint; 355 pub const VFIO_AP_REQ_IRQ_INDEX: _bindgen_ty_5 = 0; 356 pub const VFIO_AP_NUM_IRQS: _bindgen_ty_5 = 1; 357 pub type _bindgen_ty_5 = ::std::os::raw::c_uint; 358 #[repr(C)] 359 #[derive(Copy, Clone)] 360 pub struct vfio_pci_dependent_device { 361 pub __bindgen_anon_1: vfio_pci_dependent_device__bindgen_ty_1, 362 pub segment: u16, 363 pub bus: u8, 364 pub devfn: u8, 365 } 366 #[repr(C)] 367 #[derive(Copy, Clone)] 368 pub union vfio_pci_dependent_device__bindgen_ty_1 { 369 pub group_id: u32, 370 pub devid: u32, 371 } 372 impl Default for vfio_pci_dependent_device__bindgen_ty_1 { default() -> Self373 fn default() -> Self { 374 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 375 unsafe { 376 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 377 s.assume_init() 378 } 379 } 380 } 381 impl Default for vfio_pci_dependent_device { default() -> Self382 fn default() -> Self { 383 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 384 unsafe { 385 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 386 s.assume_init() 387 } 388 } 389 } 390 #[repr(C)] 391 pub struct vfio_pci_hot_reset_info { 392 pub argsz: u32, 393 pub flags: u32, 394 pub count: u32, 395 pub devices: __IncompleteArrayField<vfio_pci_dependent_device>, 396 } 397 impl Default for vfio_pci_hot_reset_info { default() -> Self398 fn default() -> Self { 399 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 400 unsafe { 401 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 402 s.assume_init() 403 } 404 } 405 } 406 #[repr(C)] 407 #[derive(Debug, Default)] 408 pub struct vfio_pci_hot_reset { 409 pub argsz: u32, 410 pub flags: u32, 411 pub count: u32, 412 pub group_fds: __IncompleteArrayField<i32>, 413 } 414 #[repr(C)] 415 #[derive(Copy, Clone)] 416 pub struct vfio_device_gfx_plane_info { 417 pub argsz: u32, 418 pub flags: u32, 419 pub drm_plane_type: u32, 420 pub drm_format: u32, 421 pub drm_format_mod: u64, 422 pub width: u32, 423 pub height: u32, 424 pub stride: u32, 425 pub size: u32, 426 pub x_pos: u32, 427 pub y_pos: u32, 428 pub x_hot: u32, 429 pub y_hot: u32, 430 pub __bindgen_anon_1: vfio_device_gfx_plane_info__bindgen_ty_1, 431 } 432 #[repr(C)] 433 #[derive(Copy, Clone)] 434 pub union vfio_device_gfx_plane_info__bindgen_ty_1 { 435 pub region_index: u32, 436 pub dmabuf_id: u32, 437 } 438 impl Default for vfio_device_gfx_plane_info__bindgen_ty_1 { default() -> Self439 fn default() -> Self { 440 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 441 unsafe { 442 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 443 s.assume_init() 444 } 445 } 446 } 447 impl Default for vfio_device_gfx_plane_info { default() -> Self448 fn default() -> Self { 449 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 450 unsafe { 451 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 452 s.assume_init() 453 } 454 } 455 } 456 #[repr(C)] 457 #[derive(Debug, Default, Copy, Clone)] 458 pub struct vfio_device_ioeventfd { 459 pub argsz: u32, 460 pub flags: u32, 461 pub offset: u64, 462 pub data: u64, 463 pub fd: i32, 464 } 465 #[repr(C)] 466 #[derive(Debug, Default)] 467 pub struct vfio_device_feature { 468 pub argsz: u32, 469 pub flags: u32, 470 pub data: __IncompleteArrayField<u8>, 471 } 472 #[repr(C)] 473 #[derive(Debug, Default, Copy, Clone)] 474 pub struct vfio_device_bind_iommufd { 475 pub argsz: u32, 476 pub flags: u32, 477 pub iommufd: i32, 478 pub out_devid: u32, 479 } 480 #[repr(C)] 481 #[derive(Debug, Default, Copy, Clone)] 482 pub struct vfio_device_attach_iommufd_pt { 483 pub argsz: u32, 484 pub flags: u32, 485 pub pt_id: u32, 486 } 487 #[repr(C)] 488 #[derive(Debug, Default, Copy, Clone)] 489 pub struct vfio_device_detach_iommufd_pt { 490 pub argsz: u32, 491 pub flags: u32, 492 } 493 #[repr(C)] 494 #[derive(Debug, Default, Copy, Clone)] 495 pub struct vfio_device_feature_migration { 496 pub flags: u64, 497 } 498 #[repr(C)] 499 #[derive(Debug, Default, Copy, Clone)] 500 pub struct vfio_device_feature_mig_state { 501 pub device_state: u32, 502 pub data_fd: i32, 503 } 504 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_ERROR: vfio_device_mig_state = 0; 505 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_STOP: vfio_device_mig_state = 1; 506 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_RUNNING: vfio_device_mig_state = 2; 507 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_STOP_COPY: vfio_device_mig_state = 3; 508 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_RESUMING: vfio_device_mig_state = 4; 509 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_RUNNING_P2P: vfio_device_mig_state = 5; 510 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_PRE_COPY: vfio_device_mig_state = 6; 511 pub const vfio_device_mig_state_VFIO_DEVICE_STATE_PRE_COPY_P2P: vfio_device_mig_state = 7; 512 pub type vfio_device_mig_state = ::std::os::raw::c_uint; 513 #[repr(C)] 514 #[derive(Debug, Default, Copy, Clone)] 515 pub struct vfio_precopy_info { 516 pub argsz: u32, 517 pub flags: u32, 518 pub initial_bytes: u64, 519 pub dirty_bytes: u64, 520 } 521 #[repr(C)] 522 #[derive(Debug, Default, Copy, Clone)] 523 pub struct vfio_device_low_power_entry_with_wakeup { 524 pub wakeup_eventfd: i32, 525 pub reserved: u32, 526 } 527 #[repr(C)] 528 #[derive(Debug, Default, Copy, Clone)] 529 pub struct vfio_device_feature_dma_logging_control { 530 pub page_size: u64, 531 pub num_ranges: u32, 532 pub __reserved: u32, 533 pub ranges: u64, 534 } 535 #[repr(C)] 536 #[derive(Debug, Default, Copy, Clone)] 537 pub struct vfio_device_feature_dma_logging_range { 538 pub iova: u64, 539 pub length: u64, 540 } 541 #[repr(C)] 542 #[derive(Debug, Default, Copy, Clone)] 543 pub struct vfio_device_feature_dma_logging_report { 544 pub iova: u64, 545 pub length: u64, 546 pub page_size: u64, 547 pub bitmap: u64, 548 } 549 #[repr(C)] 550 #[derive(Debug, Default, Copy, Clone)] 551 pub struct vfio_device_feature_mig_data_size { 552 pub stop_copy_length: u64, 553 } 554 #[repr(C)] 555 #[derive(Debug, Default, Copy, Clone)] 556 pub struct vfio_iommu_type1_info { 557 pub argsz: u32, 558 pub flags: u32, 559 pub iova_pgsizes: u64, 560 pub cap_offset: u32, 561 pub pad: u32, 562 } 563 #[repr(C)] 564 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)] 565 pub struct vfio_iova_range { 566 pub start: u64, 567 pub end: u64, 568 } 569 #[repr(C)] 570 #[derive(Debug, Default)] 571 pub struct vfio_iommu_type1_info_cap_iova_range { 572 pub header: vfio_info_cap_header, 573 pub nr_iovas: u32, 574 pub reserved: u32, 575 pub iova_ranges: __IncompleteArrayField<vfio_iova_range>, 576 } 577 #[repr(C)] 578 #[derive(Debug, Default, Copy, Clone)] 579 pub struct vfio_iommu_type1_info_cap_migration { 580 pub header: vfio_info_cap_header, 581 pub flags: u32, 582 pub pgsize_bitmap: u64, 583 pub max_dirty_bitmap_size: u64, 584 } 585 #[repr(C)] 586 #[derive(Debug, Default, Copy, Clone)] 587 pub struct vfio_iommu_type1_info_dma_avail { 588 pub header: vfio_info_cap_header, 589 pub avail: u32, 590 } 591 #[repr(C)] 592 #[derive(Debug, Default, Copy, Clone)] 593 pub struct vfio_iommu_type1_dma_map { 594 pub argsz: u32, 595 pub flags: u32, 596 pub vaddr: u64, 597 pub iova: u64, 598 pub size: u64, 599 } 600 #[repr(C)] 601 #[derive(Debug, Copy, Clone)] 602 pub struct vfio_bitmap { 603 pub pgsize: u64, 604 pub size: u64, 605 pub data: *mut u64, 606 } 607 impl Default for vfio_bitmap { default() -> Self608 fn default() -> Self { 609 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 610 unsafe { 611 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 612 s.assume_init() 613 } 614 } 615 } 616 #[repr(C)] 617 #[derive(Debug, Default)] 618 pub struct vfio_iommu_type1_dma_unmap { 619 pub argsz: u32, 620 pub flags: u32, 621 pub iova: u64, 622 pub size: u64, 623 pub data: __IncompleteArrayField<u8>, 624 } 625 #[repr(C)] 626 #[derive(Debug, Default)] 627 pub struct vfio_iommu_type1_dirty_bitmap { 628 pub argsz: u32, 629 pub flags: u32, 630 pub data: __IncompleteArrayField<u8>, 631 } 632 #[repr(C)] 633 #[derive(Debug, Copy, Clone)] 634 pub struct vfio_iommu_type1_dirty_bitmap_get { 635 pub iova: u64, 636 pub size: u64, 637 pub bitmap: vfio_bitmap, 638 } 639 impl Default for vfio_iommu_type1_dirty_bitmap_get { default() -> Self640 fn default() -> Self { 641 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 642 unsafe { 643 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 644 s.assume_init() 645 } 646 } 647 } 648 #[repr(C)] 649 #[derive(Debug, Default, Copy, Clone)] 650 pub struct vfio_iommu_spapr_tce_ddw_info { 651 pub pgsizes: u64, 652 pub max_dynamic_windows_supported: u32, 653 pub levels: u32, 654 } 655 #[repr(C)] 656 #[derive(Debug, Default, Copy, Clone)] 657 pub struct vfio_iommu_spapr_tce_info { 658 pub argsz: u32, 659 pub flags: u32, 660 pub dma32_window_start: u32, 661 pub dma32_window_size: u32, 662 pub ddw: vfio_iommu_spapr_tce_ddw_info, 663 } 664 #[repr(C)] 665 #[derive(Debug, Default, Copy, Clone)] 666 pub struct vfio_eeh_pe_err { 667 pub type_: u32, 668 pub func: u32, 669 pub addr: u64, 670 pub mask: u64, 671 } 672 #[repr(C)] 673 #[derive(Copy, Clone)] 674 pub struct vfio_eeh_pe_op { 675 pub argsz: u32, 676 pub flags: u32, 677 pub op: u32, 678 pub __bindgen_anon_1: vfio_eeh_pe_op__bindgen_ty_1, 679 } 680 #[repr(C)] 681 #[derive(Copy, Clone)] 682 pub union vfio_eeh_pe_op__bindgen_ty_1 { 683 pub err: vfio_eeh_pe_err, 684 } 685 impl Default for vfio_eeh_pe_op__bindgen_ty_1 { default() -> Self686 fn default() -> Self { 687 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 688 unsafe { 689 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 690 s.assume_init() 691 } 692 } 693 } 694 impl Default for vfio_eeh_pe_op { default() -> Self695 fn default() -> Self { 696 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 697 unsafe { 698 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 699 s.assume_init() 700 } 701 } 702 } 703 #[repr(C)] 704 #[derive(Debug, Default, Copy, Clone)] 705 pub struct vfio_iommu_spapr_register_memory { 706 pub argsz: u32, 707 pub flags: u32, 708 pub vaddr: u64, 709 pub size: u64, 710 } 711 #[repr(C)] 712 #[derive(Debug, Default, Copy, Clone)] 713 pub struct vfio_iommu_spapr_tce_create { 714 pub argsz: u32, 715 pub flags: u32, 716 pub page_shift: u32, 717 pub __resv1: u32, 718 pub window_size: u64, 719 pub levels: u32, 720 pub __resv2: u32, 721 pub start_addr: u64, 722 } 723 #[repr(C)] 724 #[derive(Debug, Default, Copy, Clone)] 725 pub struct vfio_iommu_spapr_tce_remove { 726 pub argsz: u32, 727 pub flags: u32, 728 pub start_addr: u64, 729 } 730