diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2009-09-22 16:58:39 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-09-22 16:58:42 -0400 |
commit | 1d7e1500a6acfc89415aa2524e2c475c980ac42a (patch) | |
tree | 6c0fafa3864c2dfa778f7543e4d2d441173225a6 /drivers/s390 | |
parent | 703e5c9993639284bc0a8929b6de362424df7019 (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')
-rw-r--r-- | drivers/s390/cio/qdio_main.c | 30 |
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 | |
1488 | out: | 1486 | out: |
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; |