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