summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2019-02-20 10:14:16 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2019-04-26 06:34:05 -0400
commitd29af5b7a886033e6a4eb5f0a9a25cd00da63ae8 (patch)
tree768e55b37c80317d8c88002f689540c55181284b
parent5f1207fbe74450eb887155ba432bfc079312b0fe (diff)
s390/ipl: add definitions for the IPL report block
To transport the information required for secure boot a new IPL report will be created at boot time. It will be written to memory right after the IPL parameter block. To work with the IPL report a couple of additional structure definitions are added the the uapi/ipl.h header. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/include/uapi/asm/ipl.h62
1 files changed, 61 insertions, 1 deletions
diff --git a/arch/s390/include/uapi/asm/ipl.h b/arch/s390/include/uapi/asm/ipl.h
index 3b513b39fca0..fd32b1cd80d2 100644
--- a/arch/s390/include/uapi/asm/ipl.h
+++ b/arch/s390/include/uapi/asm/ipl.h
@@ -7,10 +7,15 @@
7/* IPL Parameter List header */ 7/* IPL Parameter List header */
8struct ipl_pl_hdr { 8struct ipl_pl_hdr {
9 __u32 len; 9 __u32 len;
10 __u8 reserved1[3]; 10 __u8 flags;
11 __u8 reserved1[2];
11 __u8 version; 12 __u8 version;
12} __packed; 13} __packed;
13 14
15#define IPL_PL_FLAG_IPLPS 0x80
16#define IPL_PL_FLAG_SIPL 0x40
17#define IPL_PL_FLAG_IPLSR 0x20
18
14/* IPL Parameter Block header */ 19/* IPL Parameter Block header */
15struct ipl_pb_hdr { 20struct ipl_pb_hdr {
16 __u32 len; 21 __u32 len;
@@ -91,4 +96,59 @@ struct ipl_pb1_scp_data {
91 __u8 scp_data[]; 96 __u8 scp_data[];
92} __packed; 97} __packed;
93 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
94#endif 154#endif