aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/kernel/ipl.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 6ffcd3203215..d8a6a385d048 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -1414,6 +1414,16 @@ static struct kobj_attribute dump_type_attr =
1414 1414
1415static struct kset *dump_kset; 1415static struct kset *dump_kset;
1416 1416
1417static void diag308_dump(void *dump_block)
1418{
1419 diag308(DIAG308_SET, dump_block);
1420 while (1) {
1421 if (diag308(DIAG308_DUMP, NULL) != 0x302)
1422 break;
1423 udelay_simple(USEC_PER_SEC);
1424 }
1425}
1426
1417static void __dump_run(void *unused) 1427static void __dump_run(void *unused)
1418{ 1428{
1419 struct ccw_dev_id devid; 1429 struct ccw_dev_id devid;
@@ -1432,12 +1442,10 @@ static void __dump_run(void *unused)
1432 __cpcmd(buf, NULL, 0, NULL); 1442 __cpcmd(buf, NULL, 0, NULL);
1433 break; 1443 break;
1434 case DUMP_METHOD_CCW_DIAG: 1444 case DUMP_METHOD_CCW_DIAG:
1435 diag308(DIAG308_SET, dump_block_ccw); 1445 diag308_dump(dump_block_ccw);
1436 diag308(DIAG308_DUMP, NULL);
1437 break; 1446 break;
1438 case DUMP_METHOD_FCP_DIAG: 1447 case DUMP_METHOD_FCP_DIAG:
1439 diag308(DIAG308_SET, dump_block_fcp); 1448 diag308_dump(dump_block_fcp);
1440 diag308(DIAG308_DUMP, NULL);
1441 break; 1449 break;
1442 default: 1450 default:
1443 break; 1451 break;