1
2 #ifndef _ASM_S390_UAPI_IPL_H
3 #define _ASM_S390_UAPI_IPL_H
4
5 #include <linux/types.h>
6
7
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
20 struct ipl_pb_hdr {
21 __u32 len;
22 __u8 pbt;
23 } __packed;
24
25
26 enum ipl_pbt {
27 IPL_PBT_FCP = 0,
28 IPL_PBT_SCP_DATA = 1,
29 IPL_PBT_CCW = 2,
30 };
31
32
33 struct ipl_pb0_common {
34 __u32 len;
35 __u8 pbt;
36 __u8 flags;
37 __u8 reserved1[2];
38 __u8 loadparm[8];
39 __u8 reserved2[84];
40 } __packed;
41
42 #define IPL_PB0_FLAG_LOADPARM 0x80
43
44
45 struct ipl_pb0_fcp {
46 __u32 len;
47 __u8 pbt;
48 __u8 reserved1[3];
49 __u8 loadparm[8];
50 __u8 reserved2[304];
51 __u8 opt;
52 __u8 reserved3[3];
53 __u8 cssid;
54 __u8 reserved4[1];
55 __u16 devno;
56 __u8 reserved5[4];
57 __u64 wwpn;
58 __u64 lun;
59 __u32 bootprog;
60 __u8 reserved6[12];
61 __u64 br_lba;
62 __u32 scp_data_len;
63 __u8 reserved7[260];
64 __u8 scp_data[];
65 } __packed;
66
67 #define IPL_PB0_FCP_OPT_IPL 0x10
68 #define IPL_PB0_FCP_OPT_DUMP 0x20
69
70
71 struct ipl_pb0_ccw {
72 __u32 len;
73 __u8 pbt;
74 __u8 flags;
75 __u8 reserved1[2];
76 __u8 loadparm[8];
77 __u8 reserved2[84];
78 __u16 reserved3 : 13;
79 __u8 ssid : 3;
80 __u16 devno;
81 __u8 vm_flags;
82 __u8 reserved4[3];
83 __u32 vm_parm_len;
84 __u8 nss_name[8];
85 __u8 vm_parm[64];
86 __u8 reserved5[8];
87 } __packed;
88
89 #define IPL_PB0_CCW_VM_FLAG_NSS 0x80
90 #define IPL_PB0_CCW_VM_FLAG_VP 0x40
91
92
93 struct ipl_pb1_scp_data {
94 __u32 len;
95 __u8 pbt;
96 __u8 scp_data[];
97 } __packed;
98
99
100 struct ipl_rl_hdr {
101 __u32 len;
102 __u8 flags;
103 __u8 reserved1[2];
104 __u8 version;
105 __u8 reserved2[8];
106 } __packed;
107
108
109 struct ipl_rb_hdr {
110 __u32 len;
111 __u8 rbt;
112 __u8 reserved1[11];
113 } __packed;
114
115
116 enum ipl_rbt {
117 IPL_RBT_CERTIFICATES = 1,
118 IPL_RBT_COMPONENTS = 2,
119 };
120
121
122 struct ipl_rb_certificate_entry {
123 __u64 addr;
124 __u64 len;
125 } __packed;
126
127 struct ipl_rb_certificates {
128 __u32 len;
129 __u8 rbt;
130 __u8 reserved1[11];
131 struct ipl_rb_certificate_entry entries[];
132 } __packed;
133
134
135 struct ipl_rb_component_entry {
136 __u64 addr;
137 __u64 len;
138 __u8 flags;
139 __u8 reserved1[5];
140 __u16 certificate_index;
141 __u8 reserved2[8];
142 };
143
144 #define IPL_RB_COMPONENT_FLAG_SIGNED 0x80
145 #define IPL_RB_COMPONENT_FLAG_VERIFIED 0x40
146
147 struct ipl_rb_components {
148 __u32 len;
149 __u8 rbt;
150 __u8 reserved1[11];
151 struct ipl_rb_component_entry entries[];
152 } __packed;
153
154 #endif