aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/qdio_main.c
diff options
context:
space:
mode:
authorJan Glauber <jang@linux.vnet.ibm.com>2009-09-22 16:58:39 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-09-22 16:58:42 -0400
commit1d7e1500a6acfc89415aa2524e2c475c980ac42a (patch)
tree6c0fafa3864c2dfa778f7543e4d2d441173225a6 /drivers/s390/cio/qdio_main.c
parent703e5c9993639284bc0a8929b6de362424df7019 (diff)
[S390] qdio: reduce per device debug messages
Even if turned off the debug message overhead is measurable in the hot path. Reduce the number of debug message calls in do_QDIO and qdio_kick_handler. Also use hex numbers to save space in the debug entries. Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/qdio_main.c')
-rw-r--r--drivers/s390/cio/qdio_main.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index 9aef402a5f1b..21766c791ad6 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -401,7 +401,7 @@ static void announce_buffer_error(struct qdio_q *q, int count)
401 if ((!q->is_input_q && 401 if ((!q->is_input_q &&
402 (q->sbal[q->first_to_check]->element[15].flags & 0xff) == 0x10)) { 402 (q->sbal[q->first_to_check]->element[15].flags & 0xff) == 0x10)) {
403 qdio_perf_stat_inc(&perf_stats.outbound_target_full); 403 qdio_perf_stat_inc(&perf_stats.outbound_target_full);
404 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%3d", 404 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x",
405 q->first_to_check); 405 q->first_to_check);
406 return; 406 return;
407 } 407 }
@@ -418,7 +418,7 @@ static inline void inbound_primed(struct qdio_q *q, int count)
418{ 418{
419 int new; 419 int new;
420 420
421 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in prim: %3d", count); 421 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in prim: %02x", count);
422 422
423 /* for QEBSM the ACK was already set by EQBS */ 423 /* for QEBSM the ACK was already set by EQBS */
424 if (is_qebsm(q)) { 424 if (is_qebsm(q)) {
@@ -545,7 +545,7 @@ static inline int qdio_inbound_q_done(struct qdio_q *q)
545 * has (probably) not moved (see qdio_inbound_processing). 545 * has (probably) not moved (see qdio_inbound_processing).
546 */ 546 */
547 if (get_usecs() > q->u.in.timestamp + QDIO_INPUT_THRESHOLD) { 547 if (get_usecs() > q->u.in.timestamp + QDIO_INPUT_THRESHOLD) {
548 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in done:%3d", 548 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in done:%02x",
549 q->first_to_check); 549 q->first_to_check);
550 return 1; 550 return 1;
551 } else 551 } else
@@ -565,11 +565,10 @@ static void qdio_kick_handler(struct qdio_q *q)
565 565
566 if (q->is_input_q) { 566 if (q->is_input_q) {
567 qdio_perf_stat_inc(&perf_stats.inbound_handler); 567 qdio_perf_stat_inc(&perf_stats.inbound_handler);
568 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%3d c:%3d", start, count); 568 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%02x c:%02x", start, count);
569 } else { 569 } else
570 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "koh: nr:%1d", q->nr); 570 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "koh: s:%02x c:%02x",
571 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "s:%3d c:%3d", start, count); 571 start, count);
572 }
573 572
574 q->handler(q->irq_ptr->cdev, q->qdio_error, q->nr, start, count, 573 q->handler(q->irq_ptr->cdev, q->qdio_error, q->nr, start, count,
575 q->irq_ptr->int_parm); 574 q->irq_ptr->int_parm);
@@ -633,7 +632,7 @@ static int get_outbound_buffer_frontier(struct qdio_q *q)
633 switch (state) { 632 switch (state) {
634 case SLSB_P_OUTPUT_EMPTY: 633 case SLSB_P_OUTPUT_EMPTY:
635 /* the adapter got it */ 634 /* the adapter got it */
636 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out empty:%1d %3d", q->nr, count); 635 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out empty:%1d %02x", q->nr, count);
637 636
638 atomic_sub(count, &q->nr_buf_used); 637 atomic_sub(count, &q->nr_buf_used);
639 q->first_to_check = add_buf(q->first_to_check, count); 638 q->first_to_check = add_buf(q->first_to_check, count);
@@ -1481,10 +1480,9 @@ static int handle_outbound(struct qdio_q *q, unsigned int callflags,
1481 get_buf_state(q, prev_buf(bufnr), &state, 0); 1480 get_buf_state(q, prev_buf(bufnr), &state, 0);
1482 if (state != SLSB_CU_OUTPUT_PRIMED) 1481 if (state != SLSB_CU_OUTPUT_PRIMED)
1483 rc = qdio_kick_outbound_q(q); 1482 rc = qdio_kick_outbound_q(q);
1484 else { 1483 else
1485 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "fast-req");
1486 qdio_perf_stat_inc(&perf_stats.fast_requeue); 1484 qdio_perf_stat_inc(&perf_stats.fast_requeue);
1487 } 1485
1488out: 1486out:
1489 tasklet_schedule(&q->tasklet); 1487 tasklet_schedule(&q->tasklet);
1490 return rc; 1488 return rc;
@@ -1510,12 +1508,8 @@ int do_QDIO(struct ccw_device *cdev, unsigned int callflags,
1510 if (!irq_ptr) 1508 if (!irq_ptr)
1511 return -ENODEV; 1509 return -ENODEV;
1512 1510
1513 if (callflags & QDIO_FLAG_SYNC_INPUT) 1511 DBF_DEV_EVENT(DBF_INFO, irq_ptr,
1514 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "doQDIO input"); 1512 "do%02x b:%02x c:%02x", callflags, bufnr, count);
1515 else
1516 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "doQDIO output");
1517 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "q:%1d flag:%4x", q_nr, callflags);
1518 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "buf:%2d cnt:%3d", bufnr, count);
1519 1513
1520 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE) 1514 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE)
1521 return -EBUSY; 1515 return -EBUSY;