mirror of https://github.com/torvalds/linux.git
tooling fixes for v6.13:
- Fix rtla divide by zero when the count is zero in histograms -----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCZ27/phQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qq0bAQDAo1edYG0QGG2cbee1dM0gWiOZqmgZ y2/FzV64Nq5UfQD9HPXVTv+fF0fHs4DEj3BQI5mSLi5tu7g2zer5FKVSiw0= =Q2ZB -----END PGP SIGNATURE----- Merge tag 'trace-tools-v6.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace Pull tracing tool fix from Steven Rostedt: - Fix rtla divide by zero when the count is zero in histograms * tag 'trace-tools-v6.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: rtla/timerlat: Fix histogram ALL for zero samples
This commit is contained in:
commit
fd0584d220
|
|
@ -281,6 +281,21 @@ static void timerlat_hist_header(struct osnoise_tool *tool)
|
|||
trace_seq_reset(s);
|
||||
}
|
||||
|
||||
/*
|
||||
* format_summary_value - format a line of summary value (min, max or avg)
|
||||
* of hist data
|
||||
*/
|
||||
static void format_summary_value(struct trace_seq *seq,
|
||||
int count,
|
||||
unsigned long long val,
|
||||
bool avg)
|
||||
{
|
||||
if (count)
|
||||
trace_seq_printf(seq, "%9llu ", avg ? val / count : val);
|
||||
else
|
||||
trace_seq_printf(seq, "%9c ", '-');
|
||||
}
|
||||
|
||||
/*
|
||||
* timerlat_print_summary - print the summary of the hist data to the output
|
||||
*/
|
||||
|
|
@ -328,29 +343,23 @@ timerlat_print_summary(struct timerlat_hist_params *params,
|
|||
if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
|
||||
continue;
|
||||
|
||||
if (!params->no_irq) {
|
||||
if (data->hist[cpu].irq_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].min_irq);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (!params->no_irq)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].irq_count,
|
||||
data->hist[cpu].min_irq,
|
||||
false);
|
||||
|
||||
if (!params->no_thread) {
|
||||
if (data->hist[cpu].thread_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].min_thread);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (!params->no_thread)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].thread_count,
|
||||
data->hist[cpu].min_thread,
|
||||
false);
|
||||
|
||||
if (params->user_hist) {
|
||||
if (data->hist[cpu].user_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].min_user);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (params->user_hist)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].user_count,
|
||||
data->hist[cpu].min_user,
|
||||
false);
|
||||
}
|
||||
trace_seq_printf(trace->seq, "\n");
|
||||
|
||||
|
|
@ -364,29 +373,23 @@ timerlat_print_summary(struct timerlat_hist_params *params,
|
|||
if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
|
||||
continue;
|
||||
|
||||
if (!params->no_irq) {
|
||||
if (data->hist[cpu].irq_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].sum_irq / data->hist[cpu].irq_count);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (!params->no_irq)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].irq_count,
|
||||
data->hist[cpu].sum_irq,
|
||||
true);
|
||||
|
||||
if (!params->no_thread) {
|
||||
if (data->hist[cpu].thread_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].sum_thread / data->hist[cpu].thread_count);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (!params->no_thread)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].thread_count,
|
||||
data->hist[cpu].sum_thread,
|
||||
true);
|
||||
|
||||
if (params->user_hist) {
|
||||
if (data->hist[cpu].user_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].sum_user / data->hist[cpu].user_count);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (params->user_hist)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].user_count,
|
||||
data->hist[cpu].sum_user,
|
||||
true);
|
||||
}
|
||||
trace_seq_printf(trace->seq, "\n");
|
||||
|
||||
|
|
@ -400,29 +403,23 @@ timerlat_print_summary(struct timerlat_hist_params *params,
|
|||
if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
|
||||
continue;
|
||||
|
||||
if (!params->no_irq) {
|
||||
if (data->hist[cpu].irq_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].max_irq);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (!params->no_irq)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].irq_count,
|
||||
data->hist[cpu].max_irq,
|
||||
false);
|
||||
|
||||
if (!params->no_thread) {
|
||||
if (data->hist[cpu].thread_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].max_thread);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (!params->no_thread)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].thread_count,
|
||||
data->hist[cpu].max_thread,
|
||||
false);
|
||||
|
||||
if (params->user_hist) {
|
||||
if (data->hist[cpu].user_count)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
data->hist[cpu].max_user);
|
||||
else
|
||||
trace_seq_printf(trace->seq, " - ");
|
||||
}
|
||||
if (params->user_hist)
|
||||
format_summary_value(trace->seq,
|
||||
data->hist[cpu].user_count,
|
||||
data->hist[cpu].max_user,
|
||||
false);
|
||||
}
|
||||
trace_seq_printf(trace->seq, "\n");
|
||||
trace_seq_do_printf(trace->seq);
|
||||
|
|
@ -506,16 +503,22 @@ timerlat_print_stats_all(struct timerlat_hist_params *params,
|
|||
trace_seq_printf(trace->seq, "min: ");
|
||||
|
||||
if (!params->no_irq)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.min_irq);
|
||||
format_summary_value(trace->seq,
|
||||
sum.irq_count,
|
||||
sum.min_irq,
|
||||
false);
|
||||
|
||||
if (!params->no_thread)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.min_thread);
|
||||
format_summary_value(trace->seq,
|
||||
sum.thread_count,
|
||||
sum.min_thread,
|
||||
false);
|
||||
|
||||
if (params->user_hist)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.min_user);
|
||||
format_summary_value(trace->seq,
|
||||
sum.user_count,
|
||||
sum.min_user,
|
||||
false);
|
||||
|
||||
trace_seq_printf(trace->seq, "\n");
|
||||
|
||||
|
|
@ -523,16 +526,22 @@ timerlat_print_stats_all(struct timerlat_hist_params *params,
|
|||
trace_seq_printf(trace->seq, "avg: ");
|
||||
|
||||
if (!params->no_irq)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.sum_irq / sum.irq_count);
|
||||
format_summary_value(trace->seq,
|
||||
sum.irq_count,
|
||||
sum.sum_irq,
|
||||
true);
|
||||
|
||||
if (!params->no_thread)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.sum_thread / sum.thread_count);
|
||||
format_summary_value(trace->seq,
|
||||
sum.thread_count,
|
||||
sum.sum_thread,
|
||||
true);
|
||||
|
||||
if (params->user_hist)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.sum_user / sum.user_count);
|
||||
format_summary_value(trace->seq,
|
||||
sum.user_count,
|
||||
sum.sum_user,
|
||||
true);
|
||||
|
||||
trace_seq_printf(trace->seq, "\n");
|
||||
|
||||
|
|
@ -540,16 +549,22 @@ timerlat_print_stats_all(struct timerlat_hist_params *params,
|
|||
trace_seq_printf(trace->seq, "max: ");
|
||||
|
||||
if (!params->no_irq)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.max_irq);
|
||||
format_summary_value(trace->seq,
|
||||
sum.irq_count,
|
||||
sum.max_irq,
|
||||
false);
|
||||
|
||||
if (!params->no_thread)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.max_thread);
|
||||
format_summary_value(trace->seq,
|
||||
sum.thread_count,
|
||||
sum.max_thread,
|
||||
false);
|
||||
|
||||
if (params->user_hist)
|
||||
trace_seq_printf(trace->seq, "%9llu ",
|
||||
sum.max_user);
|
||||
format_summary_value(trace->seq,
|
||||
sum.user_count,
|
||||
sum.max_user,
|
||||
false);
|
||||
|
||||
trace_seq_printf(trace->seq, "\n");
|
||||
trace_seq_do_printf(trace->seq);
|
||||
|
|
|
|||
Loading…
Reference in New Issue