aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-s390/ipl.h
diff options
context:
space:
mode:
authorMichael Holzheu <holzheu@de.ibm.com>2007-02-21 04:55:21 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-02-21 04:55:21 -0500
commit46b05d2617c8efd8ec6b19acd2c95541a0118c13 (patch)
tree518998d59432b6387de28021780a84c42f1c116b /include/asm-s390/ipl.h
parent72960a02c270950253126ee8b339afd400f55273 (diff)
[S390] New header file ipl.h
Setup.h has been misused for ipl related stuff in the past. We now move everything, which has to do with ipl and reipl to a new header file named "ipl.h". Signed-off-by: Michael Holzheu <holzheu@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'include/asm-s390/ipl.h')
-rw-r--r--include/asm-s390/ipl.h113
1 files changed, 113 insertions, 0 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 */