diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-02-20 10:14:16 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-04-26 06:34:05 -0400 |
commit | d29af5b7a886033e6a4eb5f0a9a25cd00da63ae8 (patch) | |
tree | 768e55b37c80317d8c88002f689540c55181284b | |
parent | 5f1207fbe74450eb887155ba432bfc079312b0fe (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.h | 62 |
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 */ |
8 | struct ipl_pl_hdr { | 8 | struct 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 */ |
15 | struct ipl_pb_hdr { | 20 | struct 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 */ | ||
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 | /* IPL Report Block header */ | ||
109 | struct ipl_rb_hdr { | ||
110 | __u32 len; | ||
111 | __u8 rbt; | ||
112 | __u8 reserved1[11]; | ||
113 | } __packed; | ||
114 | |||
115 | /* IPL Report Block types */ | ||
116 | enum ipl_rbt { | ||
117 | IPL_RBT_CERTIFICATES = 1, | ||
118 | IPL_RBT_COMPONENTS = 2, | ||
119 | }; | ||
120 | |||
121 | /* IPL Report Block for the certificate list */ | ||
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 | /* IPL Report Block for the component list */ | ||
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 | |||
94 | #endif | 154 | #endif |