xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/virtio_iommu.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 _UAPI_LINUX_VIRTIO_IOMMU_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_LINUX_VIRTIO_IOMMU_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_INPUT_RANGE 0
11*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_DOMAIN_RANGE 1
12*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_MAP_UNMAP 2
13*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_BYPASS 3
14*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_PROBE 4
15*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_MMIO 5
16*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_F_BYPASS_CONFIG 6
17*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_range_64 {
18*8d67ca89SAndroid Build Coastguard Worker   __le64 start;
19*8d67ca89SAndroid Build Coastguard Worker   __le64 end;
20*8d67ca89SAndroid Build Coastguard Worker };
21*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_range_32 {
22*8d67ca89SAndroid Build Coastguard Worker   __le32 start;
23*8d67ca89SAndroid Build Coastguard Worker   __le32 end;
24*8d67ca89SAndroid Build Coastguard Worker };
25*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_config {
26*8d67ca89SAndroid Build Coastguard Worker   __le64 page_size_mask;
27*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_range_64 input_range;
28*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_range_32 domain_range;
29*8d67ca89SAndroid Build Coastguard Worker   __le32 probe_size;
30*8d67ca89SAndroid Build Coastguard Worker   __u8 bypass;
31*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
32*8d67ca89SAndroid Build Coastguard Worker };
33*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_T_ATTACH 0x01
34*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_T_DETACH 0x02
35*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_T_MAP 0x03
36*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_T_UNMAP 0x04
37*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_T_PROBE 0x05
38*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_OK 0x00
39*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_IOERR 0x01
40*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_UNSUPP 0x02
41*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_DEVERR 0x03
42*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_INVAL 0x04
43*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_RANGE 0x05
44*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_NOENT 0x06
45*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_FAULT 0x07
46*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_S_NOMEM 0x08
47*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_head {
48*8d67ca89SAndroid Build Coastguard Worker   __u8 type;
49*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
50*8d67ca89SAndroid Build Coastguard Worker };
51*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_tail {
52*8d67ca89SAndroid Build Coastguard Worker   __u8 status;
53*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
54*8d67ca89SAndroid Build Coastguard Worker };
55*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_ATTACH_F_BYPASS (1 << 0)
56*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_attach {
57*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_head head;
58*8d67ca89SAndroid Build Coastguard Worker   __le32 domain;
59*8d67ca89SAndroid Build Coastguard Worker   __le32 endpoint;
60*8d67ca89SAndroid Build Coastguard Worker   __le32 flags;
61*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[4];
62*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_tail tail;
63*8d67ca89SAndroid Build Coastguard Worker };
64*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_detach {
65*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_head head;
66*8d67ca89SAndroid Build Coastguard Worker   __le32 domain;
67*8d67ca89SAndroid Build Coastguard Worker   __le32 endpoint;
68*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[8];
69*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_tail tail;
70*8d67ca89SAndroid Build Coastguard Worker };
71*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_MAP_F_READ (1 << 0)
72*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_MAP_F_WRITE (1 << 1)
73*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_MAP_F_MMIO (1 << 2)
74*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_MAP_F_MASK (VIRTIO_IOMMU_MAP_F_READ | VIRTIO_IOMMU_MAP_F_WRITE | VIRTIO_IOMMU_MAP_F_MMIO)
75*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_map {
76*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_head head;
77*8d67ca89SAndroid Build Coastguard Worker   __le32 domain;
78*8d67ca89SAndroid Build Coastguard Worker   __le64 virt_start;
79*8d67ca89SAndroid Build Coastguard Worker   __le64 virt_end;
80*8d67ca89SAndroid Build Coastguard Worker   __le64 phys_start;
81*8d67ca89SAndroid Build Coastguard Worker   __le32 flags;
82*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_tail tail;
83*8d67ca89SAndroid Build Coastguard Worker };
84*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_unmap {
85*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_head head;
86*8d67ca89SAndroid Build Coastguard Worker   __le32 domain;
87*8d67ca89SAndroid Build Coastguard Worker   __le64 virt_start;
88*8d67ca89SAndroid Build Coastguard Worker   __le64 virt_end;
89*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[4];
90*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_tail tail;
91*8d67ca89SAndroid Build Coastguard Worker };
92*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_PROBE_T_NONE 0
93*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_PROBE_T_RESV_MEM 1
94*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_PROBE_T_MASK 0xfff
95*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_probe_property {
96*8d67ca89SAndroid Build Coastguard Worker   __le16 type;
97*8d67ca89SAndroid Build Coastguard Worker   __le16 length;
98*8d67ca89SAndroid Build Coastguard Worker };
99*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_RESV_MEM_T_RESERVED 0
100*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_RESV_MEM_T_MSI 1
101*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_probe_resv_mem {
102*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_probe_property head;
103*8d67ca89SAndroid Build Coastguard Worker   __u8 subtype;
104*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
105*8d67ca89SAndroid Build Coastguard Worker   __le64 start;
106*8d67ca89SAndroid Build Coastguard Worker   __le64 end;
107*8d67ca89SAndroid Build Coastguard Worker };
108*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_req_probe {
109*8d67ca89SAndroid Build Coastguard Worker   struct virtio_iommu_req_head head;
110*8d67ca89SAndroid Build Coastguard Worker   __le32 endpoint;
111*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[64];
112*8d67ca89SAndroid Build Coastguard Worker   __u8 properties[];
113*8d67ca89SAndroid Build Coastguard Worker };
114*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_R_UNKNOWN 0
115*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_R_DOMAIN 1
116*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_R_MAPPING 2
117*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_F_READ (1 << 0)
118*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_F_WRITE (1 << 1)
119*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_F_EXEC (1 << 2)
120*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_IOMMU_FAULT_F_ADDRESS (1 << 8)
121*8d67ca89SAndroid Build Coastguard Worker struct virtio_iommu_fault {
122*8d67ca89SAndroid Build Coastguard Worker   __u8 reason;
123*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
124*8d67ca89SAndroid Build Coastguard Worker   __le32 flags;
125*8d67ca89SAndroid Build Coastguard Worker   __le32 endpoint;
126*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved2[4];
127*8d67ca89SAndroid Build Coastguard Worker   __le64 address;
128*8d67ca89SAndroid Build Coastguard Worker };
129*8d67ca89SAndroid Build Coastguard Worker #endif
130