Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/s390/include/uapi/asm/ipl.h
26481 views
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
209
210