cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tape_3590.h (3757B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *    tape device discipline for 3590 tapes.
      4 *
      5 *    Copyright IBM Corp. 2001, 2006
      6 *    Author(s): Stefan Bader <shbader@de.ibm.com>
      7 *		 Michael Holzheu <holzheu@de.ibm.com>
      8 *		 Martin Schwidefsky <schwidefsky@de.ibm.com>
      9 */
     10
     11#ifndef _TAPE_3590_H
     12#define _TAPE_3590_H
     13
     14#define MEDIUM_SENSE	0xc2
     15#define READ_PREVIOUS	0x0a
     16#define MODE_SENSE	0xcf
     17#define PERFORM_SS_FUNC 0x77
     18#define READ_SS_DATA	0x3e
     19
     20#define PREP_RD_SS_DATA 0x18
     21#define RD_ATTMSG	0x3
     22
     23#define SENSE_BRA_PER  0
     24#define SENSE_BRA_CONT 1
     25#define SENSE_BRA_RE   2
     26#define SENSE_BRA_DRE  3
     27
     28#define SENSE_FMT_LIBRARY	0x23
     29#define SENSE_FMT_UNSOLICITED	0x40
     30#define SENSE_FMT_COMMAND_REJ	0x41
     31#define SENSE_FMT_COMMAND_EXEC0 0x50
     32#define SENSE_FMT_COMMAND_EXEC1 0x51
     33#define SENSE_FMT_EVENT0	0x60
     34#define SENSE_FMT_EVENT1	0x61
     35#define SENSE_FMT_MIM		0x70
     36#define SENSE_FMT_SIM		0x71
     37
     38#define MSENSE_UNASSOCIATED	 0x00
     39#define MSENSE_ASSOCIATED_MOUNT	 0x01
     40#define MSENSE_ASSOCIATED_UMOUNT 0x02
     41#define MSENSE_CRYPT_MASK	 0x00000010
     42
     43#define TAPE_3590_MAX_MSG	 0xb0
     44
     45/* Datatypes */
     46
     47struct tape_3590_disc_data {
     48	struct tape390_crypt_info crypt_info;
     49	int read_back_op;
     50};
     51
     52#define TAPE_3590_CRYPT_INFO(device) \
     53	((struct tape_3590_disc_data*)(device->discdata))->crypt_info
     54#define TAPE_3590_READ_BACK_OP(device) \
     55	((struct tape_3590_disc_data*)(device->discdata))->read_back_op
     56
     57struct tape_3590_sense {
     58
     59	unsigned int command_rej:1;
     60	unsigned int interv_req:1;
     61	unsigned int bus_out_check:1;
     62	unsigned int eq_check:1;
     63	unsigned int data_check:1;
     64	unsigned int overrun:1;
     65	unsigned int def_unit_check:1;
     66	unsigned int assgnd_elsew:1;
     67
     68	unsigned int locate_fail:1;
     69	unsigned int inst_online:1;
     70	unsigned int reserved:1;
     71	unsigned int blk_seq_err:1;
     72	unsigned int begin_part:1;
     73	unsigned int wr_mode:1;
     74	unsigned int wr_prot:1;
     75	unsigned int not_cap:1;
     76
     77	unsigned int bra:2;
     78	unsigned int lc:3;
     79	unsigned int vlf_active:1;
     80	unsigned int stm:1;
     81	unsigned int med_pos:1;
     82
     83	unsigned int rac:8;
     84
     85	unsigned int rc_rqc:16;
     86
     87	unsigned int mc:8;
     88
     89	unsigned int sense_fmt:8;
     90
     91	union {
     92		struct {
     93			unsigned int emc:4;
     94			unsigned int smc:4;
     95			unsigned int sev:2;
     96			unsigned int reserved:6;
     97			unsigned int md:8;
     98			unsigned int refcode:8;
     99			unsigned int mid:16;
    100			unsigned int mp:16;
    101			unsigned char volid[6];
    102			unsigned int fid:8;
    103		} f70;
    104		struct {
    105			unsigned int emc:4;
    106			unsigned int smc:4;
    107			unsigned int sev:2;
    108			unsigned int reserved1:5;
    109			unsigned int mdf:1;
    110			unsigned char md[3];
    111			unsigned int simid:8;
    112			unsigned int uid:16;
    113			unsigned int refcode1:16;
    114			unsigned int refcode2:16;
    115			unsigned int refcode3:16;
    116			unsigned int reserved2:8;
    117		} f71;
    118		unsigned char data[14];
    119	} fmt;
    120	unsigned char pad[10];
    121
    122} __attribute__ ((packed));
    123
    124struct tape_3590_med_sense {
    125	unsigned int macst:4;
    126	unsigned int masst:4;
    127	char pad1[7];
    128	unsigned int flags;
    129	char pad2[116];
    130} __attribute__ ((packed));
    131
    132struct tape_3590_rdc_data {
    133	char data[64];
    134} __attribute__ ((packed));
    135
    136/* Datastructures for 3592 encryption support */
    137
    138struct tape3592_kekl {
    139	__u8 flags;
    140	char label[64];
    141} __attribute__ ((packed));
    142
    143struct tape3592_kekl_pair {
    144	__u8 count;
    145	struct tape3592_kekl kekl[2];
    146} __attribute__ ((packed));
    147
    148struct tape3592_kekl_query_data {
    149	__u16 len;
    150	__u8  fmt;
    151	__u8  mc;
    152	__u32 id;
    153	__u8  flags;
    154	struct tape3592_kekl_pair kekls;
    155	char reserved[116];
    156} __attribute__ ((packed));
    157
    158struct tape3592_kekl_query_order {
    159	__u8 code;
    160	__u8 flags;
    161	char reserved1[2];
    162	__u8 max_count;
    163	char reserved2[35];
    164} __attribute__ ((packed));
    165
    166struct tape3592_kekl_set_order {
    167	__u8 code;
    168	__u8 flags;
    169	char reserved1[2];
    170	__u8 op;
    171	struct tape3592_kekl_pair kekls;
    172	char reserved2[120];
    173} __attribute__ ((packed));
    174
    175#endif /* _TAPE_3590_H */