blob: 451ba7d08905c0a4d1fa91359e8ac863c228e520 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001/* 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 */
8struct 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 */
20struct ipl_pb_hdr {
21 __u32 len;
22 __u8 pbt;
23} __packed;
24
25/* IPL Parameter Block types */
26enum ipl_pbt {
27 IPL_PBT_FCP = 0,
28 IPL_PBT_SCP_DATA = 1,
29 IPL_PBT_CCW = 2,
30};
31
32/* IPL Parameter Block 0 with common fields */
33struct 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/* IPL Parameter Block 0 for FCP */
45struct 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/* IPL Parameter Block 0 for CCW */
71struct 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/* IPL Parameter Block 1 for additional SCP data */
93struct ipl_pb1_scp_data {
94 __u32 len;
95 __u8 pbt;
96 __u8 scp_data[];
97} __packed;
98
99/* IPL Report List header */
100struct ipl_rl_hdr {
101 __u32 len;
102 __u8 flags;
103 __u8 reserved1[2];
104 __u8 version;
105 __u8 reserved2[8];
106} __packed;
107
108/* IPL Report Block header */
109struct ipl_rb_hdr {
110 __u32 len;
111 __u8 rbt;
112 __u8 reserved1[11];
113} __packed;
114
115/* IPL Report Block types */
116enum ipl_rbt {
117 IPL_RBT_CERTIFICATES = 1,
118 IPL_RBT_COMPONENTS = 2,
119};
120
121/* IPL Report Block for the certificate list */
122struct ipl_rb_certificate_entry {
123 __u64 addr;
124 __u64 len;
125} __packed;
126
127struct ipl_rb_certificates {
128 __u32 len;
129 __u8 rbt;
130 __u8 reserved1[11];
131 struct ipl_rb_certificate_entry entries[];
132} __packed;
133
134/* IPL Report Block for the component list */
135struct 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
147struct 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