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