18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 48c2ecf20Sopenharmony_ci * Horst Hummel <Horst.Hummel@de.ibm.com> 58c2ecf20Sopenharmony_ci * Bugreports.to..: <Linux390@de.ibm.com> 68c2ecf20Sopenharmony_ci * Copyright IBM Corp. 1999, 2000 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef DASD_ECKD_H 118c2ecf20Sopenharmony_ci#define DASD_ECKD_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/***************************************************************************** 148c2ecf20Sopenharmony_ci * SECTION: CCW Definitions 158c2ecf20Sopenharmony_ci ****************************************************************************/ 168c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE 0x05 178c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ 0x06 188c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_HOME_ADDRESS 0x09 198c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_HOME_ADDRESS 0x0a 208c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_KD 0x0d 218c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_KD 0x0e 228c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_ERASE 0x11 238c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_COUNT 0x12 248c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_SLCK 0x14 258c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_RECORD_ZERO 0x15 268c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_RECORD_ZERO 0x16 278c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_CKD 0x1d 288c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_CKD 0x1e 298c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_PSF 0x27 308c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_SNID 0x34 318c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RSSD 0x3e 328c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_LOCATE_RECORD 0x47 338c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_LOCATE_RECORD_EXT 0x4b 348c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_SNSS 0x54 358c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_DEFINE_EXTENT 0x63 368c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_MT 0x85 378c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_MT 0x86 388c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_KD_MT 0x8d 398c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_KD_MT 0x8e 408c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_COUNT_MT 0x92 418c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RELEASE 0x94 428c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_FULL_TRACK 0x95 438c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_CKD_MT 0x9e 448c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_CKD_MT 0x9d 458c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_TRACK_DATA 0xA5 468c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_TRACK_DATA 0xA6 478c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RESERVE 0xB4 488c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_TRACK 0xDE 498c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_PFX 0xE7 508c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_PFX_READ 0xEA 518c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RSCK 0xF9 528c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RCD 0xFA 538c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_DSO 0xF7 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci/* Define Subssystem Function / Orders */ 568c2ecf20Sopenharmony_ci#define DSO_ORDER_RAS 0x81 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci/* 598c2ecf20Sopenharmony_ci * Perform Subsystem Function / Orders 608c2ecf20Sopenharmony_ci */ 618c2ecf20Sopenharmony_ci#define PSF_ORDER_PRSSD 0x18 628c2ecf20Sopenharmony_ci#define PSF_ORDER_CUIR_RESPONSE 0x1A 638c2ecf20Sopenharmony_ci#define PSF_ORDER_SSC 0x1D 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci/* 668c2ecf20Sopenharmony_ci * Perform Subsystem Function / Sub-Orders 678c2ecf20Sopenharmony_ci */ 688c2ecf20Sopenharmony_ci#define PSF_SUBORDER_QHA 0x1C /* Query Host Access */ 698c2ecf20Sopenharmony_ci#define PSF_SUBORDER_VSQ 0x52 /* Volume Storage Query */ 708c2ecf20Sopenharmony_ci#define PSF_SUBORDER_LCQ 0x53 /* Logical Configuration Query */ 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci/* 738c2ecf20Sopenharmony_ci * CUIR response condition codes 748c2ecf20Sopenharmony_ci */ 758c2ecf20Sopenharmony_ci#define PSF_CUIR_INVALID 0x00 768c2ecf20Sopenharmony_ci#define PSF_CUIR_COMPLETED 0x01 778c2ecf20Sopenharmony_ci#define PSF_CUIR_NOT_SUPPORTED 0x02 788c2ecf20Sopenharmony_ci#define PSF_CUIR_ERROR_IN_REQ 0x03 798c2ecf20Sopenharmony_ci#define PSF_CUIR_DENIED 0x04 808c2ecf20Sopenharmony_ci#define PSF_CUIR_LAST_PATH 0x05 818c2ecf20Sopenharmony_ci#define PSF_CUIR_DEVICE_ONLINE 0x06 828c2ecf20Sopenharmony_ci#define PSF_CUIR_VARY_FAILURE 0x07 838c2ecf20Sopenharmony_ci#define PSF_CUIR_SOFTWARE_FAILURE 0x08 848c2ecf20Sopenharmony_ci#define PSF_CUIR_NOT_RECOGNIZED 0x09 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci/* 878c2ecf20Sopenharmony_ci * CUIR codes 888c2ecf20Sopenharmony_ci */ 898c2ecf20Sopenharmony_ci#define CUIR_QUIESCE 0x01 908c2ecf20Sopenharmony_ci#define CUIR_RESUME 0x02 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci/* 938c2ecf20Sopenharmony_ci * Out-of-space (OOS) Codes 948c2ecf20Sopenharmony_ci */ 958c2ecf20Sopenharmony_ci#define REPO_WARN 0x01 968c2ecf20Sopenharmony_ci#define REPO_EXHAUST 0x02 978c2ecf20Sopenharmony_ci#define POOL_WARN 0x03 988c2ecf20Sopenharmony_ci#define POOL_EXHAUST 0x04 998c2ecf20Sopenharmony_ci#define REPO_RELIEVE 0x05 1008c2ecf20Sopenharmony_ci#define POOL_RELIEVE 0x06 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci/* 1038c2ecf20Sopenharmony_ci * attention message definitions 1048c2ecf20Sopenharmony_ci */ 1058c2ecf20Sopenharmony_ci#define ATTENTION_LENGTH_CUIR 0x0e 1068c2ecf20Sopenharmony_ci#define ATTENTION_FORMAT_CUIR 0x01 1078c2ecf20Sopenharmony_ci#define ATTENTION_LENGTH_OOS 0x10 1088c2ecf20Sopenharmony_ci#define ATTENTION_FORMAT_OOS 0x06 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci#define DASD_ECKD_PG_GROUPED 0x10 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci/* 1138c2ecf20Sopenharmony_ci * Size that is reportet for large volumes in the old 16-bit no_cyl field 1148c2ecf20Sopenharmony_ci */ 1158c2ecf20Sopenharmony_ci#define LV_COMPAT_CYL 0xFFFE 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci#define FCX_MAX_DATA_FACTOR 65536 1198c2ecf20Sopenharmony_ci#define DASD_ECKD_RCD_DATA_SIZE 256 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci#define DASD_ECKD_PATH_THRHLD 256 1228c2ecf20Sopenharmony_ci#define DASD_ECKD_PATH_INTERVAL 300 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci/* 1258c2ecf20Sopenharmony_ci * Maximum number of blocks to be chained 1268c2ecf20Sopenharmony_ci */ 1278c2ecf20Sopenharmony_ci#define DASD_ECKD_MAX_BLOCKS 190 1288c2ecf20Sopenharmony_ci#define DASD_ECKD_MAX_BLOCKS_RAW 256 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ci/***************************************************************************** 1318c2ecf20Sopenharmony_ci * SECTION: Type Definitions 1328c2ecf20Sopenharmony_ci ****************************************************************************/ 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_cistruct eckd_count { 1358c2ecf20Sopenharmony_ci __u16 cyl; 1368c2ecf20Sopenharmony_ci __u16 head; 1378c2ecf20Sopenharmony_ci __u8 record; 1388c2ecf20Sopenharmony_ci __u8 kl; 1398c2ecf20Sopenharmony_ci __u16 dl; 1408c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_cistruct ch_t { 1438c2ecf20Sopenharmony_ci __u16 cyl; 1448c2ecf20Sopenharmony_ci __u16 head; 1458c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_cistruct chr_t { 1488c2ecf20Sopenharmony_ci __u16 cyl; 1498c2ecf20Sopenharmony_ci __u16 head; 1508c2ecf20Sopenharmony_ci __u8 record; 1518c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_cistruct DE_eckd_data { 1548c2ecf20Sopenharmony_ci struct { 1558c2ecf20Sopenharmony_ci unsigned char perm:2; /* Permissions on this extent */ 1568c2ecf20Sopenharmony_ci unsigned char reserved:1; 1578c2ecf20Sopenharmony_ci unsigned char seek:2; /* Seek control */ 1588c2ecf20Sopenharmony_ci unsigned char auth:2; /* Access authorization */ 1598c2ecf20Sopenharmony_ci unsigned char pci:1; /* PCI Fetch mode */ 1608c2ecf20Sopenharmony_ci } __attribute__ ((packed)) mask; 1618c2ecf20Sopenharmony_ci struct { 1628c2ecf20Sopenharmony_ci unsigned char mode:2; /* Architecture mode */ 1638c2ecf20Sopenharmony_ci unsigned char ckd:1; /* CKD Conversion */ 1648c2ecf20Sopenharmony_ci unsigned char operation:3; /* Operation mode */ 1658c2ecf20Sopenharmony_ci unsigned char cfw:1; /* Cache fast write */ 1668c2ecf20Sopenharmony_ci unsigned char dfw:1; /* DASD fast write */ 1678c2ecf20Sopenharmony_ci } __attribute__ ((packed)) attributes; 1688c2ecf20Sopenharmony_ci __u16 blk_size; /* Blocksize */ 1698c2ecf20Sopenharmony_ci __u16 fast_write_id; 1708c2ecf20Sopenharmony_ci __u8 ga_additional; /* Global Attributes Additional */ 1718c2ecf20Sopenharmony_ci __u8 ga_extended; /* Global Attributes Extended */ 1728c2ecf20Sopenharmony_ci struct ch_t beg_ext; 1738c2ecf20Sopenharmony_ci struct ch_t end_ext; 1748c2ecf20Sopenharmony_ci unsigned long ep_sys_time; /* Ext Parameter - System Time Stamp */ 1758c2ecf20Sopenharmony_ci __u8 ep_format; /* Extended Parameter format byte */ 1768c2ecf20Sopenharmony_ci __u8 ep_prio; /* Extended Parameter priority I/O byte */ 1778c2ecf20Sopenharmony_ci __u8 ep_reserved1; /* Extended Parameter Reserved */ 1788c2ecf20Sopenharmony_ci __u8 ep_rec_per_track; /* Number of records on a track */ 1798c2ecf20Sopenharmony_ci __u8 ep_reserved[4]; /* Extended Parameter Reserved */ 1808c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 1818c2ecf20Sopenharmony_ci 1828c2ecf20Sopenharmony_cistruct LO_eckd_data { 1838c2ecf20Sopenharmony_ci struct { 1848c2ecf20Sopenharmony_ci unsigned char orientation:2; 1858c2ecf20Sopenharmony_ci unsigned char operation:6; 1868c2ecf20Sopenharmony_ci } __attribute__ ((packed)) operation; 1878c2ecf20Sopenharmony_ci struct { 1888c2ecf20Sopenharmony_ci unsigned char last_bytes_used:1; 1898c2ecf20Sopenharmony_ci unsigned char reserved:6; 1908c2ecf20Sopenharmony_ci unsigned char read_count_suffix:1; 1918c2ecf20Sopenharmony_ci } __attribute__ ((packed)) auxiliary; 1928c2ecf20Sopenharmony_ci __u8 unused; 1938c2ecf20Sopenharmony_ci __u8 count; 1948c2ecf20Sopenharmony_ci struct ch_t seek_addr; 1958c2ecf20Sopenharmony_ci struct chr_t search_arg; 1968c2ecf20Sopenharmony_ci __u8 sector; 1978c2ecf20Sopenharmony_ci __u16 length; 1988c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_cistruct LRE_eckd_data { 2018c2ecf20Sopenharmony_ci struct { 2028c2ecf20Sopenharmony_ci unsigned char orientation:2; 2038c2ecf20Sopenharmony_ci unsigned char operation:6; 2048c2ecf20Sopenharmony_ci } __attribute__ ((packed)) operation; 2058c2ecf20Sopenharmony_ci struct { 2068c2ecf20Sopenharmony_ci unsigned char length_valid:1; 2078c2ecf20Sopenharmony_ci unsigned char length_scope:1; 2088c2ecf20Sopenharmony_ci unsigned char imbedded_ccw_valid:1; 2098c2ecf20Sopenharmony_ci unsigned char check_bytes:2; 2108c2ecf20Sopenharmony_ci unsigned char imbedded_count_valid:1; 2118c2ecf20Sopenharmony_ci unsigned char reserved:1; 2128c2ecf20Sopenharmony_ci unsigned char read_count_suffix:1; 2138c2ecf20Sopenharmony_ci } __attribute__ ((packed)) auxiliary; 2148c2ecf20Sopenharmony_ci __u8 imbedded_ccw; 2158c2ecf20Sopenharmony_ci __u8 count; 2168c2ecf20Sopenharmony_ci struct ch_t seek_addr; 2178c2ecf20Sopenharmony_ci struct chr_t search_arg; 2188c2ecf20Sopenharmony_ci __u8 sector; 2198c2ecf20Sopenharmony_ci __u16 length; 2208c2ecf20Sopenharmony_ci __u8 imbedded_count; 2218c2ecf20Sopenharmony_ci __u8 extended_operation; 2228c2ecf20Sopenharmony_ci __u16 extended_parameter_length; 2238c2ecf20Sopenharmony_ci __u8 extended_parameter[]; 2248c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci/* Prefix data for format 0x00 and 0x01 */ 2278c2ecf20Sopenharmony_cistruct PFX_eckd_data { 2288c2ecf20Sopenharmony_ci unsigned char format; 2298c2ecf20Sopenharmony_ci struct { 2308c2ecf20Sopenharmony_ci unsigned char define_extent:1; 2318c2ecf20Sopenharmony_ci unsigned char time_stamp:1; 2328c2ecf20Sopenharmony_ci unsigned char verify_base:1; 2338c2ecf20Sopenharmony_ci unsigned char hyper_pav:1; 2348c2ecf20Sopenharmony_ci unsigned char reserved:4; 2358c2ecf20Sopenharmony_ci } __attribute__ ((packed)) validity; 2368c2ecf20Sopenharmony_ci __u8 base_address; 2378c2ecf20Sopenharmony_ci __u8 aux; 2388c2ecf20Sopenharmony_ci __u8 base_lss; 2398c2ecf20Sopenharmony_ci __u8 reserved[7]; 2408c2ecf20Sopenharmony_ci struct DE_eckd_data define_extent; 2418c2ecf20Sopenharmony_ci struct LRE_eckd_data locate_record; 2428c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 2438c2ecf20Sopenharmony_ci 2448c2ecf20Sopenharmony_cistruct dasd_eckd_characteristics { 2458c2ecf20Sopenharmony_ci __u16 cu_type; 2468c2ecf20Sopenharmony_ci struct { 2478c2ecf20Sopenharmony_ci unsigned char support:2; 2488c2ecf20Sopenharmony_ci unsigned char async:1; 2498c2ecf20Sopenharmony_ci unsigned char reserved:1; 2508c2ecf20Sopenharmony_ci unsigned char cache_info:1; 2518c2ecf20Sopenharmony_ci unsigned char model:3; 2528c2ecf20Sopenharmony_ci } __attribute__ ((packed)) cu_model; 2538c2ecf20Sopenharmony_ci __u16 dev_type; 2548c2ecf20Sopenharmony_ci __u8 dev_model; 2558c2ecf20Sopenharmony_ci struct { 2568c2ecf20Sopenharmony_ci unsigned char mult_burst:1; 2578c2ecf20Sopenharmony_ci unsigned char RT_in_LR:1; 2588c2ecf20Sopenharmony_ci unsigned char reserved1:1; 2598c2ecf20Sopenharmony_ci unsigned char RD_IN_LR:1; 2608c2ecf20Sopenharmony_ci unsigned char reserved2:4; 2618c2ecf20Sopenharmony_ci unsigned char reserved3:8; 2628c2ecf20Sopenharmony_ci unsigned char defect_wr:1; 2638c2ecf20Sopenharmony_ci unsigned char XRC_supported:1; 2648c2ecf20Sopenharmony_ci unsigned char reserved4:1; 2658c2ecf20Sopenharmony_ci unsigned char striping:1; 2668c2ecf20Sopenharmony_ci unsigned char reserved5:4; 2678c2ecf20Sopenharmony_ci unsigned char cfw:1; 2688c2ecf20Sopenharmony_ci unsigned char reserved6:2; 2698c2ecf20Sopenharmony_ci unsigned char cache:1; 2708c2ecf20Sopenharmony_ci unsigned char dual_copy:1; 2718c2ecf20Sopenharmony_ci unsigned char dfw:1; 2728c2ecf20Sopenharmony_ci unsigned char reset_alleg:1; 2738c2ecf20Sopenharmony_ci unsigned char sense_down:1; 2748c2ecf20Sopenharmony_ci } __attribute__ ((packed)) facilities; 2758c2ecf20Sopenharmony_ci __u8 dev_class; 2768c2ecf20Sopenharmony_ci __u8 unit_type; 2778c2ecf20Sopenharmony_ci __u16 no_cyl; 2788c2ecf20Sopenharmony_ci __u16 trk_per_cyl; 2798c2ecf20Sopenharmony_ci __u8 sec_per_trk; 2808c2ecf20Sopenharmony_ci __u8 byte_per_track[3]; 2818c2ecf20Sopenharmony_ci __u16 home_bytes; 2828c2ecf20Sopenharmony_ci __u8 formula; 2838c2ecf20Sopenharmony_ci union { 2848c2ecf20Sopenharmony_ci struct { 2858c2ecf20Sopenharmony_ci __u8 f1; 2868c2ecf20Sopenharmony_ci __u16 f2; 2878c2ecf20Sopenharmony_ci __u16 f3; 2888c2ecf20Sopenharmony_ci } __attribute__ ((packed)) f_0x01; 2898c2ecf20Sopenharmony_ci struct { 2908c2ecf20Sopenharmony_ci __u8 f1; 2918c2ecf20Sopenharmony_ci __u8 f2; 2928c2ecf20Sopenharmony_ci __u8 f3; 2938c2ecf20Sopenharmony_ci __u8 f4; 2948c2ecf20Sopenharmony_ci __u8 f5; 2958c2ecf20Sopenharmony_ci } __attribute__ ((packed)) f_0x02; 2968c2ecf20Sopenharmony_ci } __attribute__ ((packed)) factors; 2978c2ecf20Sopenharmony_ci __u16 first_alt_trk; 2988c2ecf20Sopenharmony_ci __u16 no_alt_trk; 2998c2ecf20Sopenharmony_ci __u16 first_dia_trk; 3008c2ecf20Sopenharmony_ci __u16 no_dia_trk; 3018c2ecf20Sopenharmony_ci __u16 first_sup_trk; 3028c2ecf20Sopenharmony_ci __u16 no_sup_trk; 3038c2ecf20Sopenharmony_ci __u8 MDR_ID; 3048c2ecf20Sopenharmony_ci __u8 OBR_ID; 3058c2ecf20Sopenharmony_ci __u8 director; 3068c2ecf20Sopenharmony_ci __u8 rd_trk_set; 3078c2ecf20Sopenharmony_ci __u16 max_rec_zero; 3088c2ecf20Sopenharmony_ci __u8 reserved1; 3098c2ecf20Sopenharmony_ci __u8 RWANY_in_LR; 3108c2ecf20Sopenharmony_ci __u8 factor6; 3118c2ecf20Sopenharmony_ci __u8 factor7; 3128c2ecf20Sopenharmony_ci __u8 factor8; 3138c2ecf20Sopenharmony_ci __u8 reserved2[3]; 3148c2ecf20Sopenharmony_ci __u8 reserved3[6]; 3158c2ecf20Sopenharmony_ci __u32 long_no_cyl; 3168c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_ci/* elements of the configuration data */ 3198c2ecf20Sopenharmony_cistruct dasd_ned { 3208c2ecf20Sopenharmony_ci struct { 3218c2ecf20Sopenharmony_ci __u8 identifier:2; 3228c2ecf20Sopenharmony_ci __u8 token_id:1; 3238c2ecf20Sopenharmony_ci __u8 sno_valid:1; 3248c2ecf20Sopenharmony_ci __u8 subst_sno:1; 3258c2ecf20Sopenharmony_ci __u8 recNED:1; 3268c2ecf20Sopenharmony_ci __u8 emuNED:1; 3278c2ecf20Sopenharmony_ci __u8 reserved:1; 3288c2ecf20Sopenharmony_ci } __attribute__ ((packed)) flags; 3298c2ecf20Sopenharmony_ci __u8 descriptor; 3308c2ecf20Sopenharmony_ci __u8 dev_class; 3318c2ecf20Sopenharmony_ci __u8 reserved; 3328c2ecf20Sopenharmony_ci __u8 dev_type[6]; 3338c2ecf20Sopenharmony_ci __u8 dev_model[3]; 3348c2ecf20Sopenharmony_ci __u8 HDA_manufacturer[3]; 3358c2ecf20Sopenharmony_ci __u8 HDA_location[2]; 3368c2ecf20Sopenharmony_ci __u8 HDA_seqno[12]; 3378c2ecf20Sopenharmony_ci __u8 ID; 3388c2ecf20Sopenharmony_ci __u8 unit_addr; 3398c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_cistruct dasd_sneq { 3428c2ecf20Sopenharmony_ci struct { 3438c2ecf20Sopenharmony_ci __u8 identifier:2; 3448c2ecf20Sopenharmony_ci __u8 reserved:6; 3458c2ecf20Sopenharmony_ci } __attribute__ ((packed)) flags; 3468c2ecf20Sopenharmony_ci __u8 res1; 3478c2ecf20Sopenharmony_ci __u16 format; 3488c2ecf20Sopenharmony_ci __u8 res2[4]; /* byte 4- 7 */ 3498c2ecf20Sopenharmony_ci __u8 sua_flags; /* byte 8 */ 3508c2ecf20Sopenharmony_ci __u8 base_unit_addr; /* byte 9 */ 3518c2ecf20Sopenharmony_ci __u8 res3[22]; /* byte 10-31 */ 3528c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 3538c2ecf20Sopenharmony_ci 3548c2ecf20Sopenharmony_cistruct vd_sneq { 3558c2ecf20Sopenharmony_ci struct { 3568c2ecf20Sopenharmony_ci __u8 identifier:2; 3578c2ecf20Sopenharmony_ci __u8 reserved:6; 3588c2ecf20Sopenharmony_ci } __attribute__ ((packed)) flags; 3598c2ecf20Sopenharmony_ci __u8 res1; 3608c2ecf20Sopenharmony_ci __u16 format; 3618c2ecf20Sopenharmony_ci __u8 res2[4]; /* byte 4- 7 */ 3628c2ecf20Sopenharmony_ci __u8 uit[16]; /* byte 8-23 */ 3638c2ecf20Sopenharmony_ci __u8 res3[8]; /* byte 24-31 */ 3648c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_cistruct dasd_gneq { 3678c2ecf20Sopenharmony_ci struct { 3688c2ecf20Sopenharmony_ci __u8 identifier:2; 3698c2ecf20Sopenharmony_ci __u8 reserved:6; 3708c2ecf20Sopenharmony_ci } __attribute__ ((packed)) flags; 3718c2ecf20Sopenharmony_ci __u8 record_selector; 3728c2ecf20Sopenharmony_ci __u8 reserved[4]; 3738c2ecf20Sopenharmony_ci struct { 3748c2ecf20Sopenharmony_ci __u8 value:2; 3758c2ecf20Sopenharmony_ci __u8 number:6; 3768c2ecf20Sopenharmony_ci } __attribute__ ((packed)) timeout; 3778c2ecf20Sopenharmony_ci __u8 reserved3; 3788c2ecf20Sopenharmony_ci __u16 subsystemID; 3798c2ecf20Sopenharmony_ci __u8 reserved2[22]; 3808c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_cistruct dasd_rssd_features { 3838c2ecf20Sopenharmony_ci char feature[256]; 3848c2ecf20Sopenharmony_ci} __attribute__((packed)); 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_cistruct dasd_rssd_messages { 3878c2ecf20Sopenharmony_ci __u16 length; 3888c2ecf20Sopenharmony_ci __u8 format; 3898c2ecf20Sopenharmony_ci __u8 code; 3908c2ecf20Sopenharmony_ci __u32 message_id; 3918c2ecf20Sopenharmony_ci __u8 flags; 3928c2ecf20Sopenharmony_ci char messages[4087]; 3938c2ecf20Sopenharmony_ci} __packed; 3948c2ecf20Sopenharmony_ci 3958c2ecf20Sopenharmony_ci/* 3968c2ecf20Sopenharmony_ci * Read Subsystem Data - Volume Storage Query 3978c2ecf20Sopenharmony_ci */ 3988c2ecf20Sopenharmony_cistruct dasd_rssd_vsq { 3998c2ecf20Sopenharmony_ci struct { 4008c2ecf20Sopenharmony_ci __u8 tse:1; 4018c2ecf20Sopenharmony_ci __u8 space_not_available:1; 4028c2ecf20Sopenharmony_ci __u8 ese:1; 4038c2ecf20Sopenharmony_ci __u8 unused:5; 4048c2ecf20Sopenharmony_ci } __packed vol_info; 4058c2ecf20Sopenharmony_ci __u8 unused1; 4068c2ecf20Sopenharmony_ci __u16 extent_pool_id; 4078c2ecf20Sopenharmony_ci __u8 warn_cap_limit; 4088c2ecf20Sopenharmony_ci __u8 warn_cap_guaranteed; 4098c2ecf20Sopenharmony_ci __u16 unused2; 4108c2ecf20Sopenharmony_ci __u32 limit_capacity; 4118c2ecf20Sopenharmony_ci __u32 guaranteed_capacity; 4128c2ecf20Sopenharmony_ci __u32 space_allocated; 4138c2ecf20Sopenharmony_ci __u32 space_configured; 4148c2ecf20Sopenharmony_ci __u32 logical_capacity; 4158c2ecf20Sopenharmony_ci} __packed; 4168c2ecf20Sopenharmony_ci 4178c2ecf20Sopenharmony_ci/* 4188c2ecf20Sopenharmony_ci * Extent Pool Summary 4198c2ecf20Sopenharmony_ci */ 4208c2ecf20Sopenharmony_cistruct dasd_ext_pool_sum { 4218c2ecf20Sopenharmony_ci __u16 pool_id; 4228c2ecf20Sopenharmony_ci __u8 repo_warn_thrshld; 4238c2ecf20Sopenharmony_ci __u8 warn_thrshld; 4248c2ecf20Sopenharmony_ci struct { 4258c2ecf20Sopenharmony_ci __u8 type:1; /* 0 - CKD / 1 - FB */ 4268c2ecf20Sopenharmony_ci __u8 track_space_efficient:1; 4278c2ecf20Sopenharmony_ci __u8 extent_space_efficient:1; 4288c2ecf20Sopenharmony_ci __u8 standard_volume:1; 4298c2ecf20Sopenharmony_ci __u8 extent_size_valid:1; 4308c2ecf20Sopenharmony_ci __u8 capacity_at_warnlevel:1; 4318c2ecf20Sopenharmony_ci __u8 pool_oos:1; 4328c2ecf20Sopenharmony_ci __u8 unused0:1; 4338c2ecf20Sopenharmony_ci __u8 unused1; 4348c2ecf20Sopenharmony_ci } __packed flags; 4358c2ecf20Sopenharmony_ci struct { 4368c2ecf20Sopenharmony_ci __u8 reserved0:1; 4378c2ecf20Sopenharmony_ci __u8 size_1G:1; 4388c2ecf20Sopenharmony_ci __u8 reserved1:5; 4398c2ecf20Sopenharmony_ci __u8 size_16M:1; 4408c2ecf20Sopenharmony_ci } __packed extent_size; 4418c2ecf20Sopenharmony_ci __u8 unused; 4428c2ecf20Sopenharmony_ci} __packed; 4438c2ecf20Sopenharmony_ci 4448c2ecf20Sopenharmony_ci/* 4458c2ecf20Sopenharmony_ci * Read Subsystem Data-Response - Logical Configuration Query - Header 4468c2ecf20Sopenharmony_ci */ 4478c2ecf20Sopenharmony_cistruct dasd_rssd_lcq { 4488c2ecf20Sopenharmony_ci __u16 data_length; /* Length of data returned */ 4498c2ecf20Sopenharmony_ci __u16 pool_count; /* Count of extent pools returned - Max: 448 */ 4508c2ecf20Sopenharmony_ci struct { 4518c2ecf20Sopenharmony_ci __u8 pool_info_valid:1; /* Detailed Information valid */ 4528c2ecf20Sopenharmony_ci __u8 pool_id_volume:1; 4538c2ecf20Sopenharmony_ci __u8 pool_id_cec:1; 4548c2ecf20Sopenharmony_ci __u8 unused0:5; 4558c2ecf20Sopenharmony_ci __u8 unused1; 4568c2ecf20Sopenharmony_ci } __packed header_flags; 4578c2ecf20Sopenharmony_ci char sfi_type[6]; /* Storage Facility Image Type (EBCDIC) */ 4588c2ecf20Sopenharmony_ci char sfi_model[3]; /* Storage Facility Image Model (EBCDIC) */ 4598c2ecf20Sopenharmony_ci __u8 sfi_seq_num[10]; /* Storage Facility Image Sequence Number */ 4608c2ecf20Sopenharmony_ci __u8 reserved[7]; 4618c2ecf20Sopenharmony_ci struct dasd_ext_pool_sum ext_pool_sum[448]; 4628c2ecf20Sopenharmony_ci} __packed; 4638c2ecf20Sopenharmony_ci 4648c2ecf20Sopenharmony_cistruct dasd_oos_message { 4658c2ecf20Sopenharmony_ci __u16 length; 4668c2ecf20Sopenharmony_ci __u8 format; 4678c2ecf20Sopenharmony_ci __u8 code; 4688c2ecf20Sopenharmony_ci __u8 percentage_empty; 4698c2ecf20Sopenharmony_ci __u8 reserved; 4708c2ecf20Sopenharmony_ci __u16 ext_pool_id; 4718c2ecf20Sopenharmony_ci __u16 token; 4728c2ecf20Sopenharmony_ci __u8 unused[6]; 4738c2ecf20Sopenharmony_ci} __packed; 4748c2ecf20Sopenharmony_ci 4758c2ecf20Sopenharmony_cistruct dasd_cuir_message { 4768c2ecf20Sopenharmony_ci __u16 length; 4778c2ecf20Sopenharmony_ci __u8 format; 4788c2ecf20Sopenharmony_ci __u8 code; 4798c2ecf20Sopenharmony_ci __u32 message_id; 4808c2ecf20Sopenharmony_ci __u8 flags; 4818c2ecf20Sopenharmony_ci __u8 neq_map[3]; 4828c2ecf20Sopenharmony_ci __u8 ned_map; 4838c2ecf20Sopenharmony_ci __u8 record_selector; 4848c2ecf20Sopenharmony_ci} __packed; 4858c2ecf20Sopenharmony_ci 4868c2ecf20Sopenharmony_cistruct dasd_psf_cuir_response { 4878c2ecf20Sopenharmony_ci __u8 order; 4888c2ecf20Sopenharmony_ci __u8 flags; 4898c2ecf20Sopenharmony_ci __u8 cc; 4908c2ecf20Sopenharmony_ci __u8 chpid; 4918c2ecf20Sopenharmony_ci __u16 device_nr; 4928c2ecf20Sopenharmony_ci __u16 reserved; 4938c2ecf20Sopenharmony_ci __u32 message_id; 4948c2ecf20Sopenharmony_ci __u64 system_id; 4958c2ecf20Sopenharmony_ci __u8 cssid; 4968c2ecf20Sopenharmony_ci __u8 ssid; 4978c2ecf20Sopenharmony_ci} __packed; 4988c2ecf20Sopenharmony_ci 4998c2ecf20Sopenharmony_cistruct dasd_ckd_path_group_entry { 5008c2ecf20Sopenharmony_ci __u8 status_flags; 5018c2ecf20Sopenharmony_ci __u8 pgid[11]; 5028c2ecf20Sopenharmony_ci __u8 sysplex_name[8]; 5038c2ecf20Sopenharmony_ci __u32 timestamp; 5048c2ecf20Sopenharmony_ci __u32 cylinder; 5058c2ecf20Sopenharmony_ci __u8 reserved[4]; 5068c2ecf20Sopenharmony_ci} __packed; 5078c2ecf20Sopenharmony_ci 5088c2ecf20Sopenharmony_cistruct dasd_ckd_host_information { 5098c2ecf20Sopenharmony_ci __u8 access_flags; 5108c2ecf20Sopenharmony_ci __u8 entry_size; 5118c2ecf20Sopenharmony_ci __u16 entry_count; 5128c2ecf20Sopenharmony_ci __u8 entry[16390]; 5138c2ecf20Sopenharmony_ci} __packed; 5148c2ecf20Sopenharmony_ci 5158c2ecf20Sopenharmony_cistruct dasd_psf_query_host_access { 5168c2ecf20Sopenharmony_ci __u8 access_flag; 5178c2ecf20Sopenharmony_ci __u8 version; 5188c2ecf20Sopenharmony_ci __u16 CKD_length; 5198c2ecf20Sopenharmony_ci __u16 SCSI_length; 5208c2ecf20Sopenharmony_ci __u8 unused[10]; 5218c2ecf20Sopenharmony_ci __u8 host_access_information[16394]; 5228c2ecf20Sopenharmony_ci} __packed; 5238c2ecf20Sopenharmony_ci 5248c2ecf20Sopenharmony_ci/* 5258c2ecf20Sopenharmony_ci * Perform Subsystem Function - Prepare for Read Subsystem Data 5268c2ecf20Sopenharmony_ci */ 5278c2ecf20Sopenharmony_cistruct dasd_psf_prssd_data { 5288c2ecf20Sopenharmony_ci unsigned char order; 5298c2ecf20Sopenharmony_ci unsigned char flags; 5308c2ecf20Sopenharmony_ci unsigned char reserved1; 5318c2ecf20Sopenharmony_ci unsigned char reserved2; 5328c2ecf20Sopenharmony_ci unsigned char lss; 5338c2ecf20Sopenharmony_ci unsigned char volume; 5348c2ecf20Sopenharmony_ci unsigned char suborder; 5358c2ecf20Sopenharmony_ci unsigned char varies[5]; 5368c2ecf20Sopenharmony_ci} __attribute__ ((packed)); 5378c2ecf20Sopenharmony_ci 5388c2ecf20Sopenharmony_ci/* 5398c2ecf20Sopenharmony_ci * Perform Subsystem Function - Set Subsystem Characteristics 5408c2ecf20Sopenharmony_ci */ 5418c2ecf20Sopenharmony_cistruct dasd_psf_ssc_data { 5428c2ecf20Sopenharmony_ci unsigned char order; 5438c2ecf20Sopenharmony_ci unsigned char flags; 5448c2ecf20Sopenharmony_ci unsigned char cu_type[4]; 5458c2ecf20Sopenharmony_ci unsigned char suborder; 5468c2ecf20Sopenharmony_ci unsigned char reserved[59]; 5478c2ecf20Sopenharmony_ci} __attribute__((packed)); 5488c2ecf20Sopenharmony_ci 5498c2ecf20Sopenharmony_ci/* Maximum number of extents for a single Release Allocated Space command */ 5508c2ecf20Sopenharmony_ci#define DASD_ECKD_RAS_EXTS_MAX 110U 5518c2ecf20Sopenharmony_ci 5528c2ecf20Sopenharmony_cistruct dasd_dso_ras_ext_range { 5538c2ecf20Sopenharmony_ci struct ch_t beg_ext; 5548c2ecf20Sopenharmony_ci struct ch_t end_ext; 5558c2ecf20Sopenharmony_ci} __packed; 5568c2ecf20Sopenharmony_ci 5578c2ecf20Sopenharmony_ci/* 5588c2ecf20Sopenharmony_ci * Define Subsytem Operation - Release Allocated Space 5598c2ecf20Sopenharmony_ci */ 5608c2ecf20Sopenharmony_cistruct dasd_dso_ras_data { 5618c2ecf20Sopenharmony_ci __u8 order; 5628c2ecf20Sopenharmony_ci struct { 5638c2ecf20Sopenharmony_ci __u8 message:1; /* Must be zero */ 5648c2ecf20Sopenharmony_ci __u8 reserved1:2; 5658c2ecf20Sopenharmony_ci __u8 vol_type:1; /* 0 - CKD/FBA, 1 - FB */ 5668c2ecf20Sopenharmony_ci __u8 reserved2:4; 5678c2ecf20Sopenharmony_ci } __packed flags; 5688c2ecf20Sopenharmony_ci /* Operation Flags to specify scope */ 5698c2ecf20Sopenharmony_ci struct { 5708c2ecf20Sopenharmony_ci __u8 reserved1:2; 5718c2ecf20Sopenharmony_ci /* Release Space by Extent */ 5728c2ecf20Sopenharmony_ci __u8 by_extent:1; /* 0 - entire volume, 1 - specified extents */ 5738c2ecf20Sopenharmony_ci __u8 guarantee_init:1; 5748c2ecf20Sopenharmony_ci __u8 force_release:1; /* Internal - will be ignored */ 5758c2ecf20Sopenharmony_ci __u16 reserved2:11; 5768c2ecf20Sopenharmony_ci } __packed op_flags; 5778c2ecf20Sopenharmony_ci __u8 lss; 5788c2ecf20Sopenharmony_ci __u8 dev_addr; 5798c2ecf20Sopenharmony_ci __u32 reserved1; 5808c2ecf20Sopenharmony_ci __u8 reserved2[10]; 5818c2ecf20Sopenharmony_ci __u16 nr_exts; /* Defines number of ext_scope - max 110 */ 5828c2ecf20Sopenharmony_ci __u16 reserved3; 5838c2ecf20Sopenharmony_ci} __packed; 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ci 5868c2ecf20Sopenharmony_ci/* 5878c2ecf20Sopenharmony_ci * some structures and definitions for alias handling 5888c2ecf20Sopenharmony_ci */ 5898c2ecf20Sopenharmony_cistruct dasd_unit_address_configuration { 5908c2ecf20Sopenharmony_ci struct { 5918c2ecf20Sopenharmony_ci char ua_type; 5928c2ecf20Sopenharmony_ci char base_ua; 5938c2ecf20Sopenharmony_ci } unit[256]; 5948c2ecf20Sopenharmony_ci} __attribute__((packed)); 5958c2ecf20Sopenharmony_ci 5968c2ecf20Sopenharmony_ci 5978c2ecf20Sopenharmony_ci#define MAX_DEVICES_PER_LCU 256 5988c2ecf20Sopenharmony_ci 5998c2ecf20Sopenharmony_ci/* flags on the LCU */ 6008c2ecf20Sopenharmony_ci#define NEED_UAC_UPDATE 0x01 6018c2ecf20Sopenharmony_ci#define UPDATE_PENDING 0x02 6028c2ecf20Sopenharmony_ci 6038c2ecf20Sopenharmony_cienum pavtype {NO_PAV, BASE_PAV, HYPER_PAV}; 6048c2ecf20Sopenharmony_ci 6058c2ecf20Sopenharmony_ci 6068c2ecf20Sopenharmony_cistruct alias_root { 6078c2ecf20Sopenharmony_ci struct list_head serverlist; 6088c2ecf20Sopenharmony_ci spinlock_t lock; 6098c2ecf20Sopenharmony_ci}; 6108c2ecf20Sopenharmony_ci 6118c2ecf20Sopenharmony_cistruct alias_server { 6128c2ecf20Sopenharmony_ci struct list_head server; 6138c2ecf20Sopenharmony_ci struct dasd_uid uid; 6148c2ecf20Sopenharmony_ci struct list_head lculist; 6158c2ecf20Sopenharmony_ci}; 6168c2ecf20Sopenharmony_ci 6178c2ecf20Sopenharmony_cistruct summary_unit_check_work_data { 6188c2ecf20Sopenharmony_ci char reason; 6198c2ecf20Sopenharmony_ci struct dasd_device *device; 6208c2ecf20Sopenharmony_ci struct work_struct worker; 6218c2ecf20Sopenharmony_ci}; 6228c2ecf20Sopenharmony_ci 6238c2ecf20Sopenharmony_cistruct read_uac_work_data { 6248c2ecf20Sopenharmony_ci struct dasd_device *device; 6258c2ecf20Sopenharmony_ci struct delayed_work dwork; 6268c2ecf20Sopenharmony_ci}; 6278c2ecf20Sopenharmony_ci 6288c2ecf20Sopenharmony_cistruct alias_lcu { 6298c2ecf20Sopenharmony_ci struct list_head lcu; 6308c2ecf20Sopenharmony_ci struct dasd_uid uid; 6318c2ecf20Sopenharmony_ci enum pavtype pav; 6328c2ecf20Sopenharmony_ci char flags; 6338c2ecf20Sopenharmony_ci spinlock_t lock; 6348c2ecf20Sopenharmony_ci struct list_head grouplist; 6358c2ecf20Sopenharmony_ci struct list_head active_devices; 6368c2ecf20Sopenharmony_ci struct list_head inactive_devices; 6378c2ecf20Sopenharmony_ci struct dasd_unit_address_configuration *uac; 6388c2ecf20Sopenharmony_ci struct summary_unit_check_work_data suc_data; 6398c2ecf20Sopenharmony_ci struct read_uac_work_data ruac_data; 6408c2ecf20Sopenharmony_ci struct dasd_ccw_req *rsu_cqr; 6418c2ecf20Sopenharmony_ci struct completion lcu_setup; 6428c2ecf20Sopenharmony_ci}; 6438c2ecf20Sopenharmony_ci 6448c2ecf20Sopenharmony_cistruct alias_pav_group { 6458c2ecf20Sopenharmony_ci struct list_head group; 6468c2ecf20Sopenharmony_ci struct dasd_uid uid; 6478c2ecf20Sopenharmony_ci struct alias_lcu *lcu; 6488c2ecf20Sopenharmony_ci struct list_head baselist; 6498c2ecf20Sopenharmony_ci struct list_head aliaslist; 6508c2ecf20Sopenharmony_ci struct dasd_device *next; 6518c2ecf20Sopenharmony_ci}; 6528c2ecf20Sopenharmony_ci 6538c2ecf20Sopenharmony_cistruct dasd_conf_data { 6548c2ecf20Sopenharmony_ci struct dasd_ned neds[5]; 6558c2ecf20Sopenharmony_ci u8 reserved[64]; 6568c2ecf20Sopenharmony_ci struct dasd_gneq gneq; 6578c2ecf20Sopenharmony_ci} __packed; 6588c2ecf20Sopenharmony_ci 6598c2ecf20Sopenharmony_cistruct dasd_eckd_private { 6608c2ecf20Sopenharmony_ci struct dasd_eckd_characteristics rdc_data; 6618c2ecf20Sopenharmony_ci u8 *conf_data; 6628c2ecf20Sopenharmony_ci int conf_len; 6638c2ecf20Sopenharmony_ci 6648c2ecf20Sopenharmony_ci /* pointers to specific parts in the conf_data */ 6658c2ecf20Sopenharmony_ci struct dasd_ned *ned; 6668c2ecf20Sopenharmony_ci struct dasd_sneq *sneq; 6678c2ecf20Sopenharmony_ci struct vd_sneq *vdsneq; 6688c2ecf20Sopenharmony_ci struct dasd_gneq *gneq; 6698c2ecf20Sopenharmony_ci 6708c2ecf20Sopenharmony_ci struct eckd_count count_area[5]; 6718c2ecf20Sopenharmony_ci int init_cqr_status; 6728c2ecf20Sopenharmony_ci int uses_cdl; 6738c2ecf20Sopenharmony_ci struct attrib_data_t attrib; /* e.g. cache operations */ 6748c2ecf20Sopenharmony_ci struct dasd_rssd_features features; 6758c2ecf20Sopenharmony_ci struct dasd_rssd_vsq vsq; 6768c2ecf20Sopenharmony_ci struct dasd_ext_pool_sum eps; 6778c2ecf20Sopenharmony_ci u32 real_cyl; 6788c2ecf20Sopenharmony_ci 6798c2ecf20Sopenharmony_ci /* alias managemnet */ 6808c2ecf20Sopenharmony_ci struct dasd_uid uid; 6818c2ecf20Sopenharmony_ci struct alias_pav_group *pavgroup; 6828c2ecf20Sopenharmony_ci struct alias_lcu *lcu; 6838c2ecf20Sopenharmony_ci int count; 6848c2ecf20Sopenharmony_ci 6858c2ecf20Sopenharmony_ci u32 fcx_max_data; 6868c2ecf20Sopenharmony_ci char suc_reason; 6878c2ecf20Sopenharmony_ci}; 6888c2ecf20Sopenharmony_ci 6898c2ecf20Sopenharmony_ci 6908c2ecf20Sopenharmony_ci 6918c2ecf20Sopenharmony_ciint dasd_alias_make_device_known_to_lcu(struct dasd_device *); 6928c2ecf20Sopenharmony_civoid dasd_alias_disconnect_device_from_lcu(struct dasd_device *); 6938c2ecf20Sopenharmony_ciint dasd_alias_add_device(struct dasd_device *); 6948c2ecf20Sopenharmony_ciint dasd_alias_remove_device(struct dasd_device *); 6958c2ecf20Sopenharmony_cistruct dasd_device *dasd_alias_get_start_dev(struct dasd_device *); 6968c2ecf20Sopenharmony_civoid dasd_alias_handle_summary_unit_check(struct work_struct *); 6978c2ecf20Sopenharmony_civoid dasd_eckd_reset_ccw_to_base_io(struct dasd_ccw_req *); 6988c2ecf20Sopenharmony_ciint dasd_alias_update_add_device(struct dasd_device *); 6998c2ecf20Sopenharmony_ci#endif /* DASD_ECKD_H */ 700