* Dump the range of CCWs into 'page' buffer
  * and return number of printed chars.
  */
-static int
+static void
 dasd_eckd_dump_ccw_range(struct ccw1 *from, struct ccw1 *to, char *page)
 {
        int len, count;
                else
                        datap = (char *) ((addr_t) from->cda);
 
-               /* dump data (max 32 bytes) */
-               for (count = 0; count < from->count && count < 32; count++) {
-                       if (count % 8 == 0) len += sprintf(page + len, " ");
-                       if (count % 4 == 0) len += sprintf(page + len, " ");
+               /* dump data (max 128 bytes) */
+               for (count = 0; count < from->count && count < 128; count++) {
+                       if (count % 32 == 0)
+                               len += sprintf(page + len, "\n");
+                       if (count % 8 == 0)
+                               len += sprintf(page + len, " ");
+                       if (count % 4 == 0)
+                               len += sprintf(page + len, " ");
                        len += sprintf(page + len, "%02x", datap[count]);
                }
                len += sprintf(page + len, "\n");
                from++;
        }
-       return len;
+       if (len > 0)
+               printk(KERN_ERR "%s", page);
 }
 
 static void
        if (req) {
                /* req == NULL for unsolicited interrupts */
                /* dump the Channel Program (max 140 Bytes per line) */
-               /* Count CCW and print first CCWs (maximum 1024 % 140 = 7) */
+               /* Count CCW and print first CCWs (maximum 7) */
                first = req->cpaddr;
                for (last = first; last->flags & (CCW_FLAG_CC | CCW_FLAG_DC); last++);
                to = min(first + 6, last);
-               len = sprintf(page, PRINTK_HEADER
-                             " Related CP in req: %p\n", req);
-               dasd_eckd_dump_ccw_range(first, to, page + len);
-               printk(KERN_ERR "%s", page);
+               printk(KERN_ERR PRINTK_HEADER " Related CP in req: %p\n", req);
+               dasd_eckd_dump_ccw_range(first, to, page);
 
                /* print failing CCW area (maximum 4) */
                /* scsw->cda is either valid or zero  */
-               len = 0;
                from = ++to;
                fail = (struct ccw1 *)(addr_t)
                                irb->scsw.cmd.cpa; /* failing CCW */
                if (from <  fail - 2) {
                        from = fail - 2;     /* there is a gap - print header */
-                       len += sprintf(page, PRINTK_HEADER "......\n");
+                       printk(KERN_ERR PRINTK_HEADER "......\n");
                }
                to = min(fail + 1, last);
-               len += dasd_eckd_dump_ccw_range(from, to, page + len);
+               dasd_eckd_dump_ccw_range(from, to, page + len);
 
                /* print last CCWs (maximum 2) */
+               len = 0;
                from = max(from, ++to);
                if (from < last - 1) {
                        from = last - 1;     /* there is a gap - print header */
-                       len += sprintf(page + len, PRINTK_HEADER "......\n");
+                       printk(KERN_ERR PRINTK_HEADER "......\n");
                }
-               len += dasd_eckd_dump_ccw_range(from, last, page + len);
-               if (len > 0)
-                       printk(KERN_ERR "%s", page);
+               dasd_eckd_dump_ccw_range(from, last, page + len);
        }
        free_page((unsigned long) page);
 }