diff options
author | Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com> | 2013-11-20 04:47:13 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-12-18 11:37:15 -0500 |
commit | 91f3e3eaba4413e76ce8e12e3ef10525a889142f (patch) | |
tree | e4cef25c9b51388a462776c6a8e642571fa2f19b /arch/s390/include | |
parent | 9efe4f2992025c3a4027c60bf36ae9d710ca3781 (diff) |
s390/zcrypt: add support for EP11 coprocessor cards
This feature extends the generic cryptographic device driver (zcrypt)
with a new capability to service EP11 requests for the Crypto Express4S
card in EP11 (Enterprise PKCS#11 mode) coprocessor mode.
Signed-off-by: Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include')
-rw-r--r-- | arch/s390/include/uapi/asm/zcrypt.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/arch/s390/include/uapi/asm/zcrypt.h b/arch/s390/include/uapi/asm/zcrypt.h index e83fc116f5bf..f2b18eacaca8 100644 --- a/arch/s390/include/uapi/asm/zcrypt.h +++ b/arch/s390/include/uapi/asm/zcrypt.h | |||
@@ -154,6 +154,67 @@ struct ica_xcRB { | |||
154 | unsigned short priority_window; | 154 | unsigned short priority_window; |
155 | unsigned int status; | 155 | unsigned int status; |
156 | } __attribute__((packed)); | 156 | } __attribute__((packed)); |
157 | |||
158 | /** | ||
159 | * struct ep11_cprb - EP11 connectivity programming request block | ||
160 | * @cprb_len: CPRB header length [0x0020] | ||
161 | * @cprb_ver_id: CPRB version id. [0x04] | ||
162 | * @pad_000: Alignment pad bytes | ||
163 | * @flags: Admin cmd [0x80] or functional cmd [0x00] | ||
164 | * @func_id: Function id / subtype [0x5434] | ||
165 | * @source_id: Source id [originator id] | ||
166 | * @target_id: Target id [usage/ctrl domain id] | ||
167 | * @ret_code: Return code | ||
168 | * @reserved1: Reserved | ||
169 | * @reserved2: Reserved | ||
170 | * @payload_len: Payload length | ||
171 | */ | ||
172 | struct ep11_cprb { | ||
173 | uint16_t cprb_len; | ||
174 | unsigned char cprb_ver_id; | ||
175 | unsigned char pad_000[2]; | ||
176 | unsigned char flags; | ||
177 | unsigned char func_id[2]; | ||
178 | uint32_t source_id; | ||
179 | uint32_t target_id; | ||
180 | uint32_t ret_code; | ||
181 | uint32_t reserved1; | ||
182 | uint32_t reserved2; | ||
183 | uint32_t payload_len; | ||
184 | } __attribute__((packed)); | ||
185 | |||
186 | /** | ||
187 | * struct ep11_target_dev - EP11 target device list | ||
188 | * @ap_id: AP device id | ||
189 | * @dom_id: Usage domain id | ||
190 | */ | ||
191 | struct ep11_target_dev { | ||
192 | uint16_t ap_id; | ||
193 | uint16_t dom_id; | ||
194 | }; | ||
195 | |||
196 | /** | ||
197 | * struct ep11_urb - EP11 user request block | ||
198 | * @targets_num: Number of target adapters | ||
199 | * @targets: Addr to target adapter list | ||
200 | * @weight: Level of request priority | ||
201 | * @req_no: Request id/number | ||
202 | * @req_len: Request length | ||
203 | * @req: Addr to request block | ||
204 | * @resp_len: Response length | ||
205 | * @resp: Addr to response block | ||
206 | */ | ||
207 | struct ep11_urb { | ||
208 | uint16_t targets_num; | ||
209 | uint64_t targets; | ||
210 | uint64_t weight; | ||
211 | uint64_t req_no; | ||
212 | uint64_t req_len; | ||
213 | uint64_t req; | ||
214 | uint64_t resp_len; | ||
215 | uint64_t resp; | ||
216 | } __attribute__((packed)); | ||
217 | |||
157 | #define AUTOSELECT ((unsigned int)0xFFFFFFFF) | 218 | #define AUTOSELECT ((unsigned int)0xFFFFFFFF) |
158 | 219 | ||
159 | #define ZCRYPT_IOCTL_MAGIC 'z' | 220 | #define ZCRYPT_IOCTL_MAGIC 'z' |
@@ -183,6 +244,9 @@ struct ica_xcRB { | |||
183 | * ZSECSENDCPRB | 244 | * ZSECSENDCPRB |
184 | * Send an arbitrary CPRB to a crypto card. | 245 | * Send an arbitrary CPRB to a crypto card. |
185 | * | 246 | * |
247 | * ZSENDEP11CPRB | ||
248 | * Send an arbitrary EP11 CPRB to an EP11 coprocessor crypto card. | ||
249 | * | ||
186 | * Z90STAT_STATUS_MASK | 250 | * Z90STAT_STATUS_MASK |
187 | * Return an 64 element array of unsigned chars for the status of | 251 | * Return an 64 element array of unsigned chars for the status of |
188 | * all devices. | 252 | * all devices. |
@@ -256,6 +320,7 @@ struct ica_xcRB { | |||
256 | #define ICARSAMODEXPO _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0) | 320 | #define ICARSAMODEXPO _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0) |
257 | #define ICARSACRT _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0) | 321 | #define ICARSACRT _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0) |
258 | #define ZSECSENDCPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0) | 322 | #define ZSECSENDCPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0) |
323 | #define ZSENDEP11CPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x04, 0) | ||
259 | 324 | ||
260 | /* New status calls */ | 325 | /* New status calls */ |
261 | #define Z90STAT_TOTALCOUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x40, int) | 326 | #define Z90STAT_TOTALCOUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x40, int) |