diff options
-rw-r--r-- | arch/s390/kernel/ipl.c | 16 |
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 | ||
1415 | static struct kset *dump_kset; | 1415 | static struct kset *dump_kset; |
1416 | 1416 | ||
1417 | static 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 | |||
1417 | static void __dump_run(void *unused) | 1427 | static 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; |