xref: /aosp_15_r20/external/crosvm/vfio_sys/src/lib.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2019 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker //! Linux VFIO (Virtual Function I/O) bindings.
6*bb4ee6a4SAndroid Build Coastguard Worker //!
7*bb4ee6a4SAndroid Build Coastguard Worker //! <https://www.kernel.org/doc/html/latest/driver-api/vfio.html>
8*bb4ee6a4SAndroid Build Coastguard Worker 
9*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_upper_case_globals)]
10*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_camel_case_types)]
11*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_snake_case)]
12*bb4ee6a4SAndroid Build Coastguard Worker 
13*bb4ee6a4SAndroid Build Coastguard Worker use base::ioctl_io_nr;
14*bb4ee6a4SAndroid Build Coastguard Worker 
15*bb4ee6a4SAndroid Build Coastguard Worker pub mod plat;
16*bb4ee6a4SAndroid Build Coastguard Worker pub mod vfio;
17*bb4ee6a4SAndroid Build Coastguard Worker 
18*bb4ee6a4SAndroid Build Coastguard Worker use crate::plat::ACPI_EVT_FORWARD_BASE;
19*bb4ee6a4SAndroid Build Coastguard Worker use crate::plat::PLAT_IRQ_FORWARD_BASE;
20*bb4ee6a4SAndroid Build Coastguard Worker use crate::plat::PLAT_IRQ_FORWARD_TYPE;
21*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_device_feature;
22*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_device_info;
23*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_device_low_power_entry_with_wakeup;
24*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_group_status;
25*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_info_cap_header;
26*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_dma_map;
27*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_dma_unmap;
28*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_info;
29*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_info_cap_iova_range;
30*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_info_cap_iova_range_header;
31*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iova_range;
32*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_irq_info;
33*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_irq_set;
34*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info;
35*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info_cap_sparse_mmap;
36*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info_cap_type;
37*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info_with_cap;
38*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_sparse_mmap_area;
39*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_TYPE1v2_IOMMU;
40*bb4ee6a4SAndroid Build Coastguard Worker use crate::vfio::VFIO_BASE;
41*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY;
42*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP;
43*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_LOW_POWER_EXIT;
44*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_SET;
45*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FLAGS_PCI;
46*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FLAGS_PLATFORM;
47*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DMA_MAP_FLAG_READ;
48*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DMA_MAP_FLAG_WRITE;
49*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_GROUP_FLAGS_VIABLE;
50*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IOMMU_INFO_CAPS;
51*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IOMMU_INFO_PGSIZES;
52*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE;
53*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_INFO_AUTOMASKED;
54*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_ACTION_MASK;
55*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_ACTION_TRIGGER;
56*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_ACTION_UNMASK;
57*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_DATA_EVENTFD;
58*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_DATA_NONE;
59*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_BAR0_REGION_INDEX;
60*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_CONFIG_REGION_INDEX;
61*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_INTX_IRQ_INDEX;
62*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_MSIX_IRQ_INDEX;
63*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_MSI_IRQ_INDEX;
64*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_REQ_IRQ_INDEX;
65*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_ROM_REGION_INDEX;
66*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PKVM_PVIOMMU;
67*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_CAP_MSIX_MAPPABLE;
68*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_CAP_SPARSE_MMAP;
69*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_CAP_TYPE;
70*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_FLAG_CAPS;
71*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_FLAG_MMAP;
72*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_FLAG_WRITE;
73*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION;
74*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_TYPE_PCI_VENDOR_TYPE;
75*bb4ee6a4SAndroid Build Coastguard Worker use crate::vfio::VFIO_TYPE;
76*bb4ee6a4SAndroid Build Coastguard Worker 
77*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GET_API_VERSION, VFIO_TYPE, VFIO_BASE);
78*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_CHECK_EXTENSION, VFIO_TYPE, VFIO_BASE + 1);
79*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_SET_IOMMU, VFIO_TYPE, VFIO_BASE + 2);
80*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_GET_STATUS, VFIO_TYPE, VFIO_BASE + 3);
81*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_SET_CONTAINER, VFIO_TYPE, VFIO_BASE + 4);
82*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_UNSET_CONTAINER, VFIO_TYPE, VFIO_BASE + 5);
83*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_GET_DEVICE_FD, VFIO_TYPE, VFIO_BASE + 6);
84*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_INFO, VFIO_TYPE, VFIO_BASE + 7);
85*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_REGION_INFO, VFIO_TYPE, VFIO_BASE + 8);
86*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_IRQ_INFO, VFIO_TYPE, VFIO_BASE + 9);
87*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_SET_IRQS, VFIO_TYPE, VFIO_BASE + 10);
88*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_RESET, VFIO_TYPE, VFIO_BASE + 11);
89*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(
90*bb4ee6a4SAndroid Build Coastguard Worker     VFIO_DEVICE_GET_PCI_HOT_RESET_INFO,
91*bb4ee6a4SAndroid Build Coastguard Worker     VFIO_TYPE,
92*bb4ee6a4SAndroid Build Coastguard Worker     VFIO_BASE + 12
93*bb4ee6a4SAndroid Build Coastguard Worker );
94*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_PCI_HOT_RESET, VFIO_TYPE, VFIO_BASE + 13);
95*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_QUERY_GFX_PLANE, VFIO_TYPE, VFIO_BASE + 14);
96*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_GFX_DMABUF, VFIO_TYPE, VFIO_BASE + 15);
97*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_IOEVENTFD, VFIO_TYPE, VFIO_BASE + 16);
98*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_GET_INFO, VFIO_TYPE, VFIO_BASE + 12);
99*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_MAP_DMA, VFIO_TYPE, VFIO_BASE + 13);
100*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_UNMAP_DMA, VFIO_TYPE, VFIO_BASE + 14);
101*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_ENABLE, VFIO_TYPE, VFIO_BASE + 15);
102*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_DISABLE, VFIO_TYPE, VFIO_BASE + 16);
103*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_FEATURE, VFIO_TYPE, VFIO_BASE + 17);
104*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_ACPI_DSM, VFIO_TYPE, VFIO_BASE + 18);
105*bb4ee6a4SAndroid Build Coastguard Worker 
106*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(
107*bb4ee6a4SAndroid Build Coastguard Worker     PLAT_IRQ_FORWARD_SET,
108*bb4ee6a4SAndroid Build Coastguard Worker     PLAT_IRQ_FORWARD_TYPE,
109*bb4ee6a4SAndroid Build Coastguard Worker     PLAT_IRQ_FORWARD_BASE
110*bb4ee6a4SAndroid Build Coastguard Worker );
111*bb4ee6a4SAndroid Build Coastguard Worker 
112*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(
113*bb4ee6a4SAndroid Build Coastguard Worker     ACPI_EVT_FORWARD_SET,
114*bb4ee6a4SAndroid Build Coastguard Worker     PLAT_IRQ_FORWARD_TYPE,
115*bb4ee6a4SAndroid Build Coastguard Worker     ACPI_EVT_FORWARD_BASE
116*bb4ee6a4SAndroid Build Coastguard Worker );
117