WIP FPC-III support
[linux/fpc-iii.git] / arch / s390 / include / uapi / asm / ipl.h
blobd1ecd5d722a0a3ecb4308f5904e810f6e3584b05
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
5 #include <linux/types.h>
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;
15 #define IPL_PL_FLAG_IPLPS 0x80
16 #define IPL_PL_FLAG_SIPL 0x40
17 #define IPL_PL_FLAG_IPLSR 0x20
19 /* IPL Parameter Block header */
20 struct ipl_pb_hdr {
21 __u32 len;
22 __u8 pbt;
23 } __packed;
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_NVME = 4,
33 /* IPL Parameter Block 0 with common fields */
34 struct ipl_pb0_common {
35 __u32 len;
36 __u8 pbt;
37 __u8 flags;
38 __u8 reserved1[2];
39 __u8 loadparm[8];
40 __u8 reserved2[84];
41 } __packed;
43 #define IPL_PB0_FLAG_LOADPARM 0x80
45 /* IPL Parameter Block 0 for FCP */
46 struct ipl_pb0_fcp {
47 __u32 len;
48 __u8 pbt;
49 __u8 reserved1[3];
50 __u8 loadparm[8];
51 __u8 reserved2[304];
52 __u8 opt;
53 __u8 reserved3[3];
54 __u8 cssid;
55 __u8 reserved4[1];
56 __u16 devno;
57 __u8 reserved5[4];
58 __u64 wwpn;
59 __u64 lun;
60 __u32 bootprog;
61 __u8 reserved6[12];
62 __u64 br_lba;
63 __u32 scp_data_len;
64 __u8 reserved7[260];
65 __u8 scp_data[];
66 } __packed;
68 #define IPL_PB0_FCP_OPT_IPL 0x10
69 #define IPL_PB0_FCP_OPT_DUMP 0x20
71 /* IPL Parameter Block 0 for NVMe */
72 struct ipl_pb0_nvme {
73 __u32 len;
74 __u8 pbt;
75 __u8 reserved1[3];
76 __u8 loadparm[8];
77 __u8 reserved2[304];
78 __u8 opt;
79 __u8 reserved3[3];
80 __u32 fid;
81 __u8 reserved4[12];
82 __u32 nsid;
83 __u8 reserved5[4];
84 __u32 bootprog;
85 __u8 reserved6[12];
86 __u64 br_lba;
87 __u32 scp_data_len;
88 __u8 reserved7[260];
89 __u8 scp_data[];
90 } __packed;
92 #define IPL_PB0_NVME_OPT_IPL 0x10
93 #define IPL_PB0_NVME_OPT_DUMP 0x20
95 /* IPL Parameter Block 0 for CCW */
96 struct ipl_pb0_ccw {
97 __u32 len;
98 __u8 pbt;
99 __u8 flags;
100 __u8 reserved1[2];
101 __u8 loadparm[8];
102 __u8 reserved2[84];
103 __u16 reserved3 : 13;
104 __u8 ssid : 3;
105 __u16 devno;
106 __u8 vm_flags;
107 __u8 reserved4[3];
108 __u32 vm_parm_len;
109 __u8 nss_name[8];
110 __u8 vm_parm[64];
111 __u8 reserved5[8];
112 } __packed;
114 #define IPL_PB0_CCW_VM_FLAG_NSS 0x80
115 #define IPL_PB0_CCW_VM_FLAG_VP 0x40
117 /* IPL Parameter Block 1 for additional SCP data */
118 struct ipl_pb1_scp_data {
119 __u32 len;
120 __u8 pbt;
121 __u8 scp_data[];
122 } __packed;
124 /* IPL Report List header */
125 struct ipl_rl_hdr {
126 __u32 len;
127 __u8 flags;
128 __u8 reserved1[2];
129 __u8 version;
130 __u8 reserved2[8];
131 } __packed;
133 /* IPL Report Block header */
134 struct ipl_rb_hdr {
135 __u32 len;
136 __u8 rbt;
137 __u8 reserved1[11];
138 } __packed;
140 /* IPL Report Block types */
141 enum ipl_rbt {
142 IPL_RBT_CERTIFICATES = 1,
143 IPL_RBT_COMPONENTS = 2,
146 /* IPL Report Block for the certificate list */
147 struct ipl_rb_certificate_entry {
148 __u64 addr;
149 __u64 len;
150 } __packed;
152 struct ipl_rb_certificates {
153 __u32 len;
154 __u8 rbt;
155 __u8 reserved1[11];
156 struct ipl_rb_certificate_entry entries[];
157 } __packed;
159 /* IPL Report Block for the component list */
160 struct ipl_rb_component_entry {
161 __u64 addr;
162 __u64 len;
163 __u8 flags;
164 __u8 reserved1[5];
165 __u16 certificate_index;
166 __u8 reserved2[8];
169 #define IPL_RB_COMPONENT_FLAG_SIGNED 0x80
170 #define IPL_RB_COMPONENT_FLAG_VERIFIED 0x40
172 struct ipl_rb_components {
173 __u32 len;
174 __u8 rbt;
175 __u8 reserved1[11];
176 struct ipl_rb_component_entry entries[];
177 } __packed;
179 #endif