Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm
[cascardo/linux.git] / arch / s390 / kernel / ipl.c
index 6ffcd32..d8a6a38 100644 (file)
@@ -1414,6 +1414,16 @@ static struct kobj_attribute dump_type_attr =
 
 static struct kset *dump_kset;
 
+static void diag308_dump(void *dump_block)
+{
+       diag308(DIAG308_SET, dump_block);
+       while (1) {
+               if (diag308(DIAG308_DUMP, NULL) != 0x302)
+                       break;
+               udelay_simple(USEC_PER_SEC);
+       }
+}
+
 static void __dump_run(void *unused)
 {
        struct ccw_dev_id devid;
@@ -1432,12 +1442,10 @@ static void __dump_run(void *unused)
                __cpcmd(buf, NULL, 0, NULL);
                break;
        case DUMP_METHOD_CCW_DIAG:
-               diag308(DIAG308_SET, dump_block_ccw);
-               diag308(DIAG308_DUMP, NULL);
+               diag308_dump(dump_block_ccw);
                break;
        case DUMP_METHOD_FCP_DIAG:
-               diag308(DIAG308_SET, dump_block_fcp);
-               diag308(DIAG308_DUMP, NULL);
+               diag308_dump(dump_block_fcp);
                break;
        default:
                break;