xref: /aosp_15_r20/bionic/libc/kernel/uapi/scsi/cxlflash_ioctl.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 _CXLFLASH_IOCTL_H
8*8d67ca89SAndroid Build Coastguard Worker #define _CXLFLASH_IOCTL_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #define CXLFLASH_WWID_LEN 16
11*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_VERSION_0 0
12*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_hdr {
13*8d67ca89SAndroid Build Coastguard Worker   __u16 version;
14*8d67ca89SAndroid Build Coastguard Worker   __u16 rsvd[3];
15*8d67ca89SAndroid Build Coastguard Worker   __u64 flags;
16*8d67ca89SAndroid Build Coastguard Worker   __u64 return_flags;
17*8d67ca89SAndroid Build Coastguard Worker };
18*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL
19*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_APP_CLOSE_ADAP_FD 0x0000000000000002ULL
20*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_CONTEXT_SQ_CMD_MODE 0x0000000000000004ULL
21*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL
22*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_attach {
23*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
24*8d67ca89SAndroid Build Coastguard Worker   __u64 num_interrupts;
25*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
26*8d67ca89SAndroid Build Coastguard Worker   __u64 mmio_size;
27*8d67ca89SAndroid Build Coastguard Worker   __u64 block_size;
28*8d67ca89SAndroid Build Coastguard Worker   __u64 adap_fd;
29*8d67ca89SAndroid Build Coastguard Worker   __u64 last_lba;
30*8d67ca89SAndroid Build Coastguard Worker   __u64 max_xfer;
31*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
32*8d67ca89SAndroid Build Coastguard Worker };
33*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_detach {
34*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
35*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
36*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
37*8d67ca89SAndroid Build Coastguard Worker };
38*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_udirect {
39*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
40*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
41*8d67ca89SAndroid Build Coastguard Worker   __u64 rsrc_handle;
42*8d67ca89SAndroid Build Coastguard Worker   __u64 last_lba;
43*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
44*8d67ca89SAndroid Build Coastguard Worker };
45*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL
46*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_uvirtual {
47*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
48*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
49*8d67ca89SAndroid Build Coastguard Worker   __u64 lun_size;
50*8d67ca89SAndroid Build Coastguard Worker   __u64 rsrc_handle;
51*8d67ca89SAndroid Build Coastguard Worker   __u64 last_lba;
52*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
53*8d67ca89SAndroid Build Coastguard Worker };
54*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_release {
55*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
56*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
57*8d67ca89SAndroid Build Coastguard Worker   __u64 rsrc_handle;
58*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
59*8d67ca89SAndroid Build Coastguard Worker };
60*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_resize {
61*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
62*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
63*8d67ca89SAndroid Build Coastguard Worker   __u64 rsrc_handle;
64*8d67ca89SAndroid Build Coastguard Worker   __u64 req_size;
65*8d67ca89SAndroid Build Coastguard Worker   __u64 last_lba;
66*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
67*8d67ca89SAndroid Build Coastguard Worker };
68*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_clone {
69*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
70*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id_src;
71*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id_dst;
72*8d67ca89SAndroid Build Coastguard Worker   __u64 adap_fd_src;
73*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
74*8d67ca89SAndroid Build Coastguard Worker };
75*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_VERIFY_SENSE_LEN 18
76*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL
77*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_verify {
78*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
79*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
80*8d67ca89SAndroid Build Coastguard Worker   __u64 rsrc_handle;
81*8d67ca89SAndroid Build Coastguard Worker   __u64 hint;
82*8d67ca89SAndroid Build Coastguard Worker   __u64 last_lba;
83*8d67ca89SAndroid Build Coastguard Worker   __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN];
84*8d67ca89SAndroid Build Coastguard Worker   __u8 pad[6];
85*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
86*8d67ca89SAndroid Build Coastguard Worker };
87*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL
88*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_recover_afu {
89*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
90*8d67ca89SAndroid Build Coastguard Worker   __u64 reason;
91*8d67ca89SAndroid Build Coastguard Worker   __u64 context_id;
92*8d67ca89SAndroid Build Coastguard Worker   __u64 mmio_size;
93*8d67ca89SAndroid Build Coastguard Worker   __u64 adap_fd;
94*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
95*8d67ca89SAndroid Build Coastguard Worker };
96*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_MANAGE_LUN_WWID_LEN CXLFLASH_WWID_LEN
97*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL
98*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL
99*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL
100*8d67ca89SAndroid Build Coastguard Worker struct dk_cxlflash_manage_lun {
101*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_hdr hdr;
102*8d67ca89SAndroid Build Coastguard Worker   __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN];
103*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
104*8d67ca89SAndroid Build Coastguard Worker };
105*8d67ca89SAndroid Build Coastguard Worker union cxlflash_ioctls {
106*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_attach attach;
107*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_detach detach;
108*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_udirect udirect;
109*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_uvirtual uvirtual;
110*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_release release;
111*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_resize resize;
112*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_clone clone;
113*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_verify verify;
114*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_recover_afu recover_afu;
115*8d67ca89SAndroid Build Coastguard Worker   struct dk_cxlflash_manage_lun manage_lun;
116*8d67ca89SAndroid Build Coastguard Worker };
117*8d67ca89SAndroid Build Coastguard Worker #define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls))
118*8d67ca89SAndroid Build Coastguard Worker #define CXL_MAGIC 0xCA
119*8d67ca89SAndroid Build Coastguard Worker #define CXL_IOWR(_n,_s) _IOWR(CXL_MAGIC, _n, struct _s)
120*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach)
121*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect)
122*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release)
123*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach)
124*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify)
125*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu)
126*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun)
127*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual)
128*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize)
129*8d67ca89SAndroid Build Coastguard Worker #define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone)
130*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_VERSION_0 0
131*8d67ca89SAndroid Build Coastguard Worker struct ht_cxlflash_hdr {
132*8d67ca89SAndroid Build Coastguard Worker   __u16 version;
133*8d67ca89SAndroid Build Coastguard Worker   __u16 subcmd;
134*8d67ca89SAndroid Build Coastguard Worker   __u16 rsvd[2];
135*8d67ca89SAndroid Build Coastguard Worker   __u64 flags;
136*8d67ca89SAndroid Build Coastguard Worker   __u64 return_flags;
137*8d67ca89SAndroid Build Coastguard Worker };
138*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_HOST_READ 0x0000000000000000ULL
139*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_HOST_WRITE 0x0000000000000001ULL
140*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_LUN_PROVISION_SUBCMD_CREATE_LUN 0x0001
141*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_LUN_PROVISION_SUBCMD_DELETE_LUN 0x0002
142*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_LUN_PROVISION_SUBCMD_QUERY_PORT 0x0003
143*8d67ca89SAndroid Build Coastguard Worker struct ht_cxlflash_lun_provision {
144*8d67ca89SAndroid Build Coastguard Worker   struct ht_cxlflash_hdr hdr;
145*8d67ca89SAndroid Build Coastguard Worker   __u16 port;
146*8d67ca89SAndroid Build Coastguard Worker   __u16 reserved16[3];
147*8d67ca89SAndroid Build Coastguard Worker   __u64 size;
148*8d67ca89SAndroid Build Coastguard Worker   __u64 lun_id;
149*8d67ca89SAndroid Build Coastguard Worker   __u8 wwid[CXLFLASH_WWID_LEN];
150*8d67ca89SAndroid Build Coastguard Worker   __u64 max_num_luns;
151*8d67ca89SAndroid Build Coastguard Worker   __u64 cur_num_luns;
152*8d67ca89SAndroid Build Coastguard Worker   __u64 max_cap_port;
153*8d67ca89SAndroid Build Coastguard Worker   __u64 cur_cap_port;
154*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
155*8d67ca89SAndroid Build Coastguard Worker };
156*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_AFU_DEBUG_MAX_DATA_LEN 262144
157*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN 12
158*8d67ca89SAndroid Build Coastguard Worker struct ht_cxlflash_afu_debug {
159*8d67ca89SAndroid Build Coastguard Worker   struct ht_cxlflash_hdr hdr;
160*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved8[4];
161*8d67ca89SAndroid Build Coastguard Worker   __u8 afu_subcmd[HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN];
162*8d67ca89SAndroid Build Coastguard Worker   __u64 data_ea;
163*8d67ca89SAndroid Build Coastguard Worker   __u32 data_len;
164*8d67ca89SAndroid Build Coastguard Worker   __u32 reserved32;
165*8d67ca89SAndroid Build Coastguard Worker   __u64 reserved[8];
166*8d67ca89SAndroid Build Coastguard Worker };
167*8d67ca89SAndroid Build Coastguard Worker union cxlflash_ht_ioctls {
168*8d67ca89SAndroid Build Coastguard Worker   struct ht_cxlflash_lun_provision lun_provision;
169*8d67ca89SAndroid Build Coastguard Worker   struct ht_cxlflash_afu_debug afu_debug;
170*8d67ca89SAndroid Build Coastguard Worker };
171*8d67ca89SAndroid Build Coastguard Worker #define MAX_HT_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ht_ioctls))
172*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_LUN_PROVISION CXL_IOWR(0xBF, ht_cxlflash_lun_provision)
173*8d67ca89SAndroid Build Coastguard Worker #define HT_CXLFLASH_AFU_DEBUG CXL_IOWR(0xBE, ht_cxlflash_afu_debug)
174*8d67ca89SAndroid Build Coastguard Worker #endif
175