1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 29807f759SDavid Howells /* 39807f759SDavid Howells * include/asm-s390/zcrypt.h 49807f759SDavid Howells * 5ee410de8SHarald Freudenberger * zcrypt 2.2.1 (user-visible header) 69807f759SDavid Howells * 76acb086dSHarald Freudenberger * Copyright IBM Corp. 2001, 2022 89807f759SDavid Howells * Author(s): Robert Burroughs 99807f759SDavid Howells * Eric Rossman (edrossma@us.ibm.com) 109807f759SDavid Howells * 119807f759SDavid Howells * Hotplug & misc device support: Jochen Roehrig (roehrig@de.ibm.com) 129807f759SDavid Howells */ 139807f759SDavid Howells 149807f759SDavid Howells #ifndef __ASM_S390_ZCRYPT_H 159807f759SDavid Howells #define __ASM_S390_ZCRYPT_H 169807f759SDavid Howells 179807f759SDavid Howells #define ZCRYPT_VERSION 2 1800fab235SHarald Freudenberger #define ZCRYPT_RELEASE 2 19ee410de8SHarald Freudenberger #define ZCRYPT_VARIANT 1 209807f759SDavid Howells 219807f759SDavid Howells #include <linux/ioctl.h> 229807f759SDavid Howells #include <linux/compiler.h> 23061c9962SMasahiro Yamada #include <linux/types.h> 249807f759SDavid Howells 2500fab235SHarald Freudenberger /* Name of the zcrypt device driver. */ 2600fab235SHarald Freudenberger #define ZCRYPT_NAME "zcrypt" 2700fab235SHarald Freudenberger 289807f759SDavid Howells /** 299807f759SDavid Howells * struct ica_rsa_modexpo 309807f759SDavid Howells * 319807f759SDavid Howells * Requirements: 329807f759SDavid Howells * - outputdatalength is at least as large as inputdatalength. 339807f759SDavid Howells * - All key parts are right justified in their fields, padded on 349807f759SDavid Howells * the left with zeroes. 359807f759SDavid Howells * - length(b_key) = inputdatalength 369807f759SDavid Howells * - length(n_modulus) = inputdatalength 379807f759SDavid Howells */ 389807f759SDavid Howells struct ica_rsa_modexpo { 3974ecbef7SHarald Freudenberger __u8 __user *inputdata; 4074ecbef7SHarald Freudenberger __u32 inputdatalength; 4174ecbef7SHarald Freudenberger __u8 __user *outputdata; 4274ecbef7SHarald Freudenberger __u32 outputdatalength; 4374ecbef7SHarald Freudenberger __u8 __user *b_key; 4474ecbef7SHarald Freudenberger __u8 __user *n_modulus; 459807f759SDavid Howells }; 469807f759SDavid Howells 479807f759SDavid Howells /** 489807f759SDavid Howells * struct ica_rsa_modexpo_crt 499807f759SDavid Howells * 509807f759SDavid Howells * Requirements: 519807f759SDavid Howells * - inputdatalength is even. 529807f759SDavid Howells * - outputdatalength is at least as large as inputdatalength. 539807f759SDavid Howells * - All key parts are right justified in their fields, padded on 549807f759SDavid Howells * the left with zeroes. 559807f759SDavid Howells * - length(bp_key) = inputdatalength/2 + 8 569807f759SDavid Howells * - length(bq_key) = inputdatalength/2 579807f759SDavid Howells * - length(np_key) = inputdatalength/2 + 8 589807f759SDavid Howells * - length(nq_key) = inputdatalength/2 599807f759SDavid Howells * - length(u_mult_inv) = inputdatalength/2 + 8 609807f759SDavid Howells */ 619807f759SDavid Howells struct ica_rsa_modexpo_crt { 6274ecbef7SHarald Freudenberger __u8 __user *inputdata; 6374ecbef7SHarald Freudenberger __u32 inputdatalength; 6474ecbef7SHarald Freudenberger __u8 __user *outputdata; 6574ecbef7SHarald Freudenberger __u32 outputdatalength; 6674ecbef7SHarald Freudenberger __u8 __user *bp_key; 6774ecbef7SHarald Freudenberger __u8 __user *bq_key; 6874ecbef7SHarald Freudenberger __u8 __user *np_prime; 6974ecbef7SHarald Freudenberger __u8 __user *nq_prime; 7074ecbef7SHarald Freudenberger __u8 __user *u_mult_inv; 719807f759SDavid Howells }; 729807f759SDavid Howells 739807f759SDavid Howells /** 749807f759SDavid Howells * CPRBX 759807f759SDavid Howells * Note that all shorts and ints are big-endian. 769807f759SDavid Howells * All pointer fields are 16 bytes long, and mean nothing. 779807f759SDavid Howells * 789807f759SDavid Howells * A request CPRB is followed by a request_parameter_block. 799807f759SDavid Howells * 809807f759SDavid Howells * The request (or reply) parameter block is organized thus: 819807f759SDavid Howells * function code 829807f759SDavid Howells * VUD block 839807f759SDavid Howells * key block 849807f759SDavid Howells */ 859807f759SDavid Howells struct CPRBX { 8674ecbef7SHarald Freudenberger __u16 cprb_len; /* CPRB length 220 */ 8774ecbef7SHarald Freudenberger __u8 cprb_ver_id; /* CPRB version id. 0x02 */ 88*ad0faae6SHarald Freudenberger __u8 ctfm; /* Command Type Filtering Mask */ 89*ad0faae6SHarald Freudenberger __u8 pad_000[2]; /* Alignment pad bytes */ 9074ecbef7SHarald Freudenberger __u8 func_id[2]; /* function id 0x5432 */ 9174ecbef7SHarald Freudenberger __u8 cprb_flags[4]; /* Flags */ 9274ecbef7SHarald Freudenberger __u32 req_parml; /* request parameter buffer len */ 9374ecbef7SHarald Freudenberger __u32 req_datal; /* request data buffer */ 9474ecbef7SHarald Freudenberger __u32 rpl_msgbl; /* reply message block length */ 9574ecbef7SHarald Freudenberger __u32 rpld_parml; /* replied parameter block len */ 9674ecbef7SHarald Freudenberger __u32 rpl_datal; /* reply data block len */ 9774ecbef7SHarald Freudenberger __u32 rpld_datal; /* replied data block len */ 9874ecbef7SHarald Freudenberger __u32 req_extbl; /* request extension block len */ 996acb086dSHarald Freudenberger __u8 _pad_001[4]; /* reserved */ 10074ecbef7SHarald Freudenberger __u32 rpld_extbl; /* replied extension block len */ 1016acb086dSHarald Freudenberger __u8 _pad_002[16 - sizeof(__u8 *)]; 10274ecbef7SHarald Freudenberger __u8 __user *req_parmb; /* request parm block 'address' */ 1036acb086dSHarald Freudenberger __u8 _pad_003[16 - sizeof(__u8 *)]; 10474ecbef7SHarald Freudenberger __u8 __user *req_datab; /* request data block 'address' */ 1056acb086dSHarald Freudenberger __u8 _pad_004[16 - sizeof(__u8 *)]; 10674ecbef7SHarald Freudenberger __u8 __user *rpl_parmb; /* reply parm block 'address' */ 1076acb086dSHarald Freudenberger __u8 _pad_005[16 - sizeof(__u8 *)]; 10874ecbef7SHarald Freudenberger __u8 __user *rpl_datab; /* reply data block 'address' */ 1096acb086dSHarald Freudenberger __u8 _pad_006[16 - sizeof(__u8 *)]; 11074ecbef7SHarald Freudenberger __u8 __user *req_extb; /* request extension block 'addr'*/ 1116acb086dSHarald Freudenberger __u8 _pad_007[16 - sizeof(__u8 *)]; 11274ecbef7SHarald Freudenberger __u8 __user *rpl_extb; /* reply extension block 'address'*/ 11374ecbef7SHarald Freudenberger __u16 ccp_rtcode; /* server return code */ 11474ecbef7SHarald Freudenberger __u16 ccp_rscode; /* server reason code */ 11574ecbef7SHarald Freudenberger __u32 mac_data_len; /* Mac Data Length */ 11674ecbef7SHarald Freudenberger __u8 logon_id[8]; /* Logon Identifier */ 11774ecbef7SHarald Freudenberger __u8 mac_value[8]; /* Mac Value */ 11874ecbef7SHarald Freudenberger __u8 mac_content_flgs; /* Mac content flag byte */ 1196acb086dSHarald Freudenberger __u8 _pad_008; /* Alignment */ 12074ecbef7SHarald Freudenberger __u16 domain; /* Domain */ 1216acb086dSHarald Freudenberger __u8 _pad_009[12]; /* reserved, checked for zeros */ 1226acb086dSHarald Freudenberger __u8 _pad_010[36]; /* reserved */ 1239807f759SDavid Howells } __attribute__((packed)); 1249807f759SDavid Howells 1259807f759SDavid Howells /** 1269807f759SDavid Howells * xcRB 1279807f759SDavid Howells */ 1289807f759SDavid Howells struct ica_xcRB { 12974ecbef7SHarald Freudenberger __u16 agent_ID; 13074ecbef7SHarald Freudenberger __u32 user_defined; 13174ecbef7SHarald Freudenberger __u16 request_ID; 13274ecbef7SHarald Freudenberger __u32 request_control_blk_length; 13374ecbef7SHarald Freudenberger __u8 _padding1[16 - sizeof(__u8 *)]; 13474ecbef7SHarald Freudenberger __u8 __user *request_control_blk_addr; 13574ecbef7SHarald Freudenberger __u32 request_data_length; 13674ecbef7SHarald Freudenberger __u8 _padding2[16 - sizeof(__u8 *)]; 13774ecbef7SHarald Freudenberger __u8 __user *request_data_address; 13874ecbef7SHarald Freudenberger __u32 reply_control_blk_length; 13974ecbef7SHarald Freudenberger __u8 _padding3[16 - sizeof(__u8 *)]; 14074ecbef7SHarald Freudenberger __u8 __user *reply_control_blk_addr; 14174ecbef7SHarald Freudenberger __u32 reply_data_length; 14274ecbef7SHarald Freudenberger __u8 __padding4[16 - sizeof(__u8 *)]; 14374ecbef7SHarald Freudenberger __u8 __user *reply_data_addr; 14474ecbef7SHarald Freudenberger __u16 priority_window; 14574ecbef7SHarald Freudenberger __u32 status; 1469807f759SDavid Howells } __attribute__((packed)); 14791f3e3eaSIngo Tuchscherer 14891f3e3eaSIngo Tuchscherer /** 14991f3e3eaSIngo Tuchscherer * struct ep11_cprb - EP11 connectivity programming request block 15091f3e3eaSIngo Tuchscherer * @cprb_len: CPRB header length [0x0020] 15191f3e3eaSIngo Tuchscherer * @cprb_ver_id: CPRB version id. [0x04] 15291f3e3eaSIngo Tuchscherer * @pad_000: Alignment pad bytes 153be534791SHarald Freudenberger * @flags: Admin bit [0x80], Special bit [0x20] 154be534791SHarald Freudenberger * @func_id: Function id / subtype [0x5434] "T4" 15591f3e3eaSIngo Tuchscherer * @source_id: Source id [originator id] 15691f3e3eaSIngo Tuchscherer * @target_id: Target id [usage/ctrl domain id] 15791f3e3eaSIngo Tuchscherer * @ret_code: Return code 15891f3e3eaSIngo Tuchscherer * @reserved1: Reserved 15991f3e3eaSIngo Tuchscherer * @reserved2: Reserved 16091f3e3eaSIngo Tuchscherer * @payload_len: Payload length 16191f3e3eaSIngo Tuchscherer */ 16291f3e3eaSIngo Tuchscherer struct ep11_cprb { 163061c9962SMasahiro Yamada __u16 cprb_len; 164a7367997SHarald Freudenberger __u8 cprb_ver_id; 165a7367997SHarald Freudenberger __u8 pad_000[2]; 166a7367997SHarald Freudenberger __u8 flags; 167a7367997SHarald Freudenberger __u8 func_id[2]; 168061c9962SMasahiro Yamada __u32 source_id; 169061c9962SMasahiro Yamada __u32 target_id; 170061c9962SMasahiro Yamada __u32 ret_code; 171061c9962SMasahiro Yamada __u32 reserved1; 172061c9962SMasahiro Yamada __u32 reserved2; 173061c9962SMasahiro Yamada __u32 payload_len; 17491f3e3eaSIngo Tuchscherer } __attribute__((packed)); 17591f3e3eaSIngo Tuchscherer 17691f3e3eaSIngo Tuchscherer /** 17791f3e3eaSIngo Tuchscherer * struct ep11_target_dev - EP11 target device list 17891f3e3eaSIngo Tuchscherer * @ap_id: AP device id 17991f3e3eaSIngo Tuchscherer * @dom_id: Usage domain id 18091f3e3eaSIngo Tuchscherer */ 18191f3e3eaSIngo Tuchscherer struct ep11_target_dev { 182061c9962SMasahiro Yamada __u16 ap_id; 183061c9962SMasahiro Yamada __u16 dom_id; 18491f3e3eaSIngo Tuchscherer }; 18591f3e3eaSIngo Tuchscherer 18691f3e3eaSIngo Tuchscherer /** 18791f3e3eaSIngo Tuchscherer * struct ep11_urb - EP11 user request block 18891f3e3eaSIngo Tuchscherer * @targets_num: Number of target adapters 18991f3e3eaSIngo Tuchscherer * @targets: Addr to target adapter list 19091f3e3eaSIngo Tuchscherer * @weight: Level of request priority 19191f3e3eaSIngo Tuchscherer * @req_no: Request id/number 19291f3e3eaSIngo Tuchscherer * @req_len: Request length 19391f3e3eaSIngo Tuchscherer * @req: Addr to request block 19491f3e3eaSIngo Tuchscherer * @resp_len: Response length 19591f3e3eaSIngo Tuchscherer * @resp: Addr to response block 19691f3e3eaSIngo Tuchscherer */ 19791f3e3eaSIngo Tuchscherer struct ep11_urb { 198061c9962SMasahiro Yamada __u16 targets_num; 199a7367997SHarald Freudenberger __u8 __user *targets; 200061c9962SMasahiro Yamada __u64 weight; 201061c9962SMasahiro Yamada __u64 req_no; 202061c9962SMasahiro Yamada __u64 req_len; 203a7367997SHarald Freudenberger __u8 __user *req; 204061c9962SMasahiro Yamada __u64 resp_len; 205a7367997SHarald Freudenberger __u8 __user *resp; 20691f3e3eaSIngo Tuchscherer } __attribute__((packed)); 20791f3e3eaSIngo Tuchscherer 208b886a9d1SIngo Tuchscherer /** 209af4a7227SHarald Freudenberger * struct zcrypt_device_status_ext 210b886a9d1SIngo Tuchscherer * @hwtype: raw hardware type 211af4a7227SHarald Freudenberger * @qid: 8 bit device index, 8 bit domain 212b886a9d1SIngo Tuchscherer * @functions: AP device function bit field 'abcdef' 213b886a9d1SIngo Tuchscherer * a, b, c = reserved 214b886a9d1SIngo Tuchscherer * d = CCA coprocessor 215b886a9d1SIngo Tuchscherer * e = Accelerator 216b886a9d1SIngo Tuchscherer * f = EP11 coprocessor 217b886a9d1SIngo Tuchscherer * @online online status 218b886a9d1SIngo Tuchscherer * @reserved reserved 219b886a9d1SIngo Tuchscherer */ 220af4a7227SHarald Freudenberger struct zcrypt_device_status_ext { 221b886a9d1SIngo Tuchscherer unsigned int hwtype:8; 222af4a7227SHarald Freudenberger unsigned int qid:16; 223b886a9d1SIngo Tuchscherer unsigned int online:1; 224b886a9d1SIngo Tuchscherer unsigned int functions:6; 225af4a7227SHarald Freudenberger unsigned int reserved:1; 226b886a9d1SIngo Tuchscherer }; 227b886a9d1SIngo Tuchscherer 228af4a7227SHarald Freudenberger #define MAX_ZDEV_CARDIDS_EXT 256 229af4a7227SHarald Freudenberger #define MAX_ZDEV_DOMAINS_EXT 256 230b886a9d1SIngo Tuchscherer 231af4a7227SHarald Freudenberger /* Maximum number of zcrypt devices */ 232af4a7227SHarald Freudenberger #define MAX_ZDEV_ENTRIES_EXT (MAX_ZDEV_CARDIDS_EXT * MAX_ZDEV_DOMAINS_EXT) 233b886a9d1SIngo Tuchscherer 234af4a7227SHarald Freudenberger /* Device matrix of all zcrypt devices */ 235af4a7227SHarald Freudenberger struct zcrypt_device_matrix_ext { 236af4a7227SHarald Freudenberger struct zcrypt_device_status_ext device[MAX_ZDEV_ENTRIES_EXT]; 237b886a9d1SIngo Tuchscherer }; 238b886a9d1SIngo Tuchscherer 239ac2b96f3SHarald Freudenberger #define AUTOSELECT 0xFFFFFFFF 2408f291ebfSHarald Freudenberger #define AUTOSEL_AP ((__u16)0xFFFF) 2418f291ebfSHarald Freudenberger #define AUTOSEL_DOM ((__u16)0xFFFF) 2429807f759SDavid Howells 2439807f759SDavid Howells #define ZCRYPT_IOCTL_MAGIC 'z' 2449807f759SDavid Howells 2459807f759SDavid Howells /** 2469807f759SDavid Howells * Interface notes: 2479807f759SDavid Howells * 2489807f759SDavid Howells * The ioctl()s which are implemented (along with relevant details) 2499807f759SDavid Howells * are: 2509807f759SDavid Howells * 2519807f759SDavid Howells * ICARSAMODEXPO 2529807f759SDavid Howells * Perform an RSA operation using a Modulus-Exponent pair 2539807f759SDavid Howells * This takes an ica_rsa_modexpo struct as its arg. 2549807f759SDavid Howells * 2559807f759SDavid Howells * NOTE: please refer to the comments preceding this structure 2569807f759SDavid Howells * for the implementation details for the contents of the 2579807f759SDavid Howells * block 2589807f759SDavid Howells * 2599807f759SDavid Howells * ICARSACRT 2609807f759SDavid Howells * Perform an RSA operation using a Chinese-Remainder Theorem key 2619807f759SDavid Howells * This takes an ica_rsa_modexpo_crt struct as its arg. 2629807f759SDavid Howells * 2639807f759SDavid Howells * NOTE: please refer to the comments preceding this structure 2649807f759SDavid Howells * for the implementation details for the contents of the 2659807f759SDavid Howells * block 2669807f759SDavid Howells * 2679807f759SDavid Howells * ZSECSENDCPRB 2689807f759SDavid Howells * Send an arbitrary CPRB to a crypto card. 2699807f759SDavid Howells * 27091f3e3eaSIngo Tuchscherer * ZSENDEP11CPRB 27191f3e3eaSIngo Tuchscherer * Send an arbitrary EP11 CPRB to an EP11 coprocessor crypto card. 27291f3e3eaSIngo Tuchscherer * 273af4a7227SHarald Freudenberger * ZCRYPT_DEVICE_STATUS 274af4a7227SHarald Freudenberger * The given struct zcrypt_device_matrix_ext is updated with 275af4a7227SHarald Freudenberger * status information for each currently known apqn. 276af4a7227SHarald Freudenberger * 277af4a7227SHarald Freudenberger * ZCRYPT_STATUS_MASK 278af4a7227SHarald Freudenberger * Return an MAX_ZDEV_CARDIDS_EXT element array of unsigned chars for the 279af4a7227SHarald Freudenberger * status of all devices. 2809807f759SDavid Howells * 0x01: PCICA 2819807f759SDavid Howells * 0x02: PCICC 2829807f759SDavid Howells * 0x03: PCIXCC_MCL2 2839807f759SDavid Howells * 0x04: PCIXCC_MCL3 2849807f759SDavid Howells * 0x05: CEX2C 2859807f759SDavid Howells * 0x06: CEX2A 286af4a7227SHarald Freudenberger * 0x07: CEX3C 287af4a7227SHarald Freudenberger * 0x08: CEX3A 288af4a7227SHarald Freudenberger * 0x0a: CEX4 289af4a7227SHarald Freudenberger * 0x0b: CEX5 290985214afSHarald Freudenberger * 0x0c: CEX6, CEX7 or CEX8 291af4a7227SHarald Freudenberger * 0x0d: device is disabled 2929807f759SDavid Howells * 293af4a7227SHarald Freudenberger * ZCRYPT_QDEPTH_MASK 294af4a7227SHarald Freudenberger * Return an MAX_ZDEV_CARDIDS_EXT element array of unsigned chars for the 295af4a7227SHarald Freudenberger * queue depth of all devices. 2969807f759SDavid Howells * 297af4a7227SHarald Freudenberger * ZCRYPT_PERDEV_REQCNT 298af4a7227SHarald Freudenberger * Return an MAX_ZDEV_CARDIDS_EXT element array of unsigned integers for 299af4a7227SHarald Freudenberger * the number of successfully completed requests per device since the 300af4a7227SHarald Freudenberger * device was detected and made available. 3019807f759SDavid Howells * 3029807f759SDavid Howells */ 3039807f759SDavid Howells 3049807f759SDavid Howells /** 3059807f759SDavid Howells * Supported ioctl calls 3069807f759SDavid Howells */ 3079807f759SDavid Howells #define ICARSAMODEXPO _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0) 3089807f759SDavid Howells #define ICARSACRT _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0) 3099807f759SDavid Howells #define ZSECSENDCPRB _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0) 31091f3e3eaSIngo Tuchscherer #define ZSENDEP11CPRB _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x04, 0) 3119807f759SDavid Howells 312af4a7227SHarald Freudenberger #define ZCRYPT_DEVICE_STATUS _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x5f, 0) 313af4a7227SHarald Freudenberger #define ZCRYPT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x58, char[MAX_ZDEV_CARDIDS_EXT]) 314af4a7227SHarald Freudenberger #define ZCRYPT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x59, char[MAX_ZDEV_CARDIDS_EXT]) 315af4a7227SHarald Freudenberger #define ZCRYPT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x5a, int[MAX_ZDEV_CARDIDS_EXT]) 316af4a7227SHarald Freudenberger 317af4a7227SHarald Freudenberger /* 31800fab235SHarald Freudenberger * Support for multiple zcrypt device nodes. 31900fab235SHarald Freudenberger */ 32000fab235SHarald Freudenberger 32100fab235SHarald Freudenberger /* Nr of minor device node numbers to allocate. */ 32200fab235SHarald Freudenberger #define ZCRYPT_MAX_MINOR_NODES 256 32300fab235SHarald Freudenberger 32400fab235SHarald Freudenberger /* Max amount of possible ioctls */ 32500fab235SHarald Freudenberger #define MAX_ZDEV_IOCTLS (1 << _IOC_NRBITS) 32600fab235SHarald Freudenberger 32700fab235SHarald Freudenberger /* 328af4a7227SHarald Freudenberger * Only deprecated defines, structs and ioctls below this line. 329af4a7227SHarald Freudenberger */ 330af4a7227SHarald Freudenberger 331af4a7227SHarald Freudenberger /* Deprecated: use MAX_ZDEV_CARDIDS_EXT */ 332af4a7227SHarald Freudenberger #define MAX_ZDEV_CARDIDS 64 333af4a7227SHarald Freudenberger /* Deprecated: use MAX_ZDEV_DOMAINS_EXT */ 334af4a7227SHarald Freudenberger #define MAX_ZDEV_DOMAINS 256 335af4a7227SHarald Freudenberger 336af4a7227SHarald Freudenberger /* Deprecated: use MAX_ZDEV_ENTRIES_EXT */ 337af4a7227SHarald Freudenberger #define MAX_ZDEV_ENTRIES (MAX_ZDEV_CARDIDS * MAX_ZDEV_DOMAINS) 338af4a7227SHarald Freudenberger 339af4a7227SHarald Freudenberger /* Deprecated: use struct zcrypt_device_status_ext */ 340af4a7227SHarald Freudenberger struct zcrypt_device_status { 341af4a7227SHarald Freudenberger unsigned int hwtype:8; 342af4a7227SHarald Freudenberger unsigned int qid:14; 343af4a7227SHarald Freudenberger unsigned int online:1; 344af4a7227SHarald Freudenberger unsigned int functions:6; 345af4a7227SHarald Freudenberger unsigned int reserved:3; 346af4a7227SHarald Freudenberger }; 347af4a7227SHarald Freudenberger 348af4a7227SHarald Freudenberger /* Deprecated: use struct zcrypt_device_matrix_ext */ 349af4a7227SHarald Freudenberger struct zcrypt_device_matrix { 350af4a7227SHarald Freudenberger struct zcrypt_device_status device[MAX_ZDEV_ENTRIES]; 351af4a7227SHarald Freudenberger }; 352af4a7227SHarald Freudenberger 353af4a7227SHarald Freudenberger /* Deprecated: use ZCRYPT_DEVICE_STATUS */ 354af4a7227SHarald Freudenberger #define ZDEVICESTATUS _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x4f, 0) 355af4a7227SHarald Freudenberger /* Deprecated: use ZCRYPT_STATUS_MASK */ 356af4a7227SHarald Freudenberger #define Z90STAT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x48, char[64]) 357af4a7227SHarald Freudenberger /* Deprecated: use ZCRYPT_QDEPTH_MASK */ 358af4a7227SHarald Freudenberger #define Z90STAT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x49, char[64]) 359af4a7227SHarald Freudenberger /* Deprecated: use ZCRYPT_PERDEV_REQCNT */ 360af4a7227SHarald Freudenberger #define Z90STAT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x4a, int[64]) 361af4a7227SHarald Freudenberger 362af4a7227SHarald Freudenberger /* Deprecated: use sysfs to query these values */ 3639807f759SDavid Howells #define Z90STAT_REQUESTQ_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x44, int) 3649807f759SDavid Howells #define Z90STAT_PENDINGQ_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x45, int) 3659807f759SDavid Howells #define Z90STAT_TOTALOPEN_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x46, int) 3669807f759SDavid Howells #define Z90STAT_DOMAIN_INDEX _IOR(ZCRYPT_IOCTL_MAGIC, 0x47, int) 367af4a7227SHarald Freudenberger 368af4a7227SHarald Freudenberger /* 369af4a7227SHarald Freudenberger * The ioctl number ranges 0x40 - 0x42 and 0x4b - 0x4e had been used in the 370af4a7227SHarald Freudenberger * past, don't assign new ioctls for these. 371af4a7227SHarald Freudenberger */ 3729807f759SDavid Howells 3739807f759SDavid Howells #endif /* __ASM_S390_ZCRYPT_H */ 374