aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-s390
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-s390')
-rw-r--r--include/asm-s390/ipl.h113
-rw-r--r--include/asm-s390/setup.h74
2 files changed, 113 insertions, 74 deletions
diff --git a/include/asm-s390/ipl.h b/include/asm-s390/ipl.h
new file mode 100644
index 000000000000..5650d3d4ae46
--- /dev/null
+++ b/include/asm-s390/ipl.h
@@ -0,0 +1,113 @@
1/*
2 * s390 (re)ipl support
3 *
4 * Copyright IBM Corp. 2007
5 */
6
7#ifndef _ASM_S390_IPL_H
8#define _ASM_S390_IPL_H
9
10#include <asm/types.h>
11
12#define IPL_PARMBLOCK_ORIGIN 0x2000
13
14#define IPL_PARM_BLK_FCP_LEN (sizeof(struct ipl_list_hdr) + \
15 sizeof(struct ipl_block_fcp))
16
17#define IPL_PARM_BLK_CCW_LEN (sizeof(struct ipl_list_hdr) + \
18 sizeof(struct ipl_block_ccw))
19
20#define IPL_MAX_SUPPORTED_VERSION (0)
21
22#define IPL_PARMBLOCK_START ((struct ipl_parameter_block *) \
23 IPL_PARMBLOCK_ORIGIN)
24#define IPL_PARMBLOCK_SIZE (IPL_PARMBLOCK_START->hdr.len)
25
26struct ipl_list_hdr {
27 u32 len;
28 u8 reserved1[3];
29 u8 version;
30 u32 blk0_len;
31 u8 pbt;
32 u8 flags;
33 u16 reserved2;
34} __attribute__((packed));
35
36struct ipl_block_fcp {
37 u8 reserved1[313-1];
38 u8 opt;
39 u8 reserved2[3];
40 u16 reserved3;
41 u16 devno;
42 u8 reserved4[4];
43 u64 wwpn;
44 u64 lun;
45 u32 bootprog;
46 u8 reserved5[12];
47 u64 br_lba;
48 u32 scp_data_len;
49 u8 reserved6[260];
50 u8 scp_data[];
51} __attribute__((packed));
52
53struct ipl_block_ccw {
54 u8 load_param[8];
55 u8 reserved1[84];
56 u8 reserved2[2];
57 u16 devno;
58 u8 vm_flags;
59 u8 reserved3[3];
60 u32 vm_parm_len;
61} __attribute__((packed));
62
63struct ipl_parameter_block {
64 struct ipl_list_hdr hdr;
65 union {
66 struct ipl_block_fcp fcp;
67 struct ipl_block_ccw ccw;
68 } ipl_info;
69} __attribute__((packed));
70
71/*
72 * IPL validity flags and parameters as detected in head.S
73 */
74extern u32 ipl_flags;
75extern u16 ipl_devno;
76
77extern void do_reipl(void);
78extern void ipl_save_parameters(void);
79
80enum {
81 IPL_DEVNO_VALID = 1,
82 IPL_PARMBLOCK_VALID = 2,
83 IPL_NSS_VALID = 4,
84};
85
86/*
87 * DIAG 308 support
88 */
89enum diag308_subcode {
90 DIAG308_REL_HSA = 2,
91 DIAG308_IPL = 3,
92 DIAG308_DUMP = 4,
93 DIAG308_SET = 5,
94 DIAG308_STORE = 6,
95};
96
97enum diag308_ipl_type {
98 DIAG308_IPL_TYPE_FCP = 0,
99 DIAG308_IPL_TYPE_CCW = 2,
100};
101
102enum diag308_opt {
103 DIAG308_IPL_OPT_IPL = 0x10,
104 DIAG308_IPL_OPT_DUMP = 0x20,
105};
106
107enum diag308_rc {
108 DIAG308_RC_OK = 1,
109};
110
111extern int diag308(unsigned long subcode, void *addr);
112
113#endif /* _ASM_S390_IPL_H */
diff --git a/include/asm-s390/setup.h b/include/asm-s390/setup.h
index 3388bb52597c..44c7aee2bd34 100644
--- a/include/asm-s390/setup.h
+++ b/include/asm-s390/setup.h
@@ -16,7 +16,6 @@
16 16
17#define PARMAREA 0x10400 17#define PARMAREA 0x10400
18#define MEMORY_CHUNKS 16 /* max 0x7fff */ 18#define MEMORY_CHUNKS 16 /* max 0x7fff */
19#define IPL_PARMBLOCK_ORIGIN 0x2000
20 19
21#ifndef __ASSEMBLY__ 20#ifndef __ASSEMBLY__
22 21
@@ -97,82 +96,9 @@ extern char vmpoff_cmd[];
97#define SET_CONSOLE_3215 do { console_mode = 2; } while (0) 96#define SET_CONSOLE_3215 do { console_mode = 2; } while (0)
98#define SET_CONSOLE_3270 do { console_mode = 3; } while (0) 97#define SET_CONSOLE_3270 do { console_mode = 3; } while (0)
99 98
100struct ipl_list_hdr {
101 u32 len;
102 u8 reserved1[3];
103 u8 version;
104 u32 blk0_len;
105 u8 pbt;
106 u8 flags;
107 u16 reserved2;
108} __attribute__((packed));
109
110struct ipl_block_fcp {
111 u8 reserved1[313-1];
112 u8 opt;
113 u8 reserved2[3];
114 u16 reserved3;
115 u16 devno;
116 u8 reserved4[4];
117 u64 wwpn;
118 u64 lun;
119 u32 bootprog;
120 u8 reserved5[12];
121 u64 br_lba;
122 u32 scp_data_len;
123 u8 reserved6[260];
124 u8 scp_data[];
125} __attribute__((packed));
126
127struct ipl_block_ccw {
128 u8 load_param[8];
129 u8 reserved1[84];
130 u8 reserved2[2];
131 u16 devno;
132 u8 vm_flags;
133 u8 reserved3[3];
134 u32 vm_parm_len;
135} __attribute__((packed));
136
137struct ipl_parameter_block {
138 struct ipl_list_hdr hdr;
139 union {
140 struct ipl_block_fcp fcp;
141 struct ipl_block_ccw ccw;
142 } ipl_info;
143} __attribute__((packed));
144
145#define IPL_PARM_BLK_FCP_LEN (sizeof(struct ipl_list_hdr) + \
146 sizeof(struct ipl_block_fcp))
147
148#define IPL_PARM_BLK_CCW_LEN (sizeof(struct ipl_list_hdr) + \
149 sizeof(struct ipl_block_ccw))
150
151#define IPL_MAX_SUPPORTED_VERSION (0)
152
153/*
154 * IPL validity flags and parameters as detected in head.S
155 */
156extern u32 ipl_flags;
157extern u16 ipl_devno;
158
159extern void do_reipl(void);
160extern void ipl_save_parameters(void);
161
162enum {
163 IPL_DEVNO_VALID = 1,
164 IPL_PARMBLOCK_VALID = 2,
165 IPL_NSS_VALID = 4,
166};
167
168#define NSS_NAME_SIZE 8 99#define NSS_NAME_SIZE 8
169
170extern char kernel_nss_name[]; 100extern char kernel_nss_name[];
171 101
172#define IPL_PARMBLOCK_START ((struct ipl_parameter_block *) \
173 IPL_PARMBLOCK_ORIGIN)
174#define IPL_PARMBLOCK_SIZE (IPL_PARMBLOCK_START->hdr.len)
175
176#else /* __ASSEMBLY__ */ 102#else /* __ASSEMBLY__ */
177 103
178#ifndef __s390x__ 104#ifndef __s390x__