]> Git Repo - linux.git/blob - arch/s390/include/uapi/asm/ipl.h
scsi: zfcp: Trace when request remove fails after qdio send fails
[linux.git] / arch / s390 / include / uapi / asm / ipl.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _ASM_S390_UAPI_IPL_H
3 #define _ASM_S390_UAPI_IPL_H
4
5 #include <linux/types.h>
6
7 /* IPL Parameter List header */
8 struct ipl_pl_hdr {
9         __u32 len;
10         __u8  flags;
11         __u8  reserved1[2];
12         __u8  version;
13 } __packed;
14
15 #define IPL_PL_FLAG_IPLPS       0x80
16 #define IPL_PL_FLAG_SIPL        0x40
17 #define IPL_PL_FLAG_IPLSR       0x20
18
19 /* IPL Parameter Block header */
20 struct ipl_pb_hdr {
21         __u32 len;
22         __u8  pbt;
23 } __packed;
24
25 /* IPL Parameter Block types */
26 enum ipl_pbt {
27         IPL_PBT_FCP = 0,
28         IPL_PBT_SCP_DATA = 1,
29         IPL_PBT_CCW = 2,
30         IPL_PBT_ECKD = 3,
31         IPL_PBT_NVME = 4,
32 };
33
34 /* IPL Parameter Block 0 with common fields */
35 struct ipl_pb0_common {
36         __u32 len;
37         __u8  pbt;
38         __u8  flags;
39         __u8  reserved1[2];
40         __u8  loadparm[8];
41         __u8  reserved2[84];
42 } __packed;
43
44 #define IPL_PB0_FLAG_LOADPARM   0x80
45
46 /* IPL Parameter Block 0 for FCP */
47 struct ipl_pb0_fcp {
48         __u32 len;
49         __u8  pbt;
50         __u8  reserved1[3];
51         __u8  loadparm[8];
52         __u8  reserved2[304];
53         __u8  opt;
54         __u8  reserved3[3];
55         __u8  cssid;
56         __u8  reserved4[1];
57         __u16 devno;
58         __u8  reserved5[4];
59         __u64 wwpn;
60         __u64 lun;
61         __u32 bootprog;
62         __u8  reserved6[12];
63         __u64 br_lba;
64         __u32 scp_data_len;
65         __u8  reserved7[260];
66         __u8  scp_data[];
67 } __packed;
68
69 #define IPL_PB0_FCP_OPT_IPL     0x10
70 #define IPL_PB0_FCP_OPT_DUMP    0x20
71
72 /* IPL Parameter Block 0 for NVMe */
73 struct ipl_pb0_nvme {
74         __u32 len;
75         __u8  pbt;
76         __u8  reserved1[3];
77         __u8  loadparm[8];
78         __u8  reserved2[304];
79         __u8  opt;
80         __u8  reserved3[3];
81         __u32 fid;
82         __u8 reserved4[12];
83         __u32 nsid;
84         __u8 reserved5[4];
85         __u32 bootprog;
86         __u8 reserved6[12];
87         __u64 br_lba;
88         __u32 scp_data_len;
89         __u8  reserved7[260];
90         __u8  scp_data[];
91 } __packed;
92
93 #define IPL_PB0_NVME_OPT_IPL    0x10
94 #define IPL_PB0_NVME_OPT_DUMP   0x20
95
96 /* IPL Parameter Block 0 for CCW */
97 struct ipl_pb0_ccw {
98         __u32 len;
99         __u8  pbt;
100         __u8  flags;
101         __u8  reserved1[2];
102         __u8  loadparm[8];
103         __u8  reserved2[84];
104         __u16 reserved3 : 13;
105         __u8  ssid : 3;
106         __u16 devno;
107         __u8  vm_flags;
108         __u8  reserved4[3];
109         __u32 vm_parm_len;
110         __u8  nss_name[8];
111         __u8  vm_parm[64];
112         __u8  reserved5[8];
113 } __packed;
114
115 /* IPL Parameter Block 0 for ECKD */
116 struct ipl_pb0_eckd {
117         __u32 len;
118         __u8  pbt;
119         __u8  reserved1[3];
120         __u32 reserved2[78];
121         __u8  opt;
122         __u8  reserved4[4];
123         __u8  reserved5:5;
124         __u8  ssid:3;
125         __u16 devno;
126         __u32 reserved6[5];
127         __u32 bootprog;
128         __u8  reserved7[12];
129         struct {
130                 __u16 cyl;
131                 __u8 head;
132                 __u8 record;
133                 __u32 reserved;
134         } br_chr __packed;
135         __u32 scp_data_len;
136         __u8  reserved8[260];
137         __u8  scp_data[];
138 } __packed;
139
140 #define IPL_PB0_ECKD_OPT_IPL    0x10
141 #define IPL_PB0_ECKD_OPT_DUMP   0x20
142
143 #define IPL_PB0_CCW_VM_FLAG_NSS         0x80
144 #define IPL_PB0_CCW_VM_FLAG_VP          0x40
145
146 /* IPL Parameter Block 1 for additional SCP data */
147 struct ipl_pb1_scp_data {
148         __u32 len;
149         __u8  pbt;
150         __u8  scp_data[];
151 } __packed;
152
153 /* IPL Report List header */
154 struct ipl_rl_hdr {
155         __u32 len;
156         __u8  flags;
157         __u8  reserved1[2];
158         __u8  version;
159         __u8  reserved2[8];
160 } __packed;
161
162 /* IPL Report Block header */
163 struct ipl_rb_hdr {
164         __u32 len;
165         __u8  rbt;
166         __u8  reserved1[11];
167 } __packed;
168
169 /* IPL Report Block types */
170 enum ipl_rbt {
171         IPL_RBT_CERTIFICATES = 1,
172         IPL_RBT_COMPONENTS = 2,
173 };
174
175 /* IPL Report Block for the certificate list */
176 struct ipl_rb_certificate_entry {
177         __u64 addr;
178         __u64 len;
179 } __packed;
180
181 struct ipl_rb_certificates {
182         __u32 len;
183         __u8  rbt;
184         __u8  reserved1[11];
185         struct ipl_rb_certificate_entry entries[];
186 } __packed;
187
188 /* IPL Report Block for the component list */
189 struct ipl_rb_component_entry {
190         __u64 addr;
191         __u64 len;
192         __u8  flags;
193         __u8  reserved1[5];
194         __u16 certificate_index;
195         __u8  reserved2[8];
196 };
197
198 #define IPL_RB_COMPONENT_FLAG_SIGNED    0x80
199 #define IPL_RB_COMPONENT_FLAG_VERIFIED  0x40
200
201 struct ipl_rb_components {
202         __u32 len;
203         __u8  rbt;
204         __u8  reserved1[11];
205         struct ipl_rb_component_entry entries[];
206 } __packed;
207
208 #endif
This page took 0.044458 seconds and 4 git commands to generate.