xref: /aosp_15_r20/prebuilts/build-tools/sysroots/i686-unknown-linux-musl/include/linux/vfio.h (revision cda5da8d549138a6648c5ee6d7a49cf8f4a657be)
1*cda5da8dSAndroid Build Coastguard Worker /*
2*cda5da8dSAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*cda5da8dSAndroid Build Coastguard Worker  *
4*cda5da8dSAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*cda5da8dSAndroid Build Coastguard Worker  * for more information.
6*cda5da8dSAndroid Build Coastguard Worker  */
7*cda5da8dSAndroid Build Coastguard Worker #ifndef _UAPIVFIO_H
8*cda5da8dSAndroid Build Coastguard Worker #define _UAPIVFIO_H
9*cda5da8dSAndroid Build Coastguard Worker #include <linux/types.h>
10*cda5da8dSAndroid Build Coastguard Worker #include <linux/ioctl.h>
11*cda5da8dSAndroid Build Coastguard Worker #define VFIO_API_VERSION 0
12*cda5da8dSAndroid Build Coastguard Worker #define VFIO_TYPE1_IOMMU 1
13*cda5da8dSAndroid Build Coastguard Worker #define VFIO_SPAPR_TCE_IOMMU 2
14*cda5da8dSAndroid Build Coastguard Worker #define VFIO_TYPE1v2_IOMMU 3
15*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_CC_IOMMU 4
16*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH 5
17*cda5da8dSAndroid Build Coastguard Worker #define VFIO_TYPE1_NESTING_IOMMU 6
18*cda5da8dSAndroid Build Coastguard Worker #define VFIO_SPAPR_TCE_v2_IOMMU 7
19*cda5da8dSAndroid Build Coastguard Worker #define VFIO_NOIOMMU_IOMMU 8
20*cda5da8dSAndroid Build Coastguard Worker #define VFIO_UNMAP_ALL 9
21*cda5da8dSAndroid Build Coastguard Worker #define VFIO_UPDATE_VADDR 10
22*cda5da8dSAndroid Build Coastguard Worker #define VFIO_TYPE (';')
23*cda5da8dSAndroid Build Coastguard Worker #define VFIO_BASE 100
24*cda5da8dSAndroid Build Coastguard Worker struct vfio_info_cap_header {
25*cda5da8dSAndroid Build Coastguard Worker   __u16 id;
26*cda5da8dSAndroid Build Coastguard Worker   __u16 version;
27*cda5da8dSAndroid Build Coastguard Worker   __u32 next;
28*cda5da8dSAndroid Build Coastguard Worker };
29*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GET_API_VERSION _IO(VFIO_TYPE, VFIO_BASE + 0)
30*cda5da8dSAndroid Build Coastguard Worker #define VFIO_CHECK_EXTENSION _IO(VFIO_TYPE, VFIO_BASE + 1)
31*cda5da8dSAndroid Build Coastguard Worker #define VFIO_SET_IOMMU _IO(VFIO_TYPE, VFIO_BASE + 2)
32*cda5da8dSAndroid Build Coastguard Worker struct vfio_group_status {
33*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
34*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
35*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GROUP_FLAGS_VIABLE (1 << 0)
36*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GROUP_FLAGS_CONTAINER_SET (1 << 1)
37*cda5da8dSAndroid Build Coastguard Worker };
38*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GROUP_GET_STATUS _IO(VFIO_TYPE, VFIO_BASE + 3)
39*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GROUP_SET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 4)
40*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GROUP_UNSET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 5)
41*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GROUP_GET_DEVICE_FD _IO(VFIO_TYPE, VFIO_BASE + 6)
42*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_info {
43*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
44*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
45*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_RESET (1 << 0)
46*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_PCI (1 << 1)
47*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2)
48*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_AMBA (1 << 3)
49*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_CCW (1 << 4)
50*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_AP (1 << 5)
51*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_FSL_MC (1 << 6)
52*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_CAPS (1 << 7)
53*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FLAGS_CDX (1 << 8)
54*cda5da8dSAndroid Build Coastguard Worker   __u32 num_regions;
55*cda5da8dSAndroid Build Coastguard Worker   __u32 num_irqs;
56*cda5da8dSAndroid Build Coastguard Worker   __u32 cap_offset;
57*cda5da8dSAndroid Build Coastguard Worker   __u32 pad;
58*cda5da8dSAndroid Build Coastguard Worker };
59*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
60*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_API_PCI_STRING "vfio-pci"
61*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_API_PLATFORM_STRING "vfio-platform"
62*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_API_AMBA_STRING "vfio-amba"
63*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_API_CCW_STRING "vfio-ccw"
64*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_API_AP_STRING "vfio-ap"
65*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_INFO_CAP_ZPCI_BASE 1
66*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_INFO_CAP_ZPCI_GROUP 2
67*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_INFO_CAP_ZPCI_UTIL 3
68*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_INFO_CAP_ZPCI_PFIP 4
69*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_INFO_CAP_PCI_ATOMIC_COMP 5
70*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_info_cap_pci_atomic_comp {
71*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
72*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
73*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_ATOMIC_COMP32 (1 << 0)
74*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_ATOMIC_COMP64 (1 << 1)
75*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_ATOMIC_COMP128 (1 << 2)
76*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
77*cda5da8dSAndroid Build Coastguard Worker };
78*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_info {
79*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
80*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
81*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_FLAG_READ (1 << 0)
82*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_FLAG_WRITE (1 << 1)
83*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_FLAG_MMAP (1 << 2)
84*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_FLAG_CAPS (1 << 3)
85*cda5da8dSAndroid Build Coastguard Worker   __u32 index;
86*cda5da8dSAndroid Build Coastguard Worker   __u32 cap_offset;
87*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 size;
88*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 offset;
89*cda5da8dSAndroid Build Coastguard Worker };
90*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8)
91*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_CAP_SPARSE_MMAP 1
92*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_sparse_mmap_area {
93*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 offset;
94*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 size;
95*cda5da8dSAndroid Build Coastguard Worker };
96*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_info_cap_sparse_mmap {
97*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
98*cda5da8dSAndroid Build Coastguard Worker   __u32 nr_areas;
99*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
100*cda5da8dSAndroid Build Coastguard Worker   struct vfio_region_sparse_mmap_area areas[];
101*cda5da8dSAndroid Build Coastguard Worker };
102*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_CAP_TYPE 2
103*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_info_cap_type {
104*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
105*cda5da8dSAndroid Build Coastguard Worker   __u32 type;
106*cda5da8dSAndroid Build Coastguard Worker   __u32 subtype;
107*cda5da8dSAndroid Build Coastguard Worker };
108*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_TYPE_PCI_VENDOR_TYPE (1 << 31)
109*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
110*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_TYPE_GFX (1)
111*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_TYPE_CCW (2)
112*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
113*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
114*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
115*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
116*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM (1)
117*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD (1)
118*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_GFX_EDID (1)
119*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_gfx_edid {
120*cda5da8dSAndroid Build Coastguard Worker   __u32 edid_offset;
121*cda5da8dSAndroid Build Coastguard Worker   __u32 edid_max_size;
122*cda5da8dSAndroid Build Coastguard Worker   __u32 edid_size;
123*cda5da8dSAndroid Build Coastguard Worker   __u32 max_xres;
124*cda5da8dSAndroid Build Coastguard Worker   __u32 max_yres;
125*cda5da8dSAndroid Build Coastguard Worker   __u32 link_state;
126*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GFX_LINK_STATE_UP 1
127*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GFX_LINK_STATE_DOWN 2
128*cda5da8dSAndroid Build Coastguard Worker };
129*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
130*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
131*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
132*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
133*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_migration_info {
134*cda5da8dSAndroid Build Coastguard Worker   __u32 device_state;
135*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_V1_STOP (0)
136*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
137*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
138*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
139*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
140*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
141*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
142*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
143*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
144*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 pending_bytes;
145*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 data_offset;
146*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 data_size;
147*cda5da8dSAndroid Build Coastguard Worker };
148*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_CAP_MSIX_MAPPABLE 3
149*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_CAP_NVLINK2_SSATGT 4
150*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_info_cap_nvlink2_ssatgt {
151*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
152*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 tgt;
153*cda5da8dSAndroid Build Coastguard Worker };
154*cda5da8dSAndroid Build Coastguard Worker #define VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD 5
155*cda5da8dSAndroid Build Coastguard Worker struct vfio_region_info_cap_nvlink2_lnkspd {
156*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
157*cda5da8dSAndroid Build Coastguard Worker   __u32 link_speed;
158*cda5da8dSAndroid Build Coastguard Worker   __u32 __pad;
159*cda5da8dSAndroid Build Coastguard Worker };
160*cda5da8dSAndroid Build Coastguard Worker struct vfio_irq_info {
161*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
162*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
163*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_INFO_EVENTFD (1 << 0)
164*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_INFO_MASKABLE (1 << 1)
165*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_INFO_AUTOMASKED (1 << 2)
166*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_INFO_NORESIZE (1 << 3)
167*cda5da8dSAndroid Build Coastguard Worker   __u32 index;
168*cda5da8dSAndroid Build Coastguard Worker   __u32 count;
169*cda5da8dSAndroid Build Coastguard Worker };
170*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9)
171*cda5da8dSAndroid Build Coastguard Worker struct vfio_irq_set {
172*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
173*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
174*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_DATA_NONE (1 << 0)
175*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_DATA_BOOL (1 << 1)
176*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_DATA_EVENTFD (1 << 2)
177*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_ACTION_MASK (1 << 3)
178*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_ACTION_UNMASK (1 << 4)
179*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_ACTION_TRIGGER (1 << 5)
180*cda5da8dSAndroid Build Coastguard Worker   __u32 index;
181*cda5da8dSAndroid Build Coastguard Worker   __u32 start;
182*cda5da8dSAndroid Build Coastguard Worker   __u32 count;
183*cda5da8dSAndroid Build Coastguard Worker   __u8 data[];
184*cda5da8dSAndroid Build Coastguard Worker };
185*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_SET_IRQS _IO(VFIO_TYPE, VFIO_BASE + 10)
186*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_DATA_TYPE_MASK (VFIO_IRQ_SET_DATA_NONE | VFIO_IRQ_SET_DATA_BOOL | VFIO_IRQ_SET_DATA_EVENTFD)
187*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IRQ_SET_ACTION_TYPE_MASK (VFIO_IRQ_SET_ACTION_MASK | VFIO_IRQ_SET_ACTION_UNMASK | VFIO_IRQ_SET_ACTION_TRIGGER)
188*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_RESET _IO(VFIO_TYPE, VFIO_BASE + 11)
189*cda5da8dSAndroid Build Coastguard Worker enum {
190*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_BAR0_REGION_INDEX,
191*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_BAR1_REGION_INDEX,
192*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_BAR2_REGION_INDEX,
193*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_BAR3_REGION_INDEX,
194*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_BAR4_REGION_INDEX,
195*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_BAR5_REGION_INDEX,
196*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_ROM_REGION_INDEX,
197*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_CONFIG_REGION_INDEX,
198*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_VGA_REGION_INDEX,
199*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_NUM_REGIONS = 9
200*cda5da8dSAndroid Build Coastguard Worker };
201*cda5da8dSAndroid Build Coastguard Worker enum {
202*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_INTX_IRQ_INDEX,
203*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_MSI_IRQ_INDEX,
204*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_MSIX_IRQ_INDEX,
205*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_ERR_IRQ_INDEX,
206*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_REQ_IRQ_INDEX,
207*cda5da8dSAndroid Build Coastguard Worker   VFIO_PCI_NUM_IRQS
208*cda5da8dSAndroid Build Coastguard Worker };
209*cda5da8dSAndroid Build Coastguard Worker enum {
210*cda5da8dSAndroid Build Coastguard Worker   VFIO_CCW_CONFIG_REGION_INDEX,
211*cda5da8dSAndroid Build Coastguard Worker   VFIO_CCW_NUM_REGIONS
212*cda5da8dSAndroid Build Coastguard Worker };
213*cda5da8dSAndroid Build Coastguard Worker enum {
214*cda5da8dSAndroid Build Coastguard Worker   VFIO_CCW_IO_IRQ_INDEX,
215*cda5da8dSAndroid Build Coastguard Worker   VFIO_CCW_CRW_IRQ_INDEX,
216*cda5da8dSAndroid Build Coastguard Worker   VFIO_CCW_REQ_IRQ_INDEX,
217*cda5da8dSAndroid Build Coastguard Worker   VFIO_CCW_NUM_IRQS
218*cda5da8dSAndroid Build Coastguard Worker };
219*cda5da8dSAndroid Build Coastguard Worker enum {
220*cda5da8dSAndroid Build Coastguard Worker   VFIO_AP_REQ_IRQ_INDEX,
221*cda5da8dSAndroid Build Coastguard Worker   VFIO_AP_NUM_IRQS
222*cda5da8dSAndroid Build Coastguard Worker };
223*cda5da8dSAndroid Build Coastguard Worker struct vfio_pci_dependent_device {
224*cda5da8dSAndroid Build Coastguard Worker   union {
225*cda5da8dSAndroid Build Coastguard Worker     __u32 group_id;
226*cda5da8dSAndroid Build Coastguard Worker     __u32 devid;
227*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_DEVID_OWNED 0
228*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_DEVID_NOT_OWNED - 1
229*cda5da8dSAndroid Build Coastguard Worker   };
230*cda5da8dSAndroid Build Coastguard Worker   __u16 segment;
231*cda5da8dSAndroid Build Coastguard Worker   __u8 bus;
232*cda5da8dSAndroid Build Coastguard Worker   __u8 devfn;
233*cda5da8dSAndroid Build Coastguard Worker };
234*cda5da8dSAndroid Build Coastguard Worker struct vfio_pci_hot_reset_info {
235*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
236*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
237*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_HOT_RESET_FLAG_DEV_ID (1 << 0)
238*cda5da8dSAndroid Build Coastguard Worker #define VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED (1 << 1)
239*cda5da8dSAndroid Build Coastguard Worker   __u32 count;
240*cda5da8dSAndroid Build Coastguard Worker   struct vfio_pci_dependent_device devices[];
241*cda5da8dSAndroid Build Coastguard Worker };
242*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GET_PCI_HOT_RESET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
243*cda5da8dSAndroid Build Coastguard Worker struct vfio_pci_hot_reset {
244*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
245*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
246*cda5da8dSAndroid Build Coastguard Worker   __u32 count;
247*cda5da8dSAndroid Build Coastguard Worker   __s32 group_fds[];
248*cda5da8dSAndroid Build Coastguard Worker };
249*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13)
250*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_gfx_plane_info {
251*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
252*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
253*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GFX_PLANE_TYPE_PROBE (1 << 0)
254*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GFX_PLANE_TYPE_DMABUF (1 << 1)
255*cda5da8dSAndroid Build Coastguard Worker #define VFIO_GFX_PLANE_TYPE_REGION (1 << 2)
256*cda5da8dSAndroid Build Coastguard Worker   __u32 drm_plane_type;
257*cda5da8dSAndroid Build Coastguard Worker   __u32 drm_format;
258*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 drm_format_mod;
259*cda5da8dSAndroid Build Coastguard Worker   __u32 width;
260*cda5da8dSAndroid Build Coastguard Worker   __u32 height;
261*cda5da8dSAndroid Build Coastguard Worker   __u32 stride;
262*cda5da8dSAndroid Build Coastguard Worker   __u32 size;
263*cda5da8dSAndroid Build Coastguard Worker   __u32 x_pos;
264*cda5da8dSAndroid Build Coastguard Worker   __u32 y_pos;
265*cda5da8dSAndroid Build Coastguard Worker   __u32 x_hot;
266*cda5da8dSAndroid Build Coastguard Worker   __u32 y_hot;
267*cda5da8dSAndroid Build Coastguard Worker   union {
268*cda5da8dSAndroid Build Coastguard Worker     __u32 region_index;
269*cda5da8dSAndroid Build Coastguard Worker     __u32 dmabuf_id;
270*cda5da8dSAndroid Build Coastguard Worker   };
271*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
272*cda5da8dSAndroid Build Coastguard Worker };
273*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_QUERY_GFX_PLANE _IO(VFIO_TYPE, VFIO_BASE + 14)
274*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_GET_GFX_DMABUF _IO(VFIO_TYPE, VFIO_BASE + 15)
275*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_ioeventfd {
276*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
277*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
278*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_IOEVENTFD_8 (1 << 0)
279*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_IOEVENTFD_16 (1 << 1)
280*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_IOEVENTFD_32 (1 << 2)
281*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_IOEVENTFD_64 (1 << 3)
282*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_IOEVENTFD_SIZE_MASK (0xf)
283*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 offset;
284*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 data;
285*cda5da8dSAndroid Build Coastguard Worker   __s32 fd;
286*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
287*cda5da8dSAndroid Build Coastguard Worker };
288*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_IOEVENTFD _IO(VFIO_TYPE, VFIO_BASE + 16)
289*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature {
290*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
291*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
292*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_MASK (0xffff)
293*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_GET (1 << 16)
294*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_SET (1 << 17)
295*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_PROBE (1 << 18)
296*cda5da8dSAndroid Build Coastguard Worker   __u8 data[];
297*cda5da8dSAndroid Build Coastguard Worker };
298*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
299*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_bind_iommufd {
300*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
301*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
302*cda5da8dSAndroid Build Coastguard Worker   __s32 iommufd;
303*cda5da8dSAndroid Build Coastguard Worker   __u32 out_devid;
304*cda5da8dSAndroid Build Coastguard Worker };
305*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18)
306*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_attach_iommufd_pt {
307*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
308*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
309*cda5da8dSAndroid Build Coastguard Worker   __u32 pt_id;
310*cda5da8dSAndroid Build Coastguard Worker };
311*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_ATTACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 19)
312*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_detach_iommufd_pt {
313*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
314*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
315*cda5da8dSAndroid Build Coastguard Worker };
316*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_DETACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 20)
317*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
318*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_migration {
319*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 flags;
320*cda5da8dSAndroid Build Coastguard Worker #define VFIO_MIGRATION_STOP_COPY (1 << 0)
321*cda5da8dSAndroid Build Coastguard Worker #define VFIO_MIGRATION_P2P (1 << 1)
322*cda5da8dSAndroid Build Coastguard Worker #define VFIO_MIGRATION_PRE_COPY (1 << 2)
323*cda5da8dSAndroid Build Coastguard Worker };
324*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_MIGRATION 1
325*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_mig_state {
326*cda5da8dSAndroid Build Coastguard Worker   __u32 device_state;
327*cda5da8dSAndroid Build Coastguard Worker   __s32 data_fd;
328*cda5da8dSAndroid Build Coastguard Worker };
329*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
330*cda5da8dSAndroid Build Coastguard Worker enum vfio_device_mig_state {
331*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_ERROR = 0,
332*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_STOP = 1,
333*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_RUNNING = 2,
334*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_STOP_COPY = 3,
335*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_RESUMING = 4,
336*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_RUNNING_P2P = 5,
337*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_PRE_COPY = 6,
338*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_PRE_COPY_P2P = 7,
339*cda5da8dSAndroid Build Coastguard Worker   VFIO_DEVICE_STATE_NR,
340*cda5da8dSAndroid Build Coastguard Worker };
341*cda5da8dSAndroid Build Coastguard Worker struct vfio_precopy_info {
342*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
343*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
344*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 initial_bytes;
345*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 dirty_bytes;
346*cda5da8dSAndroid Build Coastguard Worker };
347*cda5da8dSAndroid Build Coastguard Worker #define VFIO_MIG_GET_PRECOPY_INFO _IO(VFIO_TYPE, VFIO_BASE + 21)
348*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
349*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_low_power_entry_with_wakeup {
350*cda5da8dSAndroid Build Coastguard Worker   __s32 wakeup_eventfd;
351*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
352*cda5da8dSAndroid Build Coastguard Worker };
353*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
354*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
355*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_dma_logging_control {
356*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 page_size;
357*cda5da8dSAndroid Build Coastguard Worker   __u32 num_ranges;
358*cda5da8dSAndroid Build Coastguard Worker   __u32 __reserved;
359*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 ranges;
360*cda5da8dSAndroid Build Coastguard Worker };
361*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_dma_logging_range {
362*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 iova;
363*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 length;
364*cda5da8dSAndroid Build Coastguard Worker };
365*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
366*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
367*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_dma_logging_report {
368*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 iova;
369*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 length;
370*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 page_size;
371*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 bitmap;
372*cda5da8dSAndroid Build Coastguard Worker };
373*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
374*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_mig_data_size {
375*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 stop_copy_length;
376*cda5da8dSAndroid Build Coastguard Worker };
377*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_MIG_DATA_SIZE 9
378*cda5da8dSAndroid Build Coastguard Worker struct vfio_device_feature_bus_master {
379*cda5da8dSAndroid Build Coastguard Worker   __u32 op;
380*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_CLEAR_MASTER 0
381*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_SET_MASTER 1
382*cda5da8dSAndroid Build Coastguard Worker };
383*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DEVICE_FEATURE_BUS_MASTER 10
384*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_info {
385*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
386*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
387*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_INFO_PGSIZES (1 << 0)
388*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_INFO_CAPS (1 << 1)
389*cda5da8dSAndroid Build Coastguard Worker   __aligned_u64 iova_pgsizes;
390*cda5da8dSAndroid Build Coastguard Worker   __u32 cap_offset;
391*cda5da8dSAndroid Build Coastguard Worker   __u32 pad;
392*cda5da8dSAndroid Build Coastguard Worker };
393*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE 1
394*cda5da8dSAndroid Build Coastguard Worker struct vfio_iova_range {
395*cda5da8dSAndroid Build Coastguard Worker   __u64 start;
396*cda5da8dSAndroid Build Coastguard Worker   __u64 end;
397*cda5da8dSAndroid Build Coastguard Worker };
398*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_info_cap_iova_range {
399*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
400*cda5da8dSAndroid Build Coastguard Worker   __u32 nr_iovas;
401*cda5da8dSAndroid Build Coastguard Worker   __u32 reserved;
402*cda5da8dSAndroid Build Coastguard Worker   struct vfio_iova_range iova_ranges[];
403*cda5da8dSAndroid Build Coastguard Worker };
404*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION 2
405*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_info_cap_migration {
406*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
407*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
408*cda5da8dSAndroid Build Coastguard Worker   __u64 pgsize_bitmap;
409*cda5da8dSAndroid Build Coastguard Worker   __u64 max_dirty_bitmap_size;
410*cda5da8dSAndroid Build Coastguard Worker };
411*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL 3
412*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_info_dma_avail {
413*cda5da8dSAndroid Build Coastguard Worker   struct vfio_info_cap_header header;
414*cda5da8dSAndroid Build Coastguard Worker   __u32 avail;
415*cda5da8dSAndroid Build Coastguard Worker };
416*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
417*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_dma_map {
418*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
419*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
420*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_MAP_FLAG_READ (1 << 0)
421*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_MAP_FLAG_WRITE (1 << 1)
422*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_MAP_FLAG_VADDR (1 << 2)
423*cda5da8dSAndroid Build Coastguard Worker   __u64 vaddr;
424*cda5da8dSAndroid Build Coastguard Worker   __u64 iova;
425*cda5da8dSAndroid Build Coastguard Worker   __u64 size;
426*cda5da8dSAndroid Build Coastguard Worker };
427*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_MAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 13)
428*cda5da8dSAndroid Build Coastguard Worker struct vfio_bitmap {
429*cda5da8dSAndroid Build Coastguard Worker   __u64 pgsize;
430*cda5da8dSAndroid Build Coastguard Worker   __u64 size;
431*cda5da8dSAndroid Build Coastguard Worker   __u64  * data;
432*cda5da8dSAndroid Build Coastguard Worker };
433*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_dma_unmap {
434*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
435*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
436*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP (1 << 0)
437*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_UNMAP_FLAG_ALL (1 << 1)
438*cda5da8dSAndroid Build Coastguard Worker #define VFIO_DMA_UNMAP_FLAG_VADDR (1 << 2)
439*cda5da8dSAndroid Build Coastguard Worker   __u64 iova;
440*cda5da8dSAndroid Build Coastguard Worker   __u64 size;
441*cda5da8dSAndroid Build Coastguard Worker   __u8 data[];
442*cda5da8dSAndroid Build Coastguard Worker };
443*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_UNMAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 14)
444*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_ENABLE _IO(VFIO_TYPE, VFIO_BASE + 15)
445*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_DISABLE _IO(VFIO_TYPE, VFIO_BASE + 16)
446*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_dirty_bitmap {
447*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
448*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
449*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_DIRTY_PAGES_FLAG_START (1 << 0)
450*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP (1 << 1)
451*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP (1 << 2)
452*cda5da8dSAndroid Build Coastguard Worker   __u8 data[];
453*cda5da8dSAndroid Build Coastguard Worker };
454*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_type1_dirty_bitmap_get {
455*cda5da8dSAndroid Build Coastguard Worker   __u64 iova;
456*cda5da8dSAndroid Build Coastguard Worker   __u64 size;
457*cda5da8dSAndroid Build Coastguard Worker   struct vfio_bitmap bitmap;
458*cda5da8dSAndroid Build Coastguard Worker };
459*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_DIRTY_PAGES _IO(VFIO_TYPE, VFIO_BASE + 17)
460*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_spapr_tce_ddw_info {
461*cda5da8dSAndroid Build Coastguard Worker   __u64 pgsizes;
462*cda5da8dSAndroid Build Coastguard Worker   __u32 max_dynamic_windows_supported;
463*cda5da8dSAndroid Build Coastguard Worker   __u32 levels;
464*cda5da8dSAndroid Build Coastguard Worker };
465*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_spapr_tce_info {
466*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
467*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
468*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_SPAPR_INFO_DDW (1 << 0)
469*cda5da8dSAndroid Build Coastguard Worker   __u32 dma32_window_start;
470*cda5da8dSAndroid Build Coastguard Worker   __u32 dma32_window_size;
471*cda5da8dSAndroid Build Coastguard Worker   struct vfio_iommu_spapr_tce_ddw_info ddw;
472*cda5da8dSAndroid Build Coastguard Worker };
473*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
474*cda5da8dSAndroid Build Coastguard Worker struct vfio_eeh_pe_err {
475*cda5da8dSAndroid Build Coastguard Worker   __u32 type;
476*cda5da8dSAndroid Build Coastguard Worker   __u32 func;
477*cda5da8dSAndroid Build Coastguard Worker   __u64 addr;
478*cda5da8dSAndroid Build Coastguard Worker   __u64 mask;
479*cda5da8dSAndroid Build Coastguard Worker };
480*cda5da8dSAndroid Build Coastguard Worker struct vfio_eeh_pe_op {
481*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
482*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
483*cda5da8dSAndroid Build Coastguard Worker   __u32 op;
484*cda5da8dSAndroid Build Coastguard Worker   union {
485*cda5da8dSAndroid Build Coastguard Worker     struct vfio_eeh_pe_err err;
486*cda5da8dSAndroid Build Coastguard Worker   };
487*cda5da8dSAndroid Build Coastguard Worker };
488*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_DISABLE 0
489*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_ENABLE 1
490*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_UNFREEZE_IO 2
491*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_UNFREEZE_DMA 3
492*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_GET_STATE 4
493*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_STATE_NORMAL 0
494*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_STATE_RESET 1
495*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_STATE_STOPPED 2
496*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_STATE_STOPPED_DMA 4
497*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_STATE_UNAVAIL 5
498*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_RESET_DEACTIVATE 5
499*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_RESET_HOT 6
500*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_RESET_FUNDAMENTAL 7
501*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_CONFIGURE 8
502*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_INJECT_ERR 9
503*cda5da8dSAndroid Build Coastguard Worker #define VFIO_EEH_PE_OP _IO(VFIO_TYPE, VFIO_BASE + 21)
504*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_spapr_register_memory {
505*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
506*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
507*cda5da8dSAndroid Build Coastguard Worker   __u64 vaddr;
508*cda5da8dSAndroid Build Coastguard Worker   __u64 size;
509*cda5da8dSAndroid Build Coastguard Worker };
510*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_SPAPR_REGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 17)
511*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 18)
512*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_spapr_tce_create {
513*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
514*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
515*cda5da8dSAndroid Build Coastguard Worker   __u32 page_shift;
516*cda5da8dSAndroid Build Coastguard Worker   __u32 __resv1;
517*cda5da8dSAndroid Build Coastguard Worker   __u64 window_size;
518*cda5da8dSAndroid Build Coastguard Worker   __u32 levels;
519*cda5da8dSAndroid Build Coastguard Worker   __u32 __resv2;
520*cda5da8dSAndroid Build Coastguard Worker   __u64 start_addr;
521*cda5da8dSAndroid Build Coastguard Worker };
522*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_SPAPR_TCE_CREATE _IO(VFIO_TYPE, VFIO_BASE + 19)
523*cda5da8dSAndroid Build Coastguard Worker struct vfio_iommu_spapr_tce_remove {
524*cda5da8dSAndroid Build Coastguard Worker   __u32 argsz;
525*cda5da8dSAndroid Build Coastguard Worker   __u32 flags;
526*cda5da8dSAndroid Build Coastguard Worker   __u64 start_addr;
527*cda5da8dSAndroid Build Coastguard Worker };
528*cda5da8dSAndroid Build Coastguard Worker #define VFIO_IOMMU_SPAPR_TCE_REMOVE _IO(VFIO_TYPE, VFIO_BASE + 20)
529*cda5da8dSAndroid Build Coastguard Worker #endif
530