diff options
author | Vasily Gorbik <gor@linux.ibm.com> | 2018-04-04 10:05:16 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2018-04-10 01:39:00 -0400 |
commit | 96c0cdbc7c60885d65dc8d11a39bbcfd9cc49d03 (patch) | |
tree | bf01e459a1dba82fd226395204c6b865236ef92f | |
parent | 3b9678472bab86ae654cf2c18d5dd551558045be (diff) |
s390/ipl: remove reipl_method and dump_method
reipl_method and dump_method have been used in addition to reipl_type
and dump_type, because a single reipl_type could be achieved with
multiple reipl_method (same for dump_type/method). After dropping
non-diag308_set based reipl methods, there is a single method per
reipl_type/dump_type and reipl_method and dump_method could be simply
removed.
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | arch/s390/kernel/ipl.c | 57 |
1 files changed, 11 insertions, 46 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 75dd08547c31..4296d7e61fb6 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -117,27 +117,12 @@ static char *dump_type_str(enum dump_type type) | |||
117 | } | 117 | } |
118 | } | 118 | } |
119 | 119 | ||
120 | enum ipl_method { | ||
121 | REIPL_METHOD_CCW_DIAG, | ||
122 | REIPL_METHOD_FCP_DIAG, | ||
123 | REIPL_METHOD_FCP_DUMP, | ||
124 | REIPL_METHOD_NSS_DIAG, | ||
125 | REIPL_METHOD_DEFAULT, | ||
126 | }; | ||
127 | |||
128 | enum dump_method { | ||
129 | DUMP_METHOD_NONE, | ||
130 | DUMP_METHOD_CCW_DIAG, | ||
131 | DUMP_METHOD_FCP_DIAG, | ||
132 | }; | ||
133 | |||
134 | static int ipl_block_valid; | 120 | static int ipl_block_valid; |
135 | static struct ipl_parameter_block ipl_block; | 121 | static struct ipl_parameter_block ipl_block; |
136 | 122 | ||
137 | static int reipl_capabilities = IPL_TYPE_UNKNOWN; | 123 | static int reipl_capabilities = IPL_TYPE_UNKNOWN; |
138 | 124 | ||
139 | static enum ipl_type reipl_type = IPL_TYPE_UNKNOWN; | 125 | static enum ipl_type reipl_type = IPL_TYPE_UNKNOWN; |
140 | static enum ipl_method reipl_method = REIPL_METHOD_DEFAULT; | ||
141 | static struct ipl_parameter_block *reipl_block_fcp; | 126 | static struct ipl_parameter_block *reipl_block_fcp; |
142 | static struct ipl_parameter_block *reipl_block_ccw; | 127 | static struct ipl_parameter_block *reipl_block_ccw; |
143 | static struct ipl_parameter_block *reipl_block_nss; | 128 | static struct ipl_parameter_block *reipl_block_nss; |
@@ -145,7 +130,6 @@ static struct ipl_parameter_block *reipl_block_actual; | |||
145 | 130 | ||
146 | static int dump_capabilities = DUMP_TYPE_NONE; | 131 | static int dump_capabilities = DUMP_TYPE_NONE; |
147 | static enum dump_type dump_type = DUMP_TYPE_NONE; | 132 | static enum dump_type dump_type = DUMP_TYPE_NONE; |
148 | static enum dump_method dump_method = DUMP_METHOD_NONE; | ||
149 | static struct ipl_parameter_block *dump_block_fcp; | 133 | static struct ipl_parameter_block *dump_block_fcp; |
150 | static struct ipl_parameter_block *dump_block_ccw; | 134 | static struct ipl_parameter_block *dump_block_ccw; |
151 | 135 | ||
@@ -928,25 +912,16 @@ static int reipl_set_type(enum ipl_type type) | |||
928 | 912 | ||
929 | switch(type) { | 913 | switch(type) { |
930 | case IPL_TYPE_CCW: | 914 | case IPL_TYPE_CCW: |
931 | reipl_method = REIPL_METHOD_CCW_DIAG; | ||
932 | reipl_block_actual = reipl_block_ccw; | 915 | reipl_block_actual = reipl_block_ccw; |
933 | break; | 916 | break; |
934 | case IPL_TYPE_FCP: | 917 | case IPL_TYPE_FCP: |
935 | reipl_method = REIPL_METHOD_FCP_DIAG; | ||
936 | reipl_block_actual = reipl_block_fcp; | 918 | reipl_block_actual = reipl_block_fcp; |
937 | break; | 919 | break; |
938 | case IPL_TYPE_FCP_DUMP: | ||
939 | reipl_method = REIPL_METHOD_FCP_DUMP; | ||
940 | break; | ||
941 | case IPL_TYPE_NSS: | 920 | case IPL_TYPE_NSS: |
942 | reipl_method = REIPL_METHOD_NSS_DIAG; | ||
943 | reipl_block_actual = reipl_block_nss; | 921 | reipl_block_actual = reipl_block_nss; |
944 | break; | 922 | break; |
945 | case IPL_TYPE_UNKNOWN: | ||
946 | reipl_method = REIPL_METHOD_DEFAULT; | ||
947 | break; | ||
948 | default: | 923 | default: |
949 | BUG(); | 924 | break; |
950 | } | 925 | } |
951 | reipl_type = type; | 926 | reipl_type = type; |
952 | return 0; | 927 | return 0; |
@@ -981,23 +956,23 @@ static struct kset *reipl_fcp_kset; | |||
981 | 956 | ||
982 | static void __reipl_run(void *unused) | 957 | static void __reipl_run(void *unused) |
983 | { | 958 | { |
984 | switch (reipl_method) { | 959 | switch (reipl_type) { |
985 | case REIPL_METHOD_CCW_DIAG: | 960 | case IPL_TYPE_CCW: |
986 | diag308(DIAG308_SET, reipl_block_ccw); | 961 | diag308(DIAG308_SET, reipl_block_ccw); |
987 | diag308(DIAG308_LOAD_CLEAR, NULL); | 962 | diag308(DIAG308_LOAD_CLEAR, NULL); |
988 | break; | 963 | break; |
989 | case REIPL_METHOD_FCP_DIAG: | 964 | case IPL_TYPE_FCP: |
990 | diag308(DIAG308_SET, reipl_block_fcp); | 965 | diag308(DIAG308_SET, reipl_block_fcp); |
991 | diag308(DIAG308_LOAD_CLEAR, NULL); | 966 | diag308(DIAG308_LOAD_CLEAR, NULL); |
992 | break; | 967 | break; |
993 | case REIPL_METHOD_NSS_DIAG: | 968 | case IPL_TYPE_NSS: |
994 | diag308(DIAG308_SET, reipl_block_nss); | 969 | diag308(DIAG308_SET, reipl_block_nss); |
995 | diag308(DIAG308_LOAD_CLEAR, NULL); | 970 | diag308(DIAG308_LOAD_CLEAR, NULL); |
996 | break; | 971 | break; |
997 | case REIPL_METHOD_DEFAULT: | 972 | case IPL_TYPE_UNKNOWN: |
998 | diag308(DIAG308_LOAD_CLEAR, NULL); | 973 | diag308(DIAG308_LOAD_CLEAR, NULL); |
999 | break; | 974 | break; |
1000 | case REIPL_METHOD_FCP_DUMP: | 975 | case IPL_TYPE_FCP_DUMP: |
1001 | break; | 976 | break; |
1002 | } | 977 | } |
1003 | disabled_wait((unsigned long) __builtin_return_address(0)); | 978 | disabled_wait((unsigned long) __builtin_return_address(0)); |
@@ -1230,16 +1205,6 @@ static int dump_set_type(enum dump_type type) | |||
1230 | { | 1205 | { |
1231 | if (!(dump_capabilities & type)) | 1206 | if (!(dump_capabilities & type)) |
1232 | return -EINVAL; | 1207 | return -EINVAL; |
1233 | switch (type) { | ||
1234 | case DUMP_TYPE_CCW: | ||
1235 | dump_method = DUMP_METHOD_CCW_DIAG; | ||
1236 | break; | ||
1237 | case DUMP_TYPE_FCP: | ||
1238 | dump_method = DUMP_METHOD_FCP_DIAG; | ||
1239 | break; | ||
1240 | default: | ||
1241 | dump_method = DUMP_METHOD_NONE; | ||
1242 | } | ||
1243 | dump_type = type; | 1208 | dump_type = type; |
1244 | return 0; | 1209 | return 0; |
1245 | } | 1210 | } |
@@ -1282,11 +1247,11 @@ static void diag308_dump(void *dump_block) | |||
1282 | 1247 | ||
1283 | static void __dump_run(void *unused) | 1248 | static void __dump_run(void *unused) |
1284 | { | 1249 | { |
1285 | switch (dump_method) { | 1250 | switch (dump_type) { |
1286 | case DUMP_METHOD_CCW_DIAG: | 1251 | case DUMP_TYPE_CCW: |
1287 | diag308_dump(dump_block_ccw); | 1252 | diag308_dump(dump_block_ccw); |
1288 | break; | 1253 | break; |
1289 | case DUMP_METHOD_FCP_DIAG: | 1254 | case DUMP_TYPE_FCP: |
1290 | diag308_dump(dump_block_fcp); | 1255 | diag308_dump(dump_block_fcp); |
1291 | break; | 1256 | break; |
1292 | default: | 1257 | default: |
@@ -1296,7 +1261,7 @@ static void __dump_run(void *unused) | |||
1296 | 1261 | ||
1297 | static void dump_run(struct shutdown_trigger *trigger) | 1262 | static void dump_run(struct shutdown_trigger *trigger) |
1298 | { | 1263 | { |
1299 | if (dump_method == DUMP_METHOD_NONE) | 1264 | if (dump_type == DUMP_TYPE_NONE) |
1300 | return; | 1265 | return; |
1301 | smp_send_stop(); | 1266 | smp_send_stop(); |
1302 | smp_call_ipl_cpu(__dump_run, NULL); | 1267 | smp_call_ipl_cpu(__dump_run, NULL); |