Skip to content

Commit

Permalink
[S390] qdio: add eqbs/sqbs instruction counters
Browse files Browse the repository at this point in the history
Add counters for the eqbs and sqbs instructions that indicate how often
we issued the instructions and how often the instructions returned with
less buffers than specified.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Jan Glauber authored and Martin Schwidefsky committed Dec 25, 2008
1 parent bbd50e1 commit 23589d0
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/s390/cio/qdio_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ static int qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
char dbf_text[15];

BUG_ON(!q->irq_ptr->sch_token);
qdio_perf_stat_inc(&perf_stats.debug_eqbs_all);

if (!q->is_input_q)
nr += q->irq_ptr->nr_input_qs;
Expand All @@ -139,8 +140,10 @@ static int qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
/* At least one buffer was processed, return and extract the remaining
* buffers later.
*/
if ((ccq == 96) && (count != tmp_count))
if ((ccq == 96) && (count != tmp_count)) {
qdio_perf_stat_inc(&perf_stats.debug_eqbs_incomplete);
return (count - tmp_count);
}
if (rc == 1) {
QDIO_DBF_TEXT5(1, trace, "eqAGAIN");
goto again;
Expand Down Expand Up @@ -179,6 +182,7 @@ static int qdio_do_sqbs(struct qdio_q *q, unsigned char state, int start,
char dbf_text[15];

BUG_ON(!q->irq_ptr->sch_token);
qdio_perf_stat_inc(&perf_stats.debug_sqbs_all);

if (!q->is_input_q)
nr += q->irq_ptr->nr_input_qs;
Expand All @@ -187,6 +191,7 @@ static int qdio_do_sqbs(struct qdio_q *q, unsigned char state, int start,
rc = qdio_check_ccq(q, ccq);
if (rc == 1) {
QDIO_DBF_TEXT5(1, trace, "sqAGAIN");
qdio_perf_stat_inc(&perf_stats.debug_sqbs_incomplete);
goto again;
}
if (rc < 0) {
Expand Down
6 changes: 6 additions & 0 deletions drivers/s390/cio/qdio_perf.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ static int qdio_perf_proc_show(struct seq_file *m, void *v)
(long)atomic_long_read(&perf_stats.debug_stop_polling));
seq_printf(m, "AI inbound tasklet loops after stop polling\t: %li\n",
(long)atomic_long_read(&perf_stats.thinint_inbound_loop2));
seq_printf(m, "QEBSM EQBS total/incomplete\t\t\t: %li/%li\n",
(long)atomic_long_read(&perf_stats.debug_eqbs_all),
(long)atomic_long_read(&perf_stats.debug_eqbs_incomplete));
seq_printf(m, "QEBSM SQBS total/incomplete\t\t\t: %li/%li\n",
(long)atomic_long_read(&perf_stats.debug_sqbs_all),
(long)atomic_long_read(&perf_stats.debug_sqbs_incomplete));
seq_printf(m, "\n");
return 0;
}
Expand Down
4 changes: 4 additions & 0 deletions drivers/s390/cio/qdio_perf.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ struct qdio_perf_stats {
/* for debugging */
atomic_long_t debug_tl_out_timer;
atomic_long_t debug_stop_polling;
atomic_long_t debug_eqbs_all;
atomic_long_t debug_eqbs_incomplete;
atomic_long_t debug_sqbs_all;
atomic_long_t debug_sqbs_incomplete;
};

extern struct qdio_perf_stats perf_stats;
Expand Down

0 comments on commit 23589d0

Please sign in to comment.