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