1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef _CXLFLASH_IOCTL_H 20 #define _CXLFLASH_IOCTL_H 21 #include <linux/types.h> 22 #define CXLFLASH_WWID_LEN 16 23 #define DK_CXLFLASH_VERSION_0 0 24 struct dk_cxlflash_hdr { 25 __u16 version; 26 __u16 rsvd[3]; 27 __u64 flags; 28 __u64 return_flags; 29 }; 30 #define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL 31 #define DK_CXLFLASH_APP_CLOSE_ADAP_FD 0x0000000000000002ULL 32 #define DK_CXLFLASH_CONTEXT_SQ_CMD_MODE 0x0000000000000004ULL 33 #define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL 34 struct dk_cxlflash_attach { 35 struct dk_cxlflash_hdr hdr; 36 __u64 num_interrupts; 37 __u64 context_id; 38 __u64 mmio_size; 39 __u64 block_size; 40 __u64 adap_fd; 41 __u64 last_lba; 42 __u64 max_xfer; 43 __u64 reserved[8]; 44 }; 45 struct dk_cxlflash_detach { 46 struct dk_cxlflash_hdr hdr; 47 __u64 context_id; 48 __u64 reserved[8]; 49 }; 50 struct dk_cxlflash_udirect { 51 struct dk_cxlflash_hdr hdr; 52 __u64 context_id; 53 __u64 rsrc_handle; 54 __u64 last_lba; 55 __u64 reserved[8]; 56 }; 57 #define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL 58 struct dk_cxlflash_uvirtual { 59 struct dk_cxlflash_hdr hdr; 60 __u64 context_id; 61 __u64 lun_size; 62 __u64 rsrc_handle; 63 __u64 last_lba; 64 __u64 reserved[8]; 65 }; 66 struct dk_cxlflash_release { 67 struct dk_cxlflash_hdr hdr; 68 __u64 context_id; 69 __u64 rsrc_handle; 70 __u64 reserved[8]; 71 }; 72 struct dk_cxlflash_resize { 73 struct dk_cxlflash_hdr hdr; 74 __u64 context_id; 75 __u64 rsrc_handle; 76 __u64 req_size; 77 __u64 last_lba; 78 __u64 reserved[8]; 79 }; 80 struct dk_cxlflash_clone { 81 struct dk_cxlflash_hdr hdr; 82 __u64 context_id_src; 83 __u64 context_id_dst; 84 __u64 adap_fd_src; 85 __u64 reserved[8]; 86 }; 87 #define DK_CXLFLASH_VERIFY_SENSE_LEN 18 88 #define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL 89 struct dk_cxlflash_verify { 90 struct dk_cxlflash_hdr hdr; 91 __u64 context_id; 92 __u64 rsrc_handle; 93 __u64 hint; 94 __u64 last_lba; 95 __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN]; 96 __u8 pad[6]; 97 __u64 reserved[8]; 98 }; 99 #define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL 100 struct dk_cxlflash_recover_afu { 101 struct dk_cxlflash_hdr hdr; 102 __u64 reason; 103 __u64 context_id; 104 __u64 mmio_size; 105 __u64 adap_fd; 106 __u64 reserved[8]; 107 }; 108 #define DK_CXLFLASH_MANAGE_LUN_WWID_LEN CXLFLASH_WWID_LEN 109 #define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL 110 #define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL 111 #define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL 112 struct dk_cxlflash_manage_lun { 113 struct dk_cxlflash_hdr hdr; 114 __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN]; 115 __u64 reserved[8]; 116 }; 117 union cxlflash_ioctls { 118 struct dk_cxlflash_attach attach; 119 struct dk_cxlflash_detach detach; 120 struct dk_cxlflash_udirect udirect; 121 struct dk_cxlflash_uvirtual uvirtual; 122 struct dk_cxlflash_release release; 123 struct dk_cxlflash_resize resize; 124 struct dk_cxlflash_clone clone; 125 struct dk_cxlflash_verify verify; 126 struct dk_cxlflash_recover_afu recover_afu; 127 struct dk_cxlflash_manage_lun manage_lun; 128 }; 129 #define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls)) 130 #define CXL_MAGIC 0xCA 131 #define CXL_IOWR(_n,_s) _IOWR(CXL_MAGIC, _n, struct _s) 132 #define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach) 133 #define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect) 134 #define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release) 135 #define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach) 136 #define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify) 137 #define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu) 138 #define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun) 139 #define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual) 140 #define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize) 141 #define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone) 142 #define HT_CXLFLASH_VERSION_0 0 143 struct ht_cxlflash_hdr { 144 __u16 version; 145 __u16 subcmd; 146 __u16 rsvd[2]; 147 __u64 flags; 148 __u64 return_flags; 149 }; 150 #define HT_CXLFLASH_HOST_READ 0x0000000000000000ULL 151 #define HT_CXLFLASH_HOST_WRITE 0x0000000000000001ULL 152 #define HT_CXLFLASH_LUN_PROVISION_SUBCMD_CREATE_LUN 0x0001 153 #define HT_CXLFLASH_LUN_PROVISION_SUBCMD_DELETE_LUN 0x0002 154 #define HT_CXLFLASH_LUN_PROVISION_SUBCMD_QUERY_PORT 0x0003 155 struct ht_cxlflash_lun_provision { 156 struct ht_cxlflash_hdr hdr; 157 __u16 port; 158 __u16 reserved16[3]; 159 __u64 size; 160 __u64 lun_id; 161 __u8 wwid[CXLFLASH_WWID_LEN]; 162 __u64 max_num_luns; 163 __u64 cur_num_luns; 164 __u64 max_cap_port; 165 __u64 cur_cap_port; 166 __u64 reserved[8]; 167 }; 168 #define HT_CXLFLASH_AFU_DEBUG_MAX_DATA_LEN 262144 169 #define HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN 12 170 struct ht_cxlflash_afu_debug { 171 struct ht_cxlflash_hdr hdr; 172 __u8 reserved8[4]; 173 __u8 afu_subcmd[HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN]; 174 __u64 data_ea; 175 __u32 data_len; 176 __u32 reserved32; 177 __u64 reserved[8]; 178 }; 179 union cxlflash_ht_ioctls { 180 struct ht_cxlflash_lun_provision lun_provision; 181 struct ht_cxlflash_afu_debug afu_debug; 182 }; 183 #define MAX_HT_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ht_ioctls)) 184 #define HT_CXLFLASH_LUN_PROVISION CXL_IOWR(0xBF, ht_cxlflash_lun_provision) 185 #define HT_CXLFLASH_AFU_DEBUG CXL_IOWR(0xBE, ht_cxlflash_afu_debug) 186 #endif 187