1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef __ASM_S390_ZCRYPT_H
15#define __ASM_S390_ZCRYPT_H
16
17#define ZCRYPT_VERSION 2
18#define ZCRYPT_RELEASE 1
19#define ZCRYPT_VARIANT 1
20
21#include <linux/ioctl.h>
22#include <linux/compiler.h>
23
24
25
26
27
28
29
30
31
32
33
34struct ica_rsa_modexpo {
35 char __user * inputdata;
36 unsigned int inputdatalength;
37 char __user * outputdata;
38 unsigned int outputdatalength;
39 char __user * b_key;
40 char __user * n_modulus;
41};
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57struct ica_rsa_modexpo_crt {
58 char __user * inputdata;
59 unsigned int inputdatalength;
60 char __user * outputdata;
61 unsigned int outputdatalength;
62 char __user * bp_key;
63 char __user * bq_key;
64 char __user * np_prime;
65 char __user * nq_prime;
66 char __user * u_mult_inv;
67};
68
69
70
71
72
73
74
75
76
77
78
79
80
81struct CPRBX {
82 unsigned short cprb_len;
83 unsigned char cprb_ver_id;
84 unsigned char pad_000[3];
85 unsigned char func_id[2];
86 unsigned char cprb_flags[4];
87 unsigned int req_parml;
88 unsigned int req_datal;
89 unsigned int rpl_msgbl;
90 unsigned int rpld_parml;
91 unsigned int rpl_datal;
92 unsigned int rpld_datal;
93 unsigned int req_extbl;
94 unsigned char pad_001[4];
95 unsigned int rpld_extbl;
96 unsigned char padx000[16 - sizeof (char *)];
97 unsigned char * req_parmb;
98 unsigned char padx001[16 - sizeof (char *)];
99 unsigned char * req_datab;
100 unsigned char padx002[16 - sizeof (char *)];
101 unsigned char * rpl_parmb;
102 unsigned char padx003[16 - sizeof (char *)];
103 unsigned char * rpl_datab;
104 unsigned char padx004[16 - sizeof (char *)];
105 unsigned char * req_extb;
106 unsigned char padx005[16 - sizeof (char *)];
107 unsigned char * rpl_extb;
108 unsigned short ccp_rtcode;
109 unsigned short ccp_rscode;
110 unsigned int mac_data_len;
111 unsigned char logon_id[8];
112 unsigned char mac_value[8];
113 unsigned char mac_content_flgs;
114 unsigned char pad_002;
115 unsigned short domain;
116 unsigned char usage_domain[4];
117 unsigned char cntrl_domain[4];
118 unsigned char S390enf_mask[4];
119 unsigned char pad_004[36];
120} __attribute__((packed));
121
122
123
124
125struct ica_xcRB {
126 unsigned short agent_ID;
127 unsigned int user_defined;
128 unsigned short request_ID;
129 unsigned int request_control_blk_length;
130 unsigned char padding1[16 - sizeof (char *)];
131 char __user * request_control_blk_addr;
132 unsigned int request_data_length;
133 char padding2[16 - sizeof (char *)];
134 char __user * request_data_address;
135 unsigned int reply_control_blk_length;
136 char padding3[16 - sizeof (char *)];
137 char __user * reply_control_blk_addr;
138 unsigned int reply_data_length;
139 char padding4[16 - sizeof (char *)];
140 char __user * reply_data_addr;
141 unsigned short priority_window;
142 unsigned int status;
143} __attribute__((packed));
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159struct ep11_cprb {
160 uint16_t cprb_len;
161 unsigned char cprb_ver_id;
162 unsigned char pad_000[2];
163 unsigned char flags;
164 unsigned char func_id[2];
165 uint32_t source_id;
166 uint32_t target_id;
167 uint32_t ret_code;
168 uint32_t reserved1;
169 uint32_t reserved2;
170 uint32_t payload_len;
171} __attribute__((packed));
172
173
174
175
176
177
178struct ep11_target_dev {
179 uint16_t ap_id;
180 uint16_t dom_id;
181};
182
183
184
185
186
187
188
189
190
191
192
193
194struct ep11_urb {
195 uint16_t targets_num;
196 uint64_t targets;
197 uint64_t weight;
198 uint64_t req_no;
199 uint64_t req_len;
200 uint64_t req;
201 uint64_t resp_len;
202 uint64_t resp;
203} __attribute__((packed));
204
205
206
207
208
209
210
211
212
213
214
215
216
217struct zcrypt_device_status_ext {
218 unsigned int hwtype:8;
219 unsigned int qid:16;
220 unsigned int online:1;
221 unsigned int functions:6;
222 unsigned int reserved:1;
223};
224
225#define MAX_ZDEV_CARDIDS_EXT 256
226#define MAX_ZDEV_DOMAINS_EXT 256
227
228
229#define MAX_ZDEV_ENTRIES_EXT (MAX_ZDEV_CARDIDS_EXT * MAX_ZDEV_DOMAINS_EXT)
230
231
232struct zcrypt_device_matrix_ext {
233 struct zcrypt_device_status_ext device[MAX_ZDEV_ENTRIES_EXT];
234};
235
236#define AUTOSELECT ((unsigned int)0xFFFFFFFF)
237
238#define ZCRYPT_IOCTL_MAGIC 'z'
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302#define ICARSAMODEXPO _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0)
303#define ICARSACRT _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0)
304#define ZSECSENDCPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0)
305#define ZSENDEP11CPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x04, 0)
306
307#define ZCRYPT_DEVICE_STATUS _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x5f, 0)
308#define ZCRYPT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x58, char[MAX_ZDEV_CARDIDS_EXT])
309#define ZCRYPT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x59, char[MAX_ZDEV_CARDIDS_EXT])
310#define ZCRYPT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x5a, int[MAX_ZDEV_CARDIDS_EXT])
311
312
313
314
315
316
317#define MAX_ZDEV_CARDIDS 64
318
319#define MAX_ZDEV_DOMAINS 256
320
321
322#define MAX_ZDEV_ENTRIES (MAX_ZDEV_CARDIDS * MAX_ZDEV_DOMAINS)
323
324
325struct zcrypt_device_status {
326 unsigned int hwtype:8;
327 unsigned int qid:14;
328 unsigned int online:1;
329 unsigned int functions:6;
330 unsigned int reserved:3;
331};
332
333
334struct zcrypt_device_matrix {
335 struct zcrypt_device_status device[MAX_ZDEV_ENTRIES];
336};
337
338
339#define ZDEVICESTATUS _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x4f, 0)
340
341#define Z90STAT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x48, char[64])
342
343#define Z90STAT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x49, char[64])
344
345#define Z90STAT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x4a, int[64])
346
347
348#define Z90STAT_REQUESTQ_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x44, int)
349#define Z90STAT_PENDINGQ_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x45, int)
350#define Z90STAT_TOTALOPEN_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x46, int)
351#define Z90STAT_DOMAIN_INDEX _IOR(ZCRYPT_IOCTL_MAGIC, 0x47, int)
352
353
354
355
356
357
358#endif
359